نحوه رندرینگ (رنگ، نورپردازی، سایهها)
Three.js فرآیند رندرینگ را به سه بخش اصلی تقسیم میکند:
-
رنگ (Color / Material)
-
نورپردازی (Lighting)
-
سایهها (Shadows)
۱️⃣ رنگ و متریالها
🔹 Material + Texture
-
ظاهر شیء را تعیین میکند
-
متریالها میتوانند ساده (Basic) یا واقعگرایانه (Standard / PBR) باشند
🔹 مثال ساده رنگ
📌 رنگها به صورت Hexadecimal یا Color Object تعریف میشوند.
۲️⃣ نورپردازی (Lighting)
🔹 اهمیت نور
-
بدون نور، متریالهایی که تحت تأثیر نور هستند (Lambert, Phong, Standard) قابل مشاهده نیستند
🔹 انواع نور
-
AmbientLight → روشنایی عمومی
-
DirectionalLight → نور خورشیدی، سایه ایجاد میکند
-
PointLight → نور نقطهای
-
SpotLight → نور مخروطی
-
HemisphereLight → شبیه آسمان و زمین
🔹 مثال نور Directional + Ambient
📌 نورها روی متریالهای Lambert, Phong و Standard اثر میگذارند.
۳️⃣ سایهها (Shadows)
🔹 فعالسازی سایه در Renderer
🔹 مشخص کردن سایه برای نور و اشیاء
📌 برخی نورها مثل AmbientLight سایه ایجاد نمیکنند، نور جهتدار یا نقطهای لازم است.
۴️⃣ فرآیند رندرینگ
-
Scene و همه Object3Dها را جمعآوری میکند
-
Material + Texture را روی هر Mesh اعمال میکند
-
نورپردازی را محاسبه میکند (Shading)
-
سایهها را محاسبه و رندر میکند
-
خروجی روی Canvas یا WebGL نمایش داده میشود
۵️⃣ مثال کامل با رنگ، نور و سایه
📌 در این مثال، تمام مراحل رندرینگ نمایش داده شده:
-
رنگ و متریال
-
نورپردازی با Ambient + Directional
-
فعالسازی و دریافت سایه
۶️⃣ نکات مهم
-
متریالهای Basic تحت تأثیر نور نیستند
-
سایهها پردازش GPU نیاز دارند، پس کیفیت بالا → مصرف منابع بیشتر
-
ترکیب نور، رنگ و سایه باعث واقعیتر شدن صحنه میشود