مكتبة PHP مجانية لتصوير المشاهد المعقدة ثلاثية الأبعاد

مكتبة مفتوحة المصدر لتصوير ثلاثي الأبعاد بلغة PHP تتيح لمطوري البرمجيات إنشاء ومعالجة الرسومات ثلاثية الأبعاد، تحليل ملفات OBJ وتطبيق مختلف القوام والمواد

ما هو PHP Render؟

لقد تطور تطوير الويب بشكل كبير، ويتغير باستمرار لإنتاج تجارب بصرية مذهلة وغامرة. كان عرض الرسومات ثلاثية الأبعاد في السابق مقصورًا على الأنظمة المتخصصة أو البرمجيات التي تتطلب فهمًا عميقًا للغات مثل JavaScript أو C++. ومع ذلك، وبفضل التطورات في تكنولوجيا الويب، يمكن الآن استخدام PHP — اللغة المشهورة بسهولة استخدامها وتكيفها — لتضمين عرض ثلاثي الأبعاد في تطبيقات الويب. يمكن للمطورين إنشاء والعمل مع كائنات ثلاثية الأبعاد مباشرة في PHP بمساعدة مكتبة 3D PHP Render القوية. يمكن للمبرمجين بسهولة إنشاء والعمل مع الرسومات ثلاثية الأبعاد بمساعدة مكتبة 3D PHP Render القوية والقابلة للتكيف. من بين مزاياها العديدة القدرة على إنشاء مشاهد ونماذج ثلاثية الأبعاد معقدة، وإنشاء الرسوم المتحركة، وإدارة الإضاءة والظلال، وتطبيق مختلف القوام والمواد.

سهولة استخدام مكتبة عرض 3D بلغة PHP هي أحد أبرز فوائدها. دون الحاجة لتعلم لغات أو أطر جديدة معقدة، يمكن للمطورين الذين هم بالفعل على دراية بـ PHP أن يفهموا بسرعة أساسيات المكتبة ويبدؤوا في إنشاء مشاهد ثلاثية الأبعاد. يتم دمج أطر ومكتبات PHP الحالية بسهولة مع مكتبة عرض 3D PHP. توفر API بسيطة ويسهل دمجها في تطبيقات الويب التي تستخدم PHP. من خلال ربط الفجوة بين PHP والرسومات ثلاثية الأبعاد، تمكّن هذه المكتبة المطورين من إنشاء تجارب بصرية غنية باستخدام خبرتهم الحالية في PHP. يمكن للمطورين استخدام ميزات هذه المكتبة لإضافة عناصر ثلاثية الأبعاد جذابة بصريًا إلى تطبيقاتهم على الإنترنت، مما يجعلها تنبض بالحياة. بفضل سهولة استخدامها، ومرونتها، وأدائها، تستعد هذه المكتبة لتحويل طريقة تجربتنا للويب، وتقربنا من مستقبل تصبح فيه الرسومات ثلاثية الأبعاد ميزة قياسية في التفاعلات عبر الإنترنت.

Previous Next

البدء باستخدام PHP Render

أسهل طريقة لتثبيت إصدار PHP Render المستقر هي باستخدام Composer. يرجى استخدام الأمر التالي لتثبيت سلس.

تثبيت PHP Render عبر Composer

$composer install php-render 

يمكنك تنزيل المكتبة المشتركة المجمعة من مستودع Github.

العمل مع نموذج ثلاثي الأبعاد عبر API PHP

تتيح مكتبة PHP Render المفتوحة المصدر للمطورين التعامل مع مهام مختلفة تتعلق بنماذج ثلاثية الأبعاد داخل تطبيقات PHP. تجعل المكتبة من السهل إنشاء محتوى ثلاثي الأبعاد ديناميكي وتفاعلي ويمكنها تعريف الإطارات الرئيسية والانتقالات لتحريك الكائنات والكاميرات والإضاءة. يمكن للمطورين بسهولة توليد وتعديل أشكال هندسية متنوعة، بما في ذلك المضلعات والكرات والمكعبات والمزيد. يمكنهم تعديل الرؤوس، تطبيق التحويلات، ودمج الأشكال لإنشاء نماذج معقدة. يوضح المثال التالي كيف يمكن للمطورين تحميل نموذج من ملف OBJ باستخدام كود PHP.

كيف يتم تحميل نموذج من ملف OBJ باستخدام واجهة برمجة التطبيقات 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);

تصيير المشاهد ثلاثية الأبعاد عبر API PHP

مكتبة PHP Render المفتوحة المصدر تجعل من السهل على مطوري البرمجيات تحميل وعرض أنواع مختلفة من المشاهد ثلاثية الأبعاد داخل تطبيقاتهم المكتوبة بـ PHP. توفر واجهة برمجة تطبيقات مبسطة لتصوير المشاهد ثلاثية الأبعاد، مع تحكمات الكاميرا والإضاءة وتعديل الكائنات. يمكن للمطورين تعريف الكائنات، وضعها داخل المشهد، وتحديد مظهرها وسلوكها. علاوة على ذلك، يمكن لمطوري البرمجيات إنشاء وتعديل أشكال هندسية مختلفة، بما في ذلك المضلعات والكرات والمكعبات والمزيد.

تصور أفضل للمنتج

تمكن مكتبة PHP Render ثلاثية الأبعاد المجانية مطوري البرمجيات من إضافة عناصر ثلاثية الأبعاد بصرية مذهلة إلى تطبيقاتهم الويب بسهولة. يمكن لمواقع التجارة الإلكترونية الاستفادة من مكتبة PHP Render ثلاثية الأبعاد لتقديم عروض تفاعلية للمنتجات، مما يسمح للعملاء بالدوران والتكبير وفحص المنتجات من زوايا مختلفة. تعزز هذه التجربة الغامرة فهم المنتج وتحسن رضا العملاء. يوضح المثال التالي عملية استيفاء إحداثيات الباريسنترية داخل مثلث مرسوم باستخدام واجهة برمجة تطبيقات 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),
);
 عربي