1. 제품
  2.   3D
  3.   PHP
  4.   PHP Render
 
  

복잡한 씬을 3D 렌더링하기 위한 무료 PHP 라이브러리

오픈 소스 PHP 3D 렌더링 라이브러리는 소프트웨어 개발자가 3D 그래픽을 생성·조작하고, OBJ 파일을 파싱하며 다양한 텍스처와 재료를 적용할 수 있게 합니다.

PHP Render란 무엇인가요?

웹 개발은 크게 발전했으며, 시각적으로 놀랍고 몰입감 있는 경험을 지속적으로 제공하고 있습니다. 3D 그래픽 렌더링은 이전에 JavaScript나 C++와 같은 언어에 대한 깊은 이해가 필요한 전문 시스템이나 소프트웨어에만 제한되었습니다. 그러나 웹 기술의 발전 덕분에 사용하기 쉽고 적응력이 뛰어난 언어로 알려진 PHP를 사용하여 웹 애플리케이션에 3D 렌더링을 포함시킬 수 있게 되었습니다. 개발자는 강력한 3D PHP Render 라이브러리를 활용하여 PHP에서 직접 3D 객체를 생성하고 작업할 수 있습니다. 프로그래머는 강력하고 유연한 3D PHP Render 라이브러리를 통해 3D 시각 자료를 손쉽게 만들고 다룰 수 있습니다. 이 라이브러리의 많은 장점 중에는 복잡한 장면과 3D 모델을 생성하고, 애니메이션을 만들며, 조명과 그림자를 관리하고, 다양한 텍스처와 재료를 적용할 수 있는 능력이 포함됩니다.

3D PHP 렌더 라이브러리의 사용 용이성은 가장 눈에 띄는 장점 중 하나입니다. 복잡한 새로운 언어나 프레임워크를 배울 필요 없이, 이미 PHP에 익숙한 소프트웨어 개발자는 라이브러리의 기본을 빠르게 이해하고 3D 장면을 만들기 시작할 수 있습니다. 기존 PHP 프레임워크와 라이브러리는 3D PHP 렌더 라이브러리와 간단히 통합됩니다. 이 라이브러리는 간단한 API를 제공하며 PHP를 사용하는 웹 애플리케이션에 쉽게 통합할 수 있습니다. PHP와 3D 그래픽 사이의 격차를 메워줌으로써, 이 라이브러리는 개발자가 기존 PHP 전문 지식을 활용해 풍부한 시각적 경험을 만들 수 있게 합니다. 개발자는 이 라이브러리의 기능을 사용해 온라인 앱에 시각적으로 매력적인 3D 요소를 추가하여 생동감을 부여할 수 있습니다. 사용 용이성, 유연성 및 성능을 갖춘 이 라이브러리는 웹 경험을 혁신하고, 3D 그래픽이 온라인 상호작용의 표준 기능이 되는 미래에 한 걸음 더 다가가게 합니다.

Previous Next

PHP Render 시작하기

PHP Render 안정 버전을 설치하는 가장 쉬운 방법은 Composer를 사용하는 것입니다. 원활한 설치를 위해 다음 명령을 사용하십시오.

Composer를 통해 PHP Render 설치

$composer install php-render 

컴파일된 공유 라이브러리를 Github 저장소에서 다운로드할 수 있습니다.

PHP API를 통한 3D 모델 작업

오픈 소스 PHP Render 라이브러리는 소프트웨어 개발자가 PHP 애플리케이션 내에서 3D 모델과 관련된 다양한 작업을 처리할 수 있도록 합니다. 이 라이브러리를 사용하면 동적이고 인터랙티브한 3D 콘텐츠를 쉽게 만들 수 있으며, 객체, 카메라 및 조명을 애니메이션화하기 위해 키프레임과 전환을 정의할 수 있습니다. 소프트웨어 개발자는 다각형, 구, 큐브 등 다양한 기하학적 형태를 손쉽게 생성하고 조작할 수 있습니다. 정점을 수정하고 변환을 적용하며 형태를 결합하여 복잡한 모델을 만들 수 있습니다. 다음 예제는 소프트웨어 개발자가 PHP 코드를 사용하여 OBJ 파일에서 모델을 로드하는 방법을 보여줍니다.

PHP API를 사용하여 OBJ 파일에서 모델을 로드하는 방법은?

define('EXAMPLE_DIR', __DIR__);
require __DIR__ . '/../example_base.php';

