Thư viện PHP miễn phí cho việc Render 3D các cảnh phức tạp
Thư viện Render 3D PHP mã nguồn mở cho phép các nhà phát triển phần mềm tạo và thao tác đồ họa 3D, phân tích tệp OBJ và áp dụng các kết cấu & vật liệu khác nhau
PHP Render là gì?
Phát triển web đã tiến bộ đáng kể, liên tục thay đổi để tạo ra những trải nghiệm hình ảnh tuyệt đẹp và sống động. Việc render đồ họa 3D trước đây chỉ giới hạn trong các hệ thống hoặc phần mềm chuyên dụng, đòi hỏi hiểu biết sâu sắc về các ngôn ngữ như JavaScript hoặc C++. Tuy nhiên, nhờ những tiến bộ trong công nghệ web, PHP — một ngôn ngữ nổi tiếng với tính dễ sử dụng và khả năng thích ứng — hiện có thể được sử dụng để tích hợp render 3D vào các ứng dụng web. Các nhà phát triển có thể tạo và làm việc với các đối tượng 3D trực tiếp trong PHP nhờ thư viện mạnh mẽ 3D PHP Render. Các lập trình viên có thể dễ dàng tạo và làm việc với hình ảnh 3D nhờ thư viện 3D PHP Render mạnh mẽ và linh hoạt. Trong số nhiều ưu điểm của nó là khả năng tạo ra các cảnh và mô hình 3D phức tạp, tạo hoạt ảnh, quản lý ánh sáng và bóng tối, và áp dụng các kết cấu & vật liệu đa dạng.
Sự dễ sử dụng của một thư viện render 3D PHP là một trong những lợi thế đáng chú ý nhất của nó. Không cần phải học các ngôn ngữ hoặc framework mới phức tạp, các nhà phát triển phần mềm đã quen thuộc với PHP có thể nhanh chóng hiểu các nguyên tắc cơ bản của thư viện và bắt đầu tạo ra các cảnh 3D. Các framework và thư viện PHP hiện có chỉ cần được tích hợp đơn giản với thư viện render 3D PHP. Nó cung cấp một API đơn giản và dễ tích hợp vào các ứng dụng web sử dụng PHP. Bằng cách thu hẹp khoảng cách giữa PHP và đồ họa 3D, thư viện này cho phép các nhà phát triển phần mềm tạo ra những trải nghiệm hình ảnh phong phú bằng kiến thức PHP hiện có của họ. Các nhà phát triển có thể sử dụng các tính năng của thư viện này để thêm các yếu tố 3D hấp dẫn vào các ứng dụng trực tuyến, làm cho chúng trở nên sống động. Với tính dễ sử dụng, tính linh hoạt và hiệu suất, thư viện này sẵn sàng thay đổi cách chúng ta trải nghiệm web, đưa chúng ta gần hơn tới một tương lai mà đồ họa 3D là một tính năng tiêu chuẩn của các tương tác trực tuyến.
Bắt đầu với PHP Render
Cách dễ nhất để cài đặt phiên bản ổn định của PHP Render là sử dụng Composer. Vui lòng sử dụng lệnh sau để cài đặt suôn sẻ.
Cài đặt PHP Render qua Composer
$composer install php-render Bạn có thể tải thư viện chia sẻ đã biên dịch từ kho Github.
Làm việc với mô hình 3D qua API PHP
Thư viện PHP Render mã nguồn mở cho phép các nhà phát triển phần mềm xử lý các nhiệm vụ khác nhau liên quan đến mô hình 3D trong các ứng dụng PHP. Thư viện giúp dễ dàng tạo nội dung 3D động & tương tác và có thể định nghĩa các khung chính và chuyển đổi để hoạt hình hoá các đối tượng, camera và ánh sáng. Các nhà phát triển phần mềm có thể dễ dàng tạo và thao tác với các hình học khác nhau, bao gồm đa giác, hình cầu, khối lập phương và hơn thế nữa. Họ có thể chỉnh sửa các đỉnh, áp dụng biến đổi và kết hợp các hình để tạo mô hình phức tạp. Ví dụ sau đây cho thấy cách các nhà phát triển phần mềm có thể tải mô hình từ tệp OBJ bằng mã PHP.
Cách tải mô hình từ tệp OBJ bằng 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);
Kết xuất cảnh 3D qua API PHP
Thư viện Render PHP mã nguồn mở giúp các nhà phát triển phần mềm dễ dàng tải và kết xuất các loại cảnh 3D khác nhau trong ứng dụng PHP của họ. Nó cung cấp một API đơn giản cho việc kết xuất cảnh 3D, bao gồm đầy đủ các điều khiển camera, ánh sáng và thao tác đối tượng. Các nhà phát triển có thể định nghĩa đối tượng, đặt chúng trong cảnh và chỉ định ngoại hình cũng như hành vi của chúng. Hơn nữa, các nhà phát triển phần mềm có thể tạo và thao tác các hình dạng hình học khác nhau, bao gồm đa giác, hình cầu, khối lập phương và nhiều hơn nữa.
Trực quan hoá sản phẩm tốt hơn
Thư viện Render PHP 3D miễn phí cho phép các nhà phát triển phần mềm thêm các yếu tố 3D bắt mắt vào ứng dụng web của họ một cách dễ dàng. Các trang web thương mại điện tử có thể sử dụng thư viện Render PHP 3D để cung cấp các góc nhìn sản phẩm tương tác, cho phép khách hàng xoay, phóng to và xem xét sản phẩm từ các góc độ khác nhau. Trải nghiệm nhập vai này nâng cao sự hiểu biết về sản phẩm và cải thiện sự hài lòng của khách hàng. Ví dụ dưới đây minh họa việc nội suy tọa độ barycentric bên trong một tam giác được vẽ bằng API PHP.
Cách thực hiện nội suy tọa độ barycentric bên trong một tam giác đã vẽ bằng 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),
);