راهاندازی Renderer، Canvas، WebGLRenderer vs CSS3DRenderer vs SVGRenderer
برای اینکه صحنه سهبعدی رو روی صفحه نمایش بدیم، Three.js از Renderer استفاده میکنه.
Renderer وظیفه داره صحنه و دوربین رو به Canvas یا DOM یا WebGL منتقل کنه.
۱️⃣ Canvas و WebGLRenderer
🔹 Canvas
-
رندر دو بعدی با
<canvas>
-
WebGL از Canvas استفاده میکنه، اما خودش سهبعدی رو پشتیبانی میکنه.
-
Canvas به خودی خود سهبعدی نیست، WebGLRenderer روی Canvas سهبعدی رو فراهم میکنه.
🔹 WebGLRenderer
-
متداولترین و قدرتمندترین Renderer در Three.js
-
از GPU استفاده میکنه → سریع و مناسب برای صحنههای پیچیده
-
اکثر پروژههای Three.js روی WebGLRenderer اجرا میشن
🔹 مثال WebGLRenderer
📌 مزیت WebGLRenderer: سریع، GPU-friendly، پشتیبانی کامل از متریال، سایه و نور.
۲️⃣ CSS3DRenderer
🔹 تعریف
-
یک Renderer برای ترکیب المانهای DOM با صحنه سهبعدی
-
اشیاء HTML یا CSS میتونن داخل صحنه سهبعدی قرار بگیرن
-
GPU کمتر استفاده میشه → برای انیمیشنهای سبک مناسب
🔹 مثال CSS3DRenderer
📌 کاربرد: نمایش پنجرهها، متنها، یا المانهای HTML در فضای سهبعدی
۳️⃣ SVGRenderer
🔹 تعریف
-
خروجی صحنه به صورت SVG
-
مناسب گرافیک برداری سبک و قابل مقیاس
-
سرعت کمتر از WebGL
-
اکثر افکتهای سهبعدی و سایهها پشتیبانی نمیشن
🔹 مثال SVGRenderer
📌 کاربرد: گرافیک برداری سبک، نمودارها یا صحنههای ساده
۴️⃣ مقایسه سریع Rendererها
Renderer | GPU | کیفیت سهبعدی | سرعت | کاربرد |
---|---|---|---|---|
WebGLRenderer | ✅ | عالی | سریع | بازی، شبیهساز، پروژه پیچیده |
CSS3DRenderer | ❌ | متوسط | متوسط | ترکیب HTML با سهبعدی |
SVGRenderer | ❌ | محدود | کند | گرافیک برداری سبک |
✅ نکات مهم
-
بیشتر پروژهها WebGLRenderer دارند.
-
CSS3DRenderer و SVGRenderer برای پروژههای سبک یا ترکیبی مناسبند.
-
همیشه Renderer با Canvas ایجاد میشه (
renderer.domElement
) و باید به DOM اضافه بشه.