
Three.js là gì?
Three.js là thư viện JavaScript mã nguồn mở giúp tạo và hiển thị đồ họa 3D ngay trên trình duyệt web, sử dụng WebGL để tận dụng sức mạnh GPU mà không cần cài thêm plugin. Thư viện do Ricardo Cabello (biệt danh Mr.doob) sáng lập, commit đầu tiên trên GitHub vào ngày 24 tháng 4 năm 2010, ban đầu viết bằng ActionScript rồi chuyển sang JavaScript từ năm 2009, theo Wikipedia.

Điểm mạnh của Three.js nằm ở chỗ nó che đi sự phức tạp của WebGL. WebGL là API đồ họa cấp thấp chỉ vẽ được điểm, đường và tam giác, theo mô tả của MDN, trong khi Three.js cung cấp lớp trừu tượng cao với các đối tượng sẵn có như scene, camera, mesh, vật liệu và ánh sáng. Nhờ đó, lập trình viên chỉ cần vài dòng code để dựng một cảnh 3D hoàn chỉnh.
Phiên bản và hệ sinh thái
Three.js phát hành theo chu kỳ nhanh với đánh số dạng rNNN. Từ phiên bản r0 năm 2010, thư viện đã đạt r185 với bản phát hành mới nhất vào giữa năm nay, theo GitHub Releases. Cộng đồng xung quanh Three.js cũng rất lớn: React Three Fiber giúp dùng Three.js khai báo trong React, còn hàng loạt thư viện hỗ trợ physics, post-processing và tải model.

Các khái niệm cốt lõi
Một ứng dụng Three.js cơ bản xoay quanh bốn thành phần chính theo tài liệu threejs.org: Scene là không gian chứa toàn bộ đối tượng, Camera quyết định góc nhìn, Renderer vẽ cảnh lên canvas, còn Mesh là sự kết hợp giữa Geometry (hình dạng) và Material (chất liệu). Ánh sáng trong scene có các loại ambient, directional, point và spot để tạo bóng đổ chân thực.
- Scene: không gian 3D chứa mọi đối tượng, có thể thêm sương mù và môi trường.
- Camera: PerspectiveCamera mô phỏng góc nhìn mắt người, OrthographicCamera dùng cho bản vẽ kỹ thuật.
- Renderer: WebGLRenderer vẽ cảnh lên canvas, hỗ trợ cả WebGPU thử nghiệm.
- Geometry và Material: quyết định hình dạng và bề mặt, từ cơ bản đến PBR với MeshStandardMaterial.
- Animation loop: vòng lặp render liên tục tạo chuyển động mượt mà.

Tính năng nổi bật
Three.js không dừng lại ở việc vẽ khối cơ bản. Thư viện hỗ trợ vật liệu PBR chân thực với MeshStandardMaterial và MeshPhysicalMaterial, InstancedMesh để vẽ hàng nghìn đối tượng giống nhau với hiệu năng cao, EffectComposer cho hiệu ứng hậu kỳ, và hệ thống tải model glTF, OBJ, USDZ. Ngoài ra, WebXR API tích hợp giúp tạo trải nghiệm VR và AR ngay trong trình duyệt, theo Wikipedia.
Những dự án nổi tiếng dùng Three.js
Three.js xuất hiện trong nhiều sản phẩm web ấn tượng. A-Frame dùng nó làm nền tảng cho WebVR, NASA Eyes mô phỏng hệ mặt trời với dữ liệu thật, Lamborghini xây dựng công cụ cấu hình xe 3D trên website, Chrome Experiment 100.000 Stars trực quan hóa các ngôi sao lân cận, còn trang portfolio của Bruno Simon gây ấn tượng với người xem bằng cảnh 3D điều khiển bằng bàn phím. Danh sách đầy đủ nằm trên trang chủ threejs.org.
Hiệu năng và tối ưu cho cảnh 3D
Khi cảnh 3D ngày càng phức tạp, hiệu năng trở thành yếu tố quyết định trải nghiệm người dùng. Nguyên tắc quan trọng nhất là giữ số lượng draw call thấp, tức giảm số lần GPU phải vẽ lại từng đối tượng. Kỹ thuật phổ biến gồm gộp nhiều mesh nhỏ thành một geometry lớn, dùng InstancedMesh cho các đối tượng lặp lại như cây cỏ hay tòa nhà, và bật culling để bỏ qua những vật nằm ngoài tầm nhìn camera. Texture atlas giúp giảm số lần chuyển đổi trạng thái GPU, còn kỹ thuật LOD (Level of Detail) thay thế mô hình chi tiết bằng bản thô khi vật ở xa.
Trên thiết bị di động, cần đặc biệt cẩn thận với dung lượng texture và số lượng đèn trong scene, vì GPU tích hợp có giới hạn băng thông. Một bài viết hướng dẫn trên dev.to chia sẻ kinh nghiệm tối ưu animation Three.js mà không bị giật, từ việc tái sử dụng đối tượng đến hạn chế cập nhật thuộc tính không cần thiết. Hãy đo hiệu năng bằng công cụ DevTools của trình duyệt trước khi tối ưu, thay vì đoán mò điểm nghẽn.
Học Three.js bắt đầu từ đâu?
Với người mới, tài liệu chính thức tại threejs.org có phần manual và hàng trăm ví dụ kèm mã nguồn. Khóa học Three.js Journey của Bruno Simon được cộng đồng đánh giá cao cho lộ trình bài bản, còn cuốn sách miễn phí Discover Three.js giải thích từng bước từ nền tảng đến nâng cao. Nếu bạn đã quen React, hãy xem React Three Fiber để viết cảnh 3D theo phong cách khai báo.
Kết luận
Three.js là lựa chọn hàng đầu cho đồ họa 3D trên web nhờ mã nguồn mở, cộng đồng lớn và khả năng chạy mọi trình duyệt hiện đại. Từ mô hình sản phẩm, trò chơi trình duyệt đến trực quan hóa dữ liệu khoa học, thư viện này đã chứng minh sức mạnh suốt hơn một thập kỷ. Nếu bạn muốn bắt đầu với lập trình web hiện đại, tìm hiểu Three.js chính là bước vào thế giới 3D đầy tiềm năng.
Tham khảo thêm: Three.js Fundamentals | Wikipedia – Three.js | GitHub – three.js
