Безплатна 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 графиката е стандартна характеристика на онлайн взаимодействията.
Започване с 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 елементи към уеб приложенията си. E‑commerce сайтовете могат да използват 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),
);