1. Продукти
  2.   3D
  3.   PHP
  4.   PHP Render
 
  

Безкоштовна PHP бібліотека для 3D рендерингу складних сцен

Відкрита PHP 3D бібліотека для рендерингу дозволяє розробникам створювати та маніпулювати 3D графікою, парсити OBJ файли та застосовувати різні текстури та матеріали

Що таке PHP Render?

Веб-розробка значно просунулася, постійно змінюючись, щоб створювати візуально вражаючі та захоплюючі досвіди. Рендеринг 3D-графіки раніше був обмежений спеціалізованими системами або програмним забезпеченням, що вимагало глибоких знань мов, таких як JavaScript або C++. Однак завдяки розвитку веб-технологій, PHP — мова, відома своєю простотою та адаптивністю — тепер можна використовувати для включення 3D-рендерингу у веб-додатки. Розробники можуть генерувати та працювати з 3D-об’єктами безпосередньо в PHP за допомогою потужної бібліотеки 3D PHP Render. Програмісти легко створюють і працюють з 3D-візуальними елементами завдяки потужній та адаптивній бібліотеці 3D PHP Render. Серед її численних переваг — можливість створювати складні сцени та 3D-моделі, створювати анімації, керувати освітленням і тінями, а також застосовувати різноманітні текстури & матеріали.

Легкість використання 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-моделлю через PHP API

Бібліотека з відкритим кодом PHP Render дозволяє розробникам програмного забезпечення виконувати різноманітні завдання, пов’язані з 3D‑моделями у PHP‑додатках. Бібліотека спрощує створення динамічного та інтерактивного 3D‑контенту і може визначати ключові кадри та переходи для анімації об’єктів, камер і світильників. Розробники можуть легко генерувати та маніпулювати різними геометричними формами, включаючи полігони, сфери, куби та інше. Вони можуть змінювати вершини, застосовувати трансформації та комбінувати форми для створення складних моделей. Нижче наведено приклад, який показує, як розробники можуть завантажити модель з OBJ‑файлу за допомогою коду PHP.

Як завантажити модель з OBJ-файлу за допомогою PHP API?

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-сцен через PHP API

Бібліотека з відкритим кодом PHP Render спрощує розробникам програмного забезпечення завантаження та рендеринг різних типів 3D‑сцен у їхніх PHP‑застосунках. Вона надає спрощений API для рендерингу 3D‑сцен, включаючи керування камерою, освітлення та маніпуляції об’єктами. Розробники можуть визначати об’єкти, розташовувати їх у сцені та задавати їх зовнішній вигляд і поведінку. Крім того, розробники можуть створювати та маніпулювати різними геометричними формами, включаючи багатокутники, сфери, куби та інше.

Краща візуалізація продукту

Безкоштовна бібліотека 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),
);
 Українська