استفاده از Node Base Lindenmayer system

Mahdi_Rashed

Well-Known Member
با سلام خدمت دوستان واقعی و بدون هیچ گونه سلامی به اون دوستان محترمی که افکار پریشونشون رو به رشته فونت در میارن و به من میل میکنن.

امروز میخوام یکی از بلااستفاده ترین و بیخودترین مقاله های موجود در عالم هستی رو تقدیمتون کنم و امیدوارم که مورد استفاده قرار بگیره. :cool:
مقاله در مورد سیستم های Lindenmayer هست که به صورت ساختارهای درختی هست و در خیلی از علوم از جمله طراحی 3بعدی کاربرد داره. کاربرد اصلی Lindenmayer در طراحی بازی ساخت terrain و landscape های نامحدود هست که جای voxel رو گرفت. Lindenmayer به دلیل فشرده بودن و ساده بودن دستور و سبک بودن از نظر پردازش برای اولین باز در صنعت انیمیشن و شبیه سازهای پرواز استفاده شده و بعد از اون در بازیهای متعددی مورد استفاده قرار گرفت که تا قبل از اون از Voxel استفاده میکردن. Lindenmayer دارای مدلهای متعددی هست که نوع اصلی اون L-system Fragment formation هست که در یکی از پستها توضیح مختصری در موردش داده بودم. یکی دیگه از انواع سیستم Lindenmayer نوع Cercular Form L-system هست که در صنعت طراحی بازی استفاده نمیشه و معمولاً برای طراحی decal یا برچسبهای با ابعاد world یا خیلی بزرگ در انیمیشنها استفاده میشه. البته به نوعی میشه از اون به عنوان float light map در طراحی بازی استفاده کرد ولی این تکنیک برای محیط رئال تایم کمی سنگینه.

نوعی که من میخوام در موردش توضیح بدم Node base Lindenmayer system یا Node base L-system هست در جدیدترین و سبکترین ( از نظر پردازش ) نوع سیستم Lindenmayer به حساب میاد و قابلیت استفاده در بازیهای 3بعدی رو هم داره. کاربرد اصلی Node Base Lindenmayer در طراحی terrain ها و Landscape های نامحدود در ابعاد بسیار بسیار بزرگ هست که به طراح اجازه میده تا در عین استفاده از یک سیستم کامل ساخت Terrain ، با استفاده از تنظیمات پیشفرض در DirectX 10 به راحتی توابع و بخشهای پردازشی اون رو در حافظه جانبی رایانه فشرده سازی و مورد استفاده قرار بده. همچنین سیستم Node Base Lindenmayer دارای تابع Level of Detail به خصوصی هست که تا 12 مرحله حجم face ها یا صفحات terrain رو با حفظ خاصیت Node Base Lindenmayer کم میکنه و در مرحله 13 بدون اینکه پردازش زیادی انجام بده اون رو به Fragment formation تبدیل کنه. در کنار این خصوصیات، سیستم Node Base Lindenmayer دارای یک آرایش یا topology خاصی هست که از بروز مشکلات در محورهای normal شی terrain جلوگیری میکنه. شکل کلی Node Base Lindenmayer این عکس هست.

13056609420.png


ساختار Node Base Lindenmayer از دو بخش Node و Fragment تشکیل شده.

13056609421.png

Node ها یا نقاط قرمز در واقع vertex هایی هستند که اطلاعات مربوط به متوسط 7 face رو در خودشون نگه داشتن. اگر این مقدار متوسط رو x در نظر بگیریم اونوقت به اندازه x فاکتوریل به توان x و در آخر ضرب در x حالت برای ساخت یک terrain در محیط 3بعدی خواهیم داشت. یعنی برای متوسط 7 صفحه به اندازه ی 578244878777324666880000000 حالت برای یک node در محیط 3بعدی خواهیم داشت.

Fragment ها یا نقاط آبی صفحاتی هستند که متعلق به هیچ node خاصی نیستند و اصطلاحاً اضافه یا یدکی به شمار میرن. ولی وجود این fragment ها در شکل دادن Level of Detail در سیستم Node Base Lindenmayer حیاتیه. هر node به طور متوسط دارای 5 fragment هست که با بالا رفتن مرحله LOD یا کم شدن کیفیت شی نسبت به فاصله تعداد اونها تغییر جزیی میکنه. همچنین وجود fragment ها باعث جلوگیری از ادقام کامل دو مجموعه ی node با هم و در نتیجه جلوگیری از بروز مشکل در محورهای Normal میشه.

دو نکته هست که باید ذکر کنم.

اول اینکه سیستم Node Base Lindenmayer توسط نرم افزار مکس قابل ساخته شدن هست ولی یک فرق بزرگ با نمونه اصلی در محیط بازی و موتورهای طراحی بازی داره. در محیط مکس Node ها و Fragment ها دارای اطلاعات مربوط به LOD نیستند پس علاوه بر اینکه تابع LOD درست عمل نخواهد کرد ممکنه در محورهای Normal هم مشکلاتی پیش بیاد. پس از سیستم Node Base Lindenmayer حتماً در محیط بازی استفاده بشه. DirectX 10 در سیستم و کلاس DX_Terrain به طور کامل از سیستم Node Base Lindenmayer پشتیبانی میکنه.

نکته دوم نحوه تکسچرینگ و پیکربندی UV های هست که دقیقاً شبیه Fragment Formation L-system صورت میگیره. یعنی استفاده از Vertex painting و تکنیکهای Layer Mask

موفق باشید.
 
بازم مثل همیشه خیلی خوب بود.دوست من میشه بیشتر در مورد هوش مصنوعی توضیح بدی.بابت این مقاله هم متشکرم.
 

جدیدترین ارسال ها

بالا