use PHPR\Context;
use PHPR\Shader\Shader;
use PHPR\Mesh\{ObjParser, Vertex};
use PHPR\Mesh\Vertex\{VertexPNU};
use PHPR\Mesh\VertexArray;
use PHPR\Math\{Vec3, Vec4, Mat4, Angle};

/**
 * Simpel cube shader
 */
class CubeShader extends Shader
{
    public Mat4 $mvp;

    /**
     * Vertex shader like thing
     */
    public function vertex(Vertex $vertex, array &$out) : Vec4
    {
        $out['color'] = $vertex->normal;

        return $this->mvp->multiplyVec3($vertex->position);
    }

    /**
     * Fragment shader like thing
     */
    public function fragment(array &$in, array &$out)
    {
        $out['color'] = $in['color']->normalize()->toColorInt();
        // $out['color'] = 0xFFFFFF;
    }
}

/**
 * Build a model view projection
 */
$projection = Mat4::perspective(Angle::degreesToRadians(-45.0), EXAMPLE_RENDER_ASPECT_RATIO, 0.5, 10);

$view = (new Mat4())->inverse();

$model = (new Mat4)->translate(new Vec3(0.1, -0.3, -2.5));
$model->rotateX(0.4);
$model->rotateY(-0.6);
//$model->rotateY(-0.05);

/**
 * Create shader object
 */
$shader = new CubeShader;
$shader->mvp = $model->multiply($view->multiply($projection, true), true);

/**
 * Build the context
 */
$context = create_exmaple_context();
$context->bindShader($shader);
$context->enableDepthTesting();
// $context->setDrawMode(Context::DRAW_MODE_LINES);

/**
 * Define the model
 */
$model = ObjParser::loadFromDisk(EXAMPLE_DIR . '/suv.obj');

/**
 * draw the model
 */
$context->drawVertexArray($model);

render_example_context($context);
render_example_context_depth($context);

PHP API를 통한 3D 씬 렌더링

오픈 소스 PHP Render 라이브러리는 소프트웨어 개발자가 PHP 애플리케이션 내에서 다양한 유형의 3D 씬을 로드하고 렌더링하기 쉽게 해줍니다. 카메라 제어, 조명 및 객체 조작이 포함된 3D 씬 렌더링을 위한 간소화된 API를 제공합니다. 개발자는 객체를 정의하고 씬 내에 배치하며 외관과 동작을 지정할 수 있습니다. 또한, 소프트웨어 개발자는 다각형, 구, 큐브 등 다양한 기하학적 형태를 생성하고 조작할 수 있습니다.

향상된 제품 시각화

무료 3D PHP Render 라이브러리는 소프트웨어 개발자가 웹 애플리케이션에 시각적으로 놀라운 3D 요소를 손쉽게 추가할 수 있도록 지원합니다. 전자상거래 웹사이트는 3D PHP Render 라이브러리를 활용하여 인터랙티브한 제품 뷰를 제공할 수 있으며, 고객은 제품을 회전, 확대 및 다양한 각도에서 검토할 수 있습니다. 이러한 몰입형 경험은 제품 이해도를 높이고 고객 만족도를 향상시킵니다. 다음 예제는 PHP API를 사용하여 그린 삼각형 내부의 무게중심 좌표 보간을 보여줍니다.

PHP를 사용하여 그려진 삼각형 내부의 바리센트릭 좌표 보간을 수행하는 방법은?

use PHPR\Shader\TriangleTestShader;
use PHPR\Mesh\Vertex;
use PHPR\Math\Vec3;

$context = create_exmaple_context();
$context->bindShader(new TriangleTestShader);
// $context->setDrawMode(\PHPR\Context::DRAW_MODE_LINES);

/**
 * Vertex subclass with color attribute
 */
class ExampleVertex extends Vertex
{
    public static function c(float $x, float $y, float $z, float $r, float $g, float $b)
    {
        $v = ExampleVertex::cP($x, $y, $z);
        $v->color = new Vec3($r, $g, $b);

        return $v;
    }

    public Vec3 $color;
}

/**
 * Draw the tirangle
 */
$context->drawTriangle(
    //               | position       | color
    ExampleVertex::c(-0.8, -0.8, 0.0, 1.0, 0.0, 0.0),
    ExampleVertex::c( 0.8, -0.8, 0.0, 0.0, 1.0, 0.0),
    ExampleVertex::c( 0.0,  0.8, 0.0, 0.0, 0.0, 1.0),
);
 한국인