- Threlte เป็นเฟรมเวิร์กโอเพนซอร์สที่นำโมเดลคอมโพเนนต์แบบ reactive ของ Svelte มาวางบน Three.js เพื่อให้สร้าง แอป 3D แบบอินเทอร์แอ็กทีฟ บนเว็บได้อย่างรวดเร็ว
- ใช้คอมโพเนนต์แบบ declarative เช่น
<T.Mesh>เพื่อประกอบอ็อบเจ็กต์ของ Three.js และจัดการการ subscribe อีเวนต์กับการเปลี่ยนแปลงสถานะผ่าน ไลฟ์ไซเคิล ของ Svelte - มีเครื่องมือพื้นฐานมาให้พร้อม เช่น เอนจินฟิสิกส์ Rapier, เครื่องมือแอนิเมชัน Theatre.js,
@threlte/gltf,@threlte/extrasช่วยลดงานตั้งต้นในการสร้างแอป 3D - พฤติกรรมที่ทำด้วยคอมโพเนนต์
<T>เพียงอย่างเดียวไม่พอ สามารถขยายได้ด้วย Plugins ที่ type-safe เพื่อเพิ่ม props และอีเวนต์แบบกำหนดเอง - สำหรับนักพัฒนาที่มองหาไลบรารี THREE แบบ declarative และเครื่องมือสร้างแอป WebGL ในระบบนิเวศ Svelte จุดแข็งที่ได้รับการประเมินคือเอกสารและความใช้งานง่าย
จัดฉาก Three.js ในแบบของ Svelte
- Threlte เป็นเฟรมเวิร์ก 3D สำหรับเว็บที่สร้างบน Svelte และ Three.js
- มุ่งเน้นการสร้าง แอป 3D แบบอินเทอร์แอ็กทีฟ อย่างรวดเร็วด้วยคอมโพเนนต์แบบ declarative และ reactive
- ใช้ไลฟ์ไซเคิลของคอมโพเนนต์ Svelte เพื่อจัดการงานต่อไปนี้ได้
- การ subscribe อีเวนต์
- การจัดการการเปลี่ยนแปลงสถานะ
- การเชื่อมโยงพฤติกรรมแบบอิงคอมโพเนนต์
- โค้ดตัวอย่างวาง geometry และ material ไว้ภายใน
<T.Mesh>และกำหนด props กับอีเวนต์อย่างscale,position.x,onclickได้โดยตรง - การจัดฉากแรกดูได้ที่ Make Your First Scene
เครื่องมือที่มาพร้อมกันและวิธีขยาย
- Threlte ชูแนวทาง “batteries included” โดยให้เครื่องมือที่จำเป็นต่อการสร้างแอป 3D มาพร้อมกัน
- Rapier: เอนจินฟิสิกส์
- Theatre.js: ไลบรารีแอนิเมชันที่มีชุดเครื่องมือออกแบบการเคลื่อนไหวระดับมืออาชีพ
@threlte/gltf: เครื่องมือแปลง ไฟล์ GLTF เป็นคอมโพเนนต์ Threlte@threlte/extras: ชุดคอมโพเนนต์และยูทิลิตีที่จำเป็นสำหรับการเริ่มต้น
- ตัวอย่าง Rapier ใช้
RigidBody,AutoColliders,<T.Mesh>ร่วมกันเพื่อประกอบ collider รูปทรงกลมและ mesh - ตัวอย่าง
@threlte/extrasใช้คอมโพเนนต์FloatและGLTFเพื่อโหลดโมเดล/models/flower.glbพร้อมกำหนดเงา ตำแหน่ง และสเกล - วิธีใช้
@threlte/extrasดูได้ที่ Documentation - Plugins เป็นวิธีขยายที่เพิ่ม props และอีเวนต์แบบกำหนดเองให้กับ
<T>ได้อย่าง type-safe- ปลั๊กอินตัวอย่างลงทะเบียน prop
lookAtด้วยinjectPluginและเรียกargs.ref.lookAt(args.props.lookAt)ภายใน$effect - วิธีใช้ขั้นสูงสรุปไว้ใน เอกสาร Plugins
- ปลั๊กอินตัวอย่างลงทะเบียน prop
- มีเอกสารเริ่มต้นและลิงก์ชุมชนให้ด้วย
1 ความคิดเห็น
ความเห็นจาก Hacker News
หลัก ๆ แล้วกำลังทำอยู่สองอย่าง อย่างแรกคือ รองรับ Svelte 5 โดย Threlte มีงานมากกว่าไลบรารี Svelte ทั่วไปเล็กน้อย เพราะเราไปแตะภายในของคอมโพเนนต์ค่อนข้างเยอะเพื่อให้จัดการอีเวนต์ได้มีประสิทธิภาพขึ้น หรือเพื่อให้ใช้ Svelte transitions กับคอมโพเนนต์แทน DOM element ได้ หลายอย่างในนั้นถูกใส่มาใน Svelte 5 แล้ว และส่วนที่เหลืออย่าง transitions ก็คงต้องพักไว้ก่อนในตอนนี้
อีกอย่างคือ Threlte Studio ตอนนี้ยังไม่แน่ใจว่าจะอธิบายยังไงดี แต่พอมองได้ว่าเป็นเอดิเตอร์ที่ช่วยให้แก้โค้ดแบบมองเห็นภาพได้ มันขยายต่อได้ด้วย คุณจึงปรับให้เข้ากับ workflow ของตัวเองได้ และฉันก็อยากรู้เหมือนกันว่าจะไปได้ไกลแค่ไหน ถ้าสนใจ ก็ตามต่อได้ใน Discord http://chat.threlte.xyz หรือ X https://twitter.com/threlte
Svelte ดูเป็นธรรมชาติมากจนเผลอคิดไปเองเลยว่าน่าจะจัดการสภาพแวดล้อม 3D ได้อย่างมีประสิทธิภาพด้วย เลยค้นคำว่า “Svelte + three.js”
จากที่เคยใช้ PlayCanvas กับ Babylon.js มาก่อน ฉันตื่นเต้นมากกับการพัฒนา Threlte Studio DREI มีข้อดีตรงที่แสดงทุกอย่างออกมาเป็นเหมือนไดเรกทอรี แต่ก็ทำให้นึกถึง “เครื่องมือสตูดิโอ” ที่คุ้นเคย อยากรู้ไทม์ไลน์คร่าว ๆ ของ Threlte Studio
อันที่ชอบเป็นพิเศษคือตัวอย่างแกลเลอรีภาพ ฉันลองแก้ให้เมื่อคลิกรูปแล้วเข้าไปอีกห้องหนึ่ง หรือก็คืออีกแกลเลอรีหนึ่ง
https://github.com/pmndrs/drei คือชุดรวมตัวอย่างและตัวช่วย
สิ่งที่น่าประทับใจที่สุดสำหรับฉันคือตัวอย่างที่ใช้โมเดล GLTF, วิดีโอเท็กซ์เจอร์บนตัวอักษร และเงาสะท้อน ส่วนเวอร์ชันรันแยกอยู่ที่ https://bfplr.csb.app/
และที่น่าทึ่งยิ่งกว่าคือ sandbox ที่แสดงให้เห็นว่าโค้ดไม่ได้เยอะขนาดนั้น: https://codesandbox.io/p/sandbox/ground-reflections-and-vide...
การสร้างเลเยอร์ครอบบน three.js ต้องใช้แรงเยอะและมีเรื่องปวดหัวพอสมควร แต่ศักยภาพก็สูงมาก การใช้ three.js เปลี่ยนวิธีที่ฉันมองการพัฒนาเว็บไซต์ไปเลย และถ้าใครใช้ Svelte ก็ควรลองดูมาก ๆ
Technical Outline โดยเฉพาะคำอธิบายเรื่อง ฟิสิกส์รถยนต์ แบบย่อ เข้าใจง่ายและมีประโยชน์มาก โดยแก่นแล้วมันคือ Trackmania โคลนที่มีตัวแก้ไขแทร็กมาด้วย และดูเป็นตัวอย่างที่ใช้จุดเด่นของ Svelte/Threlte ได้เต็มที่
ฉันสงสัยว่าคนต้องการ 3D แบบ declarative กันจริงไหม X3D/VRML มีมานานเกิน 25 ปีแล้ว และ A-Frame ก็มีมา 8 ปี แต่ทั้งคู่ก็ไม่ได้กลายเป็นกระแสหลักมากนัก ยังมีฟอร์แมตอื่น ๆ อีกหลายตัวที่เกิดแล้วก็หายไป ตรงกันข้ามกับ three.js และ 3D แบบ imperative/procedural ที่โดยรวมไปได้ดี เลยสงสัยว่าทำไมถึงเป็นแบบนั้น
มันยังไม่ได้ optimize ดีมาก และโมเดลทั้งหมดก็เป็นโมเดลฟรีจาก Sketchfab สภาพแวดล้อมเกม 3D แบบนี้เลยน่าจะได้ประโยชน์ถ้ามี PC รุ่นใหม่หน่อย
ฉันคิดว่า UI หลายแบบน่าจะได้ประโยชน์จากการ ใช้ 3D