ساخت صحنههای سهبعدی Blender با React
خلاصهٔ کاملتر
blender-react یه ادان متنباز برای Blender هست که بهجای کلیک کردن تو رابط گرافیکی، صحنهٔ سهبعدی رو با کد اعلانی و به سبک React توصیف میکنی. کارش اینه که QuickJS، یه موتور جاوااسکریپت سبک، رو داخل خود Blender اجرا میکنه و بعد یه reconciler اختصاصی، یعنی همون لایهای که خروجی React رو به آبجکتهای واقعی تبدیل میکنه، هر کامپوننت رو به یه آبجکت Blender نگاشت میکنه.
درخت کامپوننتها همون کاری رو با صحنه میکنه که با DOM میکرد: کامپوننت تو در تو یعنی رابطهٔ پدر و فرزند تو Blender، پس جابهجا کردن والد بچهها رو هم با خودش میبره. یه نمونهٔ ساده با ClojureScript و UIx این شکلیه:
(defui app []
($ :<>
($ :cube {:position #js [0 0 0]})
($ :sphere {:position #js [3 0 0]})
($ :camera {:position #js [10 -10 8]})))پرایمیتیوهای مش مثل cube و sphere و torus، انواع نور و دوربین همگی کامپوننت خودشون رو دارن.
متریال به شکل کامپوننت فرزندِ مش اضافه میشه و پراپهای استاندارد PBR رو میگیره: color، metallic، roughness، emission و emissionStrength، alpha و ior. جالبتر اینکه Geometry Nodes، یعنی سیستم گرهمحور بلندر برای ساخت هندسهٔ پروسیجرال، هم به شکل کامپوننت بیرون داده شده. سه راه برای وصل کردن گرهها هست: زنجیرهٔ خودکار، پاس دادن گره بهعنوان پراپ که خود مخزن پیشنهادش میکنه، و connect صریح برای حالتهای پیچیده.
چون همهچی داخل یه رانتایم جاوااسکریپت اجرا میشه، requestAnimationFrame و setInterval هم در دسترسن و میشه انیمیشن بلادرنگ ساخت؛ لود مجدد صحنه هم بدون بستن Blender انجام میشه. برای راهاندازی به Blender 3.0 به بالا، Node.js 18 به بالا و Java برای shadow-cljs نیاز داری. لایسنس پروژه ISC هست.
نکات کلیدی:
- QuickJS داخل ادان پایتونی Blender اجرا میشه و از راه bpy.ops و bpy.data صحنه رو میسازه
- کامپوننتهای تو در تو به سلسلهمراتب پدر و فرزند Blender تبدیل میشن
- متریال PBR با پراپهای color، metallic، roughness، emission، alpha و ior
- Geometry Nodes با سه روش اتصال: زنجیرهٔ خودکار، گره بهعنوان پراپ، و connect صریح
- پیشنیازها: Blender 3.0 به بالا، Node.js 18 به بالا و Java؛ لایسنس ISC




