ספרייה חינמית ב-PHP לרינדור סצנות מורכבות בתלת‑ממד

ספריית רינדור 3D בקוד פתוח ב-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. הספרייה מקלה על יצירת תוכן תלת‑ממדי דינמי ואינטראקטיבי ויכולה להגדיר keyframes והמעברים כדי להנפיש אובייקטים, מצלמות ותאורות. מפתחי תוכנה יכולים בקלות ליצור ולשנות צורות גאומטריות שונות, כולל פוליגונים, כדורים, קוביות ועוד. הם יכולים לשנות קודקודים, להחיל טרנספורמציות ולשלב צורות ליצירת מודלים מורכבים. הדוגמה שלהלן מציגה כיצד מפתחי תוכנה יכולים לטעון מודל מקובץ 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);

רינדור סצנות תלת‑ממדיות באמצעות API של PHP

ספריית ה‑Render בקוד פתוח עבור PHP מאפשרת למפתחי תוכנה לטעון ולרנדר סוגים שונים של סצנות תלת‑ממד בתוך יישומי PHP שלהם. היא מספקת API פשוט לרינדור סצנות תלת‑ממד, כולל שליטה במצלמה, תאורה, ומניפולציה של אובייקטים. מפתחים יכולים להגדיר אובייקטים, למקם אותם בסצנה, ולציין את המראה וההתנהגות שלהם. בנוסף, מפתחי תוכנה יכולים ליצור ולשנות צורות גאומטריות שונות, כולל פוליגונים, כדורים, קוביות ועוד.

המחשה משופרת של מוצר

ספריית ה‑Render החינמית לתלת‑ממד ב‑PHP מאפשרת למפתחי תוכנה להוסיף אלמנטים תלת‑ממדיים מרהיבים ויזואלית לאפליקציות האינטרנט שלהם בקלות. אתרי מסחר אלקטרוני יכולים להשתמש בספריית ה‑Render לתלת‑ממד ב‑PHP כדי להציע תצוגות מוצר אינטראקטיביות, המאפשרות ללקוחות לסובב, להתקרב ולבדוק את המוצרים מזוויות שונות. חוויה סוחפת זו משפרת את הבנת המוצר ומעלה את שביעות רצון הלקוחות. הדוגמה שלהלן מציגה את האינטרפולציה של הקואורדינטות הבאריסנטריות בתוך משולש מצויר באמצעות 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),
);
 עִברִית