Gratis PHP-bibliotek för 3D-rendering av komplexa scener
Öppen källkod PHP 3D-renderingsbibliotek som låter mjukvaruutvecklare generera & manipulera 3D‑grafik, OBJ‑filparsing och applicera olika texturer & material
Vad är PHP Render?
Webbutveckling har utvecklats avsevärt och förändras kontinuerligt för att skapa visuellt imponerande och uppslukande upplevelser. Rendering av 3D-grafik var tidigare begränsad till specialiserade system eller mjukvara som krävde djup förståelse för språk som JavaScript eller C++. Men tack vare framsteg inom webteknik kan PHP – ett språk känt för sin användarvänlighet och anpassningsförmåga – nu användas för att inkludera 3D-rendering i webbapplikationer. Utvecklare kan generera och arbeta med 3D-objekt direkt i PHP med hjälp av det robusta 3D PHP Render-biblioteket. Programmerare kan enkelt skapa och arbeta med 3D-visualiseringar med hjälp av det kraftfulla och flexibla 3D PHP Render-biblioteket. Bland dess många fördelar finns möjligheten att skapa intrikata scener och 3D-modeller, skapa animationer, hantera belysning och skuggor samt tillämpa olika texturer och material.
Lättanvändheten av ett 3D PHP-renderingsbibliotek är en av dess mest anmärkningsvärda fördelar. Utan att behöva lära sig komplicerade nya språk eller ramverk kan mjukvaruutvecklare som redan är bekanta med PHP snabbt förstå bibliotekets grunder och börja skapa 3D-landskap. Existerande PHP-ramverk och -bibliotek integreras enkelt med 3D PHP-renderingsbiblioteket. Det erbjuder ett enkelt API och är lätt att integrera i webbapplikationer som använder PHP. Genom att överbrygga klyftan mellan PHP och 3D-grafik möjliggör detta bibliotek för mjukvaruutvecklare att skapa rika visuella upplevelser med sin befintliga PHP-expertis. Utvecklare kan använda bibliotekets funktioner för att lägga till visuellt tilltalande 3D-element i sina online-appar, vilket får dem att komma till liv. Med sin lättanvändhet, flexibilitet och prestanda är detta bibliotek redo att förändra hur vi upplever webben, och för oss närmare en framtid där 3D-grafik är en standardfunktion i onlineinteraktioner.
Komma igång med PHP Render
Det enklaste sättet att installera PHP Render stabila version är att använda Composer. Använd följande kommando för en smidig installation.
Installera PHP Render via Composer
$composer install php-render Du kan ladda ner det kompilerade delade biblioteket från Github-arkivet.
Arbeta med 3D-modell via PHP API
Det öppna källkods‑biblioteket PHP Render gör det möjligt för mjukvaruutvecklare att hantera olika uppgifter relaterade till 3D‑modeller i PHP‑applikationer. Biblioteket gör det enkelt att skapa dynamiskt och interaktivt 3D‑innehåll och kan definiera nyckelramar och övergångar för att animera objekt, kameror och ljus. Mjukvaruutvecklare kan enkelt generera och manipulera olika geometriska former, inklusive polygoner, sfärer, kuber och mer. De kan modifiera vertexar, tillämpa transformationer och kombinera former för att skapa komplexa modeller. Följande exempel visar hur mjukvaruutvecklare kan läsa in en modell från en OBJ‑fil med PHP‑kod.
Hur laddar man en modell från en OBJ-fil med 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 av 3D-scener via PHP API
Det öppna källkods-PHP Render-biblioteket gör det enkelt för mjukvaruutvecklare att ladda och rendera olika typer av 3D-scener i sina PHP-applikationer. Det erbjuder ett förenklat API för rendering av 3D-scener, komplett med kamerakontroller, belysning och objektmanipulation. Utvecklare kan definiera objekt, placera dem i scenen och specificera deras utseende och beteende. Dessutom kan mjukvaruutvecklare generera och manipulera olika geometriska former, inklusive polygoner, sfärer, kuber och mer.
Bättre produktvisualisering
Det kostnadsfria 3D PHP Render-biblioteket ger mjukvaruutvecklare möjlighet att enkelt lägga till visuellt imponerande 3D-element i sina webbapplikationer. E-handelswebbplatser kan använda 3D PHP Render-biblioteket för att erbjuda interaktiva produktvyer, vilket låter kunder rotera, zooma och undersöka produkter från olika vinklar. Denna uppslukande upplevelse förbättrar produktförståelsen och ökar kundnöjdheten. Följande exempel visar interpoleringen av de barycentriska koordinaterna inuti en ritad triangel med hjälp av PHP API.
Hur utför man interpolation av barycentriska koordinater inom en ritad triangel 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),
);