免费 PHP 库,用于 3D 渲染复杂场景
开源 PHP 3D 渲染库,允许软件开发者生成和操作 3D 图形,解析 OBJ 文件并应用各种纹理和材质
什么是 PHP Render?
网页开发已经显著进步,持续演变以呈现视觉惊艳且沉浸式的体验。渲染 3D 图形过去仅限于需要深入了解 JavaScript 或 C++ 等语言的专业系统或软件。然而,得益于网页技术的发展,PHP——一种以易用性和适应性著称的语言——现在可以用于在网页应用中加入 3D 渲染。开发者可以借助强大的 3D PHP Render 库,在 PHP 中直接生成和处理 3D 对象。程序员可以轻松利用功能强大且适应性高的 3D PHP Render 库创建和处理 3D 可视化。其众多优势包括能够生成复杂的场景和 3D 模型、创建动画、管理光照和阴影,以及应用各种纹理和材质。
3D PHP 渲染库的易用性是其最显著的优势之一。开发者无需学习复杂的新语言或框架,已经熟悉 PHP 的软件开发者可以快速理解库的基础并开始创建 3D 场景。现有的 PHP 框架和库可以轻松与 3D PHP 渲染库集成。它提供了简洁的 API,易于集成到使用 PHP 的 Web 应用中。通过弥合 PHP 与 3D 图形之间的鸿沟,该库使软件开发者能够利用已有的 PHP 专业知识创建丰富的视觉体验。开发者可以使用该库的功能向在线应用添加视觉上吸引人的 3D 元素,使其栩栩如生。凭借其易用性、灵活性和性能,这个库有望改变我们体验网络的方式,让我们更接近一个 3D 图形成为在线交互标准特性的未来。
PHP Render 入门指南
安装 PHP Render 稳定版的最简方法是使用 Composer。请使用以下命令以顺利完成安装。
通过 PHP API 使用 3D 模型
开源的 PHP Render 库使软件开发者能够在 PHP 应用程序中处理与 3D 模型相关的各种任务。该库简化了创建动态和交互式 3D 内容的过程,并且可以定义关键帧和过渡来为对象、相机和灯光添加动画。软件开发者可以轻松生成和操作各种几何形状,包括多边形、球体、立方体等。他们可以修改顶点、应用变换,并将形状组合成复杂模型。下面的示例展示了软件开发者如何使用 PHP 代码从 OBJ 文件加载模型。
如何使用 PHP API 从 OBJ 文件加载模型?
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);
通过 PHP API 渲染 3D 场景
开源的 PHP Render 库使软件开发者能够轻松在其 PHP 应用程序中加载和渲染各种 3D 场景。它提供了一个简化的 API 用于渲染 3D 场景,包含相机控制、光照和对象操作。开发者可以定义对象,将其放置在场景中,并指定其外观和行为。此外,软件开发者还能生成和操作各种几何形状,包括多边形、球体、立方体等。
更佳的产品可视化
免费 3D PHP Render 库使软件开发者能够轻松地为其网页应用添加视觉上惊艳的 3D 元素。电子商务网站可以利用 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),
);