یکی از رایجترین سؤالها هنگام کار با متریالهای PBR این است: «اگر Base Color من PNG است، باز هم به Opacity Map نیاز دارم؟»
جواب کوتاه: نه همیشه. بیایید ساده توضیحش بدهیم.
هر تصویر از کانالها ساخته شده
بیشتر تصاویر سه کانال رنگ دارند:
- 🔴 قرمز (Red)
- 🟢 سبز (Green)
- 🔵 آبی (Blue)
این سه با هم رنگهایی را که میبینید میسازند (RGB).
PNG میتواند یک کانال دیگر هم داشته باشد
برخلاف JPG، فایل PNG میتواند کانال چهارمی به نام Alpha هم داشته باشد (RGBA):
- R = قرمز
- G = سبز
- B = آبی
- A = آلفا (شفافیت)
کانال آلفا تعیین میکند هر پیکسل چقدر دیده شود:
- ⚪ ۲۵۵ ← کاملاً قابل مشاهده
- ⚫ ۰ ← کاملاً شفاف
- 🔘 بین ۰ و ۲۵۵ ← نیمهشفاف
آلفا را مثل یک ماسک نامرئی ببینید که به رندرر میگوید کدام پیکسلها دیده شوند و کدام ناپدید شوند.
آیا به Opacity Map جداگانه نیاز دارم؟
بستگی دارد.
✅ حالت ۱ — فایل PNG رنگ پایه از قبل آلفا دارد
فایلی مثل leaf_baseColor.png از قبل RGB و آلفا را دارد. در این حالت معمولاً به Opacity Map جداگانه نیازی نیست. در Three.js فقط شفافیت را فعال کنید:
const material = new THREE.MeshStandardMaterial({
map: texture,
transparent: true,
});Three.js بهطور خودکار از کانال آلفای داخل PNG استفاده میکند.
✅ حالت ۲ — رنگ پایه JPG است
فایلی مثل wood_baseColor.jpg نمیتواند شفافیت را ذخیره کند، پس به یک Opacity Map جداگانه مثل wood_opacity.png نیاز دارید. در Three.js آن را به alphaMap بدهید:
const material = new THREE.MeshStandardMaterial({
map: baseColor,
alphaMap: opacityMap,
transparent: true,
});glTF چطور؟
یک نکته جالب: استاندارد glTF 2.0 تکسچر جداگانهای برای Opacity تعریف نمیکند. شفافیت در کانال آلفای تکسچر Base Color ذخیره میشود. بنابراین بیشتر داراییهای مدرن glTF به جای Base Color + Opacity Map از یک تکسچر Base Color (RGBA) استفاده میکنند.
یک راه ساده برای به خاطر سپردن
تکسچر را مثل یک برگ کاغذ ببینید:
- 🎨 RGB تعیین میکند چه رنگی نقاشی شود.
- 👻 آلفا تعیین میکند کدام بخشهای کاغذ اصلاً وجود داشته باشند.
رنگ جواب میدهد «این پیکسل چه شکلی است؟» و آلفا جواب میدهد «اصلاً این پیکسل باید وجود داشته باشد؟»
فهمیدن همین جزئیات کوچک، کار با متریالهای PBR، Three.js، Blender و glTF را خیلی سادهتر میکند. گاهی شفافیتی که دنبالش هستید، از قبل داخل تکسچر Base Color شما پنهان است.



