Gratis PHP Bibliotek til 3D Rendering af komplekse scener
Open Source PHP 3D Rendering Bibliotek giver softwareudviklere mulighed for at generere & manipulere 3D-grafik, OBJ-fil parsing og anvende forskellige teksturer & materialer
Hvad er PHP Render?
Webudvikling har udviklet sig betydeligt og ændrer sig løbende for at skabe visuelt betagende og immersive oplevelser. Rendering af 3D-grafik var tidligere begrænset til specialiserede systemer eller software, der krævede en dyb forståelse af sprog som JavaScript eller C++. Men takket være fremskridt inden for webteknologi kan PHP – et sprog kendt for sin brugervenlighed og tilpasningsevne – nu bruges til at inkludere 3D-rendering i webapplikationer. Udviklere kan generere og arbejde med 3D-objekter direkte i PHP ved hjælp af det robuste 3D PHP Render-bibliotek. Programmører kan nemt skabe og arbejde med 3D-visualiseringer ved hjælp af det kraftfulde og alsidige 3D PHP Render-bibliotek. Blandt dets mange fordele er evnen til at generere indviklede scener og 3D-modeller, skabe animationer, håndtere belysning og skygger samt anvende forskellige teksturer & materialer.
Brugervenligheden af et 3D PHP render-bibliotek er en af dets mest bemærkelsesværdige fordele. Uden at skulle lære komplicerede nye sprog eller rammer kan softwareudviklere, der allerede er fortrolige med PHP, hurtigt forstå bibliotekets grundprincipper og begynde at skabe 3D-scener. Eksisterende PHP-rammer og -biblioteker integreres enkelt med 3D PHP render-biblioteket. Det tilbyder et enkelt API og er let at integrere i webapplikationer, der bruger PHP. Ved at bygge bro mellem PHP og 3D-grafik gør dette bibliotek det muligt for softwareudviklere at skabe rige visuelle oplevelser ved hjælp af deres eksisterende PHP-ekspertise. Udviklere kan bruge bibliotekets funktioner til at tilføje visuelt tiltalende 3D-elementer til deres online‑apps, så de får liv. Med sin brugervenlighed, fleksibilitet og ydeevne er dette bibliotek klar til at transformere, hvordan vi oplever nettet, og bringe os tættere på en fremtid, hvor 3D-grafik er en standardfunktion i onlineinteraktioner.
Kom i gang med PHP Render
Den nemmeste måde at installere PHP Render stabile version på er ved at bruge Composer. Brug venligst følgende kommando for en problemfri installation.
Installer PHP Render via Composer
$composer install php-render Du kan downloade det kompilerede delte bibliotek fra Github-repositoryet.
Arbejd med 3D-model via PHP API
Det open source PHP Render-bibliotek giver softwareudviklere mulighed for at håndtere forskellige opgaver relateret til 3D-modeller i PHP-applikationer. Biblioteket gør det nemt at skabe dynamisk & interaktivt 3D-indhold og kan definere keyframes og overgange for at animere objekter, kameraer og lys. Softwareudviklere kan let generere og manipulere forskellige geometriske former, herunder polygoner, kugler, terninger og mere. De kan ændre vertexer, anvende transformationer og kombinere former for at skabe komplekse modeller. Det følgende eksempel viser, hvordan softwareudviklere kan indlæse en model fra en OBJ-fil ved hjælp af PHP-kode.
Hvordan indlæses en model fra en OBJ-fil ved hjælp af 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);
Rendering af 3D-scener via PHP API
Det open source PHP Render-bibliotek gør det nemt for softwareudviklere at indlæse og gengive forskellige typer af 3D-scener i deres PHP-applikationer. Det leverer et strømlinet API til gengivelse af 3D-scener, komplet med kamerastyring, belysning og objektmanipulation. Udviklere kan definere objekter, placere dem i scenen og specificere deres udseende og adfærd. Desuden kan softwareudviklere generere og manipulere forskellige geometriske former, herunder polygoner, kugler, terninger og mere.
Bedre produktvisualisering
Det gratis 3D PHP Render-bibliotek giver softwareudviklere mulighed for nemt at tilføje visuelt imponerende 3D-elementer til deres webapplikationer. E-handelswebsites kan bruge 3D PHP Render-biblioteket til at tilbyde interaktive produktvisninger, så kunder kan rotere, zoome og undersøge produkter fra forskellige vinkler. Denne immersive oplevelse forbedrer produktforståelsen og øger kundetilfredsheden. Det følgende eksempel demonstrerer interpolation af de barycentriske koordinater inden for en tegnet trekant ved brug af PHP API.
Hvordan udfører man interpolation af barycentriske koordinater inden for en tegnet trekant via 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),
);