Nemokama PHP biblioteka 3D sudėtingų scenų atvaizdavimui
Atviro kodo PHP 3D atvaizdavimo biblioteka leidžia programinės įrangos kūrėjams kurti ir manipuliuoti 3D grafika, OBJ failų analizavimu ir taikyti įvairius tekstūras bei medžiagas
Kas yra PHP Render?
Žiniatinklio kūrimas žymiai pažengė, nuolat keičiasi, siekiant sukurti vizualiai įspūdingas ir įtrauktas patirtis. 3D grafikos atvaizdavimas anksčiau buvo ribojamas specializuotomis sistemomis ar programine įranga, kuri reikalavo gilios JavaScript ar C++ kalbų žinių. Tačiau dėka žiniatinklio technologijų plėtros, PHP – kalba, garsėjanti savo paprastumu ir lankstumu – dabar gali būti naudojama 3D atvaizdavimui įtraukti į žiniatinklio programas. Kūrėjai gali generuoti ir dirbti su 3D objektais tiesiogiai PHP, pasitelkdami patikimą 3D PHP Render biblioteką. Programuotojai gali lengvai kurti ir dirbti su 3D vizualais, naudodami galingą ir prisitaikančią 3D PHP Render biblioteką. Tarp daugelio jos privalumų yra galimybė generuoti sudėtingas scenas ir 3D modelius, kurti animacijas, valdyti apšvietimą ir šešėlius, bei taikyti įvairius tekstūras ir medžiagas.
3D PHP render bibliotekos naudojimo paprastumas yra vienas iš jos svarbiausių privalumų. Nesikraunant mokytis sudėtingų naujų kalbų ar sistemų, programinės įrangos kūrėjai, jau susipažinę su PHP, gali greitai suprasti bibliotekos pagrindus ir pradėti kurti 3D scenas. Esamos PHP sistemos ir bibliotekos tiesiog integruojamos su 3D PHP render biblioteka. Ji siūlo paprastą API ir yra lengvai integruojama į PHP naudojančias internetines programas. Sujungdama PHP ir 3D grafiką, ši biblioteka leidžia kūrėjams kurti turtingas vizualines patirtis, naudodama savo esamą PHP kompetenciją. Kūrėjai gali naudoti šios bibliotekos funkcijas, kad pridėtų vizualiai patrauklius 3D elementus į savo internetines programas, suteikdami joms gyvybės. Dėl savo paprastumo, lankstumo ir našumo ši biblioteka yra pasiruošusi pakeisti mūsų patirtį internete, priartindama mus prie ateities, kur 3D grafika taps standartine internetinių sąveikų dalimi.
Pradžia su PHP Render
Paprasčiausias būdas įdiegti PHP Render stabilų leidimą – naudoti Composer. Norėdami sklandžiai įdiegti, naudokite šią komandą.
Įdiekite PHP Render per Composer
$composer install php-render Galite atsisiųsti sukompiliuotą bendrinamą biblioteką iš Github saugyklos.
Dirbkite su 3D modeliu per PHP API
Atviro kodo PHP Render biblioteka leidžia programinės įrangos kūrėjams tvarkyti įvairias su 3D modeliais susijusias užduotis PHP programose. Biblioteka supaprastina dinaminio ir interaktyvaus 3D turinio kūrimą ir leidžia apibrėžti pagrindinius kadrus bei perėjimus animuoti objektus, kameras ir šviesas. Programinės įrangos kūrėjai lengvai gali generuoti ir manipuliuoti įvairiomis geometrinėmis formomis, įskaitant daugiakampius, sferas, kubus ir kt. Jie gali keisti viršūnes, taikyti transformacijas ir sujungti formas kuriant sudėtingus modelius. Žemiau pateiktas pavyzdys rodo, kaip programinės įrangos kūrėjai gali įkelti modelį iš OBJ failo naudojant PHP kodą.
Kaip įkelti modelį iš OBJ failo naudojant 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 scenų atvaizdavimas per PHP API
Atviro kodo PHP Render biblioteka leidžia programų kūrėjams lengvai įkelti ir atvaizduoti įvairius 3D scenų tipus jų PHP programose. Ji suteikia supaprastintą API 3D scenų atvaizdavimui, su kameros valdymu, apšvietimu ir objektų manipuliavimu. Kūrėjai gali apibrėžti objektus, juos pozicionuoti scenoje ir nurodyti jų išvaizdą bei elgesį. Be to, programų kūrėjai gali generuoti ir manipuliuoti įvairiomis geometrinėmis formomis, įskaitant daugiakampius, sferas, kubus ir kt.
Geresnė produkto vizualizacija
Laisva 3D PHP Render biblioteka suteikia programų kūrėjams galimybę be vargo pridėti vizualiai įspūdingus 3D elementus į savo internetines programas. Elektroninės prekybos svetainės gali naudoti 3D PHP Render biblioteką, kad pasiūlytų interaktyvias produktų peržiūras, leidžiančias klientams sukti, priartinti ir apžiūrėti produktus iš skirtingų kampų. Ši įtraukianti patirtis gerina produkto supratimą ir padidina klientų pasitenkinimą. Žemiau pateiktas pavyzdys demonstruoja barycentrinių koordinatų interpolaciją pieštoje trikampyje naudojant PHP API.
Kaip atlikti barycentrinių koordinatų interpoliaciją piešto trikampio viduje naudojant 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),
);