Darmowa biblioteka PHP do renderowania złożonych scen 3D
Otwarta biblioteka PHP do renderowania 3D umożliwia programistom tworzenie i manipulację grafiką 3D, parsowanie plików OBJ oraz stosowanie różnych tekstur i materiałów
Czym jest PHP Render?
Rozwój stron internetowych znacznie postąpił, nieustannie zmieniając się, aby tworzyć wizualnie oszałamiające i immersyjne doświadczenia. Renderowanie grafiki 3D było wcześniej ograniczone do specjalistycznych systemów lub oprogramowania, które wymagało dogłębnej znajomości języków takich jak JavaScript czy C++. Jednak dzięki postępom w technologii internetowej, PHP — język znany ze swojej łatwości użycia i elastyczności — może teraz być używany do włączania renderowania 3D w aplikacjach webowych. Programiści mogą generować i pracować z obiektami 3D bezpośrednio w PHP przy pomocy solidnej biblioteki 3D PHP Render. Programiści mogą łatwo tworzyć i pracować z wizualizacjami 3D dzięki potężnej i elastycznej bibliotece 3D PHP Render. Do wielu jej zalet należą możliwość generowania skomplikowanych scen i modeli 3D, tworzenia animacji, zarządzania oświetleniem i cieniami oraz stosowania różnych tekstur i materiałów.
Łatwość użycia biblioteki renderującej 3D w PHP jest jednym z jej najbardziej znaczących zalet. Bez konieczności nauki skomplikowanych nowych języków lub frameworków, programiści, którzy już znają PHP, mogą szybko zrozumieć podstawy biblioteki i rozpocząć tworzenie scen 3D. Istniejące frameworki i biblioteki PHP są po prostu integrowane z biblioteką renderującą 3D w PHP. Oferuje ona prosty interfejs API i jest łatwa do integracji z aplikacjami internetowymi wykorzystującymi PHP. Łącząc PHP z grafiką 3D, biblioteka umożliwia programistom tworzenie bogatych doświadczeń wizualnych, wykorzystując ich dotychczasową wiedzę o PHP. Programiści mogą korzystać z funkcji tej biblioteki, aby dodać atrakcyjne wizualnie elementy 3D do swoich aplikacji internetowych, ożywiając je. Dzięki łatwości użycia, elastyczności i wydajności, biblioteka ta ma potencjał, aby przekształcić sposób, w jaki doświadczamy sieci, przybliżając nas do przyszłości, w której grafika 3D będzie standardową cechą interakcji online.
Rozpoczęcie pracy z PHP Render
Najprostszym sposobem na zainstalowanie stabilnej wersji PHP Render jest użycie Composer. Proszę użyć następującego polecenia, aby przeprowadzić płynną instalację.
Zainstaluj PHP Render za pomocą Composer
$composer install php-render Możesz pobrać skompilowaną bibliotekę współdzieloną z repozytorium Github.
Praca z modelem 3D za pomocą API PHP
Biblioteka open source PHP Render umożliwia programistom obsługę różnych zadań związanych z modelami 3D w aplikacjach PHP. Biblioteka ułatwia tworzenie dynamicznych i interaktywnych treści 3D oraz pozwala definiować klatki kluczowe i przejścia do animacji obiektów, kamer i świateł. Programiści mogą łatwo generować i manipulować różnymi kształtami geometrycznymi, w tym wielokątami, sferami, sześcianami i innymi. Mogą modyfikować wierzchołki, stosować przekształcenia i łączyć kształty, aby tworzyć złożone modele. Poniższy przykład pokazuje, jak programiści mogą wczytać model z pliku OBJ przy użyciu kodu PHP.
Jak załadować model z pliku OBJ przy użyciu 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);
Renderowanie scen 3D za pomocą API PHP
Biblioteka open source PHP Render ułatwia programistom ładowanie i renderowanie różnych typów scen 3D w ich aplikacjach PHP. Dostarcza uproszczone API do renderowania scen 3D, z pełną kontrolą kamery, oświetleniem i manipulacją obiektami. Programiści mogą definiować obiekty, pozycjonować je w scenie oraz określać ich wygląd i zachowanie. Co więcej, programiści mogą generować i manipulować różnymi kształtami geometrycznymi, w tym wielokątami, sferami, sześcianami i innymi.
Lepsza wizualizacja produktów
Darmowa biblioteka 3D PHP Render umożliwia programistom łatwe dodawanie wizualnie zachwycających elementów 3D do ich aplikacji internetowych. Strony e-commerce mogą wykorzystać bibliotekę 3D PHP Render, aby oferować interaktywne widoki produktów, pozwalając klientom obracać, przybliżać i oglądać produkty z różnych kątów. To immersyjne doświadczenie zwiększa zrozumienie produktu i poprawia satysfakcję klienta. Poniższy przykład demonstruje interpolację współrzędnych barycentrycznych wewnątrz narysowanego trójkąta przy użyciu API PHP.
Jak wykonać interpolację współrzędnych barycentrycznych wewnątrz narysowanego trójkąta przy użyciu 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),
);