- Threlte là một framework mã nguồn mở đặt mô hình component phản ứng của Svelte lên trên Three.js để nhanh chóng tạo ra ứng dụng 3D tương tác trên web
- Với các component khai báo như
<T.Mesh>, có thể cấu thành các đối tượng Three.js và xử lý đăng ký sự kiện cùng thay đổi trạng thái thông qua vòng đời của Svelte - Bộ công cụ mặc định đi kèm engine vật lý Rapier, công cụ animation Theatre.js,
@threlte/gltf,@threlte/extras, giúp giảm bớt khâu thiết lập ban đầu cho ứng dụng 3D - Những hành vi mà chỉ
<T>component chưa đáp ứng đủ có thể được mở rộng bằng Plugins an toàn kiểu để thêm props·event tùy chỉnh - Trong hệ sinh thái Svelte, đây được đánh giá cao về tài liệu và tính dễ dùng đối với các nhà phát triển đang tìm thư viện THREE khai báo và công cụ tạo ứng dụng WebGL
Cấu hình scene Three.js theo cách của Svelte
- Threlte là framework 3D cho web được xây dựng trên Svelte và Three.js
- Tập trung vào việc xây dựng nhanh ứng dụng 3D tương tác bằng các component khai báo và phản ứng
- Có thể tận dụng vòng đời của component Svelte để xử lý các tác vụ sau
- đăng ký sự kiện
- xử lý thay đổi trạng thái
- liên kết hành vi dựa trên component
- Mã ví dụ đặt geometry và material bên trong
<T.Mesh>, đồng thời chỉ định trực tiếp props và event nhưscale,position.x,onclick - Có thể xem cách dựng scene đầu tiên tại Make Your First Scene
Các công cụ đi kèm và cách mở rộng
- Threlte nhấn mạnh cấu hình “batteries included” và cung cấp sẵn các công cụ cần thiết để tạo ứng dụng 3D
- Rapier: engine vật lý
- Theatre.js: thư viện animation với bộ công cụ motion design chuyên nghiệp
@threlte/gltf: công cụ chuyển tệp GLTF thành component Threlte@threlte/extras: tập hợp component và tiện ích cần thiết để bắt đầu
- Ví dụ Rapier kết hợp
RigidBody,AutoColliders,<T.Mesh>để cấu thành collider hình cầu và mesh - Ví dụ
@threlte/extrasdùng componentFloatvàGLTFđể tải model/models/flower.glb, đồng thời chỉ định bóng đổ, vị trí và tỷ lệ - Có thể xem cách dùng
@threlte/extrastrong Documentation - Plugins là cơ chế mở rộng cho phép thêm props và event tùy chỉnh vào
<T>một cách an toàn kiểu- Plugin ví dụ dùng
injectPluginđể đăng ký proplookAt, rồi gọiargs.ref.lookAt(args.props.lookAt)bên trong$effect - Cách dùng nâng cao được tổng hợp trong tài liệu Plugins
- Plugin ví dụ dùng
- Tài liệu bắt đầu và liên kết cộng đồng cũng được cung cấp
1 bình luận
Ý kiến trên Hacker News
Về cơ bản chúng tôi đang làm hai việc. Một là hỗ trợ Svelte 5; Threlte đã can thiệp khá nhiều vào bên trong component để làm cho xử lý sự kiện hiệu quả hơn, hoặc để áp dụng Svelte transition cho component thay vì phần tử DOM, nên công việc nhiều hơn một chút so với thư viện Svelte thông thường. Khá nhiều trong số này đã được tích hợp sẵn vào Svelte 5, còn những thứ còn lại như transition thì tạm thời sẽ phải gác lại
Việc còn lại là Threlte Studio. Tôi vẫn chưa chắc nên mô tả thế nào cho đúng, nhưng có thể gọi nó là một editor cho phép chỉnh sửa code theo cách trực quan. Nó có thể mở rộng nên có thể tùy biến theo quy trình làm việc của bạn, và tôi rất tò mò xem nó có thể đi xa đến đâu. Nếu quan tâm, bạn có thể theo dõi trên Discord http://chat.threlte.xyz hoặc X https://twitter.com/threlte
Svelte thực sự trực quan, nên tôi tự nhiên nghĩ rằng có thể quản lý môi trường 3D một cách hiệu quả với nó, và vì thế đã tìm “Svelte + three.js”
Từng dùng PlayCanvas và Babylon.js, tôi rất mong chờ việc phát triển Threlte Studio. Tôi thích DREI ở chỗ nó bung mọi thứ ra như một thư mục, nhưng nó cũng làm tôi nghĩ đến các “công cụ studio” quen thuộc. Tôi tò mò về lịch trình dự kiến của Threlte Studio
Ví dụ tôi đặc biệt thích là gallery ảnh. Tôi từng sửa nó để khi bấm vào một ảnh thì đi vào một phòng khác, tức một gallery khác
https://github.com/pmndrs/drei là một tập hợp các ví dụ và helper
Ấn tượng nhất với tôi là ví dụ dùng model GLTF, video texture trên chữ, phản chiếu, v.v.; bản chạy độc lập ở https://bfplr.csb.app/
Còn ấn tượng hơn là sandbox cho thấy lượng code không nhiều lắm: https://codesandbox.io/p/sandbox/ground-reflections-and-vide...
Việc đặt một lớp bên trên three.js cần rất nhiều công sức và tôi cũng đã gặp vài chuyện khá đau đầu, nhưng tiềm năng vẫn rất lớn. Dùng three.js đã thay đổi hoàn toàn cách tôi nhìn việc phát triển website, và nếu bạn dùng Svelte thì rất đáng để xem qua
Technical Outline, đặc biệt là phần giải thích vật lý ô tô đã đơn giản hóa, khá hữu ích. Về bản chất đây là một bản clone Trackmania có cả trình biên tập đường đua, và có vẻ là ví dụ tận dụng tối đa điểm mạnh của Svelte/Threlte
Tôi tò mò liệu mọi người có thực sự muốn 3D khai báo không. X3D/VRML đã tồn tại hơn 25 năm, A-Frame cũng đã 8 năm, nhưng cả hai đều không quá phổ biến; nhiều định dạng khác cũng từng xuất hiện rồi biến mất. Trong khi đó three.js và 3D kiểu mệnh lệnh/thủ tục nhìn chung lại đang phát triển tốt, tôi tự hỏi vì sao
Nó chưa được tối ưu quá tốt, và tất cả model đều là model miễn phí từ Sketchfab. Vì là môi trường game 3D nên có PC đời mới sẽ hữu ích
Tôi nghĩ nhiều UI có thể hưởng lợi từ việc tận dụng 3D