کتابخانه رایگان PHP برای رندر صحنه‌های پیچیده سه‌بعدی

کتابخانه منبع باز PHP برای رندر سه‌بعدی به توسعه‌دهندگان نرم‌افزار امکان تولید و دستکاری گرافیک‌های سه‌بعدی، تجزیه فایل OBJ و اعمال بافت‌ها و مواد مختلف را می‌دهد.

PHP Render چیست؟

توسعه وب به طور قابل توجهی پیشرفت کرده است و به‌صورت مستمر در حال تغییر است تا تجربه‌های بصری خیره‌کننده و غوطه‌ورکننده‌ای را ارائه دهد. رندرینگ گرافیک‌های سه‌بعدی قبلاً محدود به سیستم‌ها یا نرم‌افزارهای تخصصی بود که نیاز به درک عمیق زبان‌هایی مانند JavaScript یا C++ داشت. اما به‌دلیل پیشرفت‌های فناوری وب، PHP — زبانی که به‌خاطر سادگی استفاده و سازگاری‌اش شناخته شده است — اکنون می‌تواند برای افزودن رندرینگ سه‌بعدی به برنامه‌های وب استفاده شود. توسعه‌دهندگان می‌توانند با کمک کتابخانه قدرتمند 3D PHP Render، اشیاء سه‌بعدی را مستقیماً در PHP تولید و با آن کار کنند. برنامه‌نویسان می‌توانند به‌راحتی با استفاده از این کتابخانه قدرتمند و انعطاف‌پذیر، تصاویر سه‌بعدی را ایجاد و مدیریت کنند. از مزایای متعدد آن می‌توان به توانایی تولید صحنه‌ها و مدل‌های سه‌بعدی پیچیده، ایجاد انیمیشن‌ها، مدیریت نورپردازی و سایه‌ها، و اعمال بافت‌ها و مواد مختلف اشاره کرد.

سهولت استفاده از یک کتابخانه رندر 3D PHP یکی از برجسته‌ترین مزایای آن است. بدون نیاز به یادگیری زبان‌ها یا فریم‌ورک‌های جدید و پیچیده، توسعه‌دهندگان نرم‌افزاری که پیش از این با PHP آشنا هستند می‌توانند به سرعت اصول کتابخانه را درک کرده و شروع به ایجاد صحنه‌های 3D کنند. فریم‌ورک‌ها و کتابخانه‌های موجود PHP به سادگی با کتابخانه رندر 3D PHP یکپارچه می‌شوند. این کتابخانه یک API ساده ارائه می‌دهد و ادغام آن در برنامه‌های وبی که از PHP استفاده می‌کنند آسان است. با پر کردن فاصله بین PHP و گرافیک‌های 3D، این کتابخانه به توسعه‌دهندگان امکان می‌دهد تجربه‌های بصری غنی را با بهره‌گیری از تخصص موجود خود در PHP ایجاد کنند. توسعه‌دهندگان می‌توانند از ویژگی‌های این کتابخانه برای افزودن عناصر 3D جذاب بصری به برنامه‌های آنلاین خود استفاده کنند و آن‌ها را زنده کنند. با سهولت استفاده، انعطاف‌پذیری و عملکرد خود، این کتابخانه آماده است تا نحوه تجربه وب را تغییر دهد و ما را به آینده‌ای نزدیک‌تر می‌برد که گرافیک‌های 3D به یک ویژگی استاندارد در تعاملات آنلاین تبدیل شده‌اند.

Previous Next

شروع کار با PHP Render

ساده‌ترین راه برای نصب نسخه پایدار PHP Render استفاده از Composer است. لطفاً برای نصب روان، دستور زیر را استفاده کنید.

نصب PHP Render از طریق Composer

$composer install php-render 

می‌توانید کتابخانهٔ مشترک کامپایل‌شده را از مخزن Github دانلود کنید.

کار با مدل 3D از طریق API PHP

کتابخانهٔ منبع باز PHP Render به توسعه‌دهندگان نرم‌افزار امکان انجام وظایف مختلف مرتبط با مدل‌های سه‌بعدی را در برنامه‌های PHP می‌دهد. این کتابخانه ایجاد محتوای سه‌بعدی پویا و تعاملی را آسان می‌کند و می‌تواند فریم‌های کلیدی و انتقال‌ها را برای انیمیشن اشیاء، دوربین‌ها و نورها تعریف کند. توسعه‌دهندگان می‌توانند به سادگی اشکال هندسی مختلفی مانند چندضلعی‌ها، کره‌ها، مکعب‌ها و موارد دیگر را تولید و دستکاری کنند. آن‌ها می‌توانند رئوس را تغییر دهند، تبدیل‌ها را اعمال کنند و اشکال را ترکیب کنند تا مدل‌های پیچیده‌ای بسازند. مثال زیر نشان می‌دهد چگونه توسعه‌دهندگان می‌توانند یک مدل را از فایل OBJ با استفاده از کد PHP بارگذاری کنند.

چگونه مدل را از یک فایل OBJ با استفاده از API PHP بارگذاری کنیم؟

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);

رندر صحنه‌های 3D از طریق API PHP

کتابخانه منبع باز PHP Render به توسعه‌دهندگان نرم‌افزار این امکان را می‌دهد که انواع مختلف صحنه‌های سه‌بعدی را در برنامه‌های PHP خود بارگذاری و رندر کنند. این کتابخانه یک API ساده‌شده برای رندر صحنه‌های سه‌بعدی فراهم می‌کند که شامل کنترل‌های دوربین، نورپردازی و دستکاری اشیاء است. توسعه‌دهندگان می‌توانند اشیاء را تعریف کنند، آن‌ها را در صحنه موقعیت‌دهی کنند و ظاهر و رفتار آن‌ها را مشخص کنند. علاوه بر این، توسعه‌دهندگان می‌توانند اشکال هندسی مختلفی مانند چندضلعی‌ها، کره‌ها، مکعب‌ها و موارد دیگر را تولید و دستکاری کنند.

بهبود تجسم محصول

کتابخانه رایگان 3D PHP Render به توسعه‌دهندگان نرم‌افزار این امکان را می‌دهد که به راحتی عناصر سه‌بعدی بصری خیره‌کننده‌ای را به برنامه‌های وب خود اضافه کنند. وب‌سایت‌های تجارت الکترونیک می‌توانند از کتابخانه 3D PHP Render برای ارائه نمایش‌های تعاملی محصول استفاده کنند، به طوری که مشتریان بتوانند محصولات را از زوایای مختلف چرخانده، زوم کرده و بررسی کنند. این تجربه غوطه‌ور درک محصول را ارتقا می‌دهد و رضایت مشتریان را بهبود می‌بخشد. مثال زیر نشان‌دهنده درون‌یابی مختصات باریسنتریک داخل یک مثلث رسم‌شده با استفاده از API PHP است.

چگونه درون یک مثلث رسم‌شده، درون‌یابی مختصات باریسنتریک را با استفاده از 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),
);
 فارسی