Mahdi_Rashed
Well-Known Member
Lindenmayer system یکی از انواع Fractal ها در محیط دوبعدی و سه بعدی هستند که میتوان با آنها داده های تصادفی را تولید و در ساخت سازه های تصادفی در بازیها مانند درخت، گیاهان و بیشتر ساخت کوه و کوهستان استفاده کرد . به طور کلی Procedural generation ها یا سازه های خودساخته یا تصادفی ترکیبی از انواع Fractal ها با سیستمهای رندر رئال تایم است که هم میتوان از mesh rendering و هم از Voxel استفاده کرد . ولی برای بهینه سازی حجم داده هایی که از GPU بازخوانی و پردازش میشوند بهترین راه استفاده از Mesh Rendering است. Lindenmayer system یک نوع از Fractal ها هستند که اول از همه از یک مثلث متساوی الاضلاع تشکیل شده . در مرحله دوم با اضافه شدن یک فرمول دیگر به فرمول قبلی یعنی:
n=0 , A به n=2 , AB
تبدیل میشود و روی هر یک از اضلاع یک مثلث متساوی الاضلاع دیگر درست میشود و اضلاع مشترک آنها که ساق مثلثهای جدید است از سیستم حذف میشود . بنابراین به ترتیب داریم:
n=3 , ABAAB و ....
وقتی لازم باشد که یکی از اضلاع مشترک حذف شود داریم :
n=4 , ABAABABA و n=5 , ABAABABAABAAB
در این حالت شکلی مطالق شکل زیر ایجاد میشود.
که در حالتی که از نزیک تر نگاه کنیم این شکلی است
فرق سیستم Lindenmayer در 3بعد این است که اضلاع مشترک حذف نمیشوند چون در صورتی حذف آنها Face مورد نظر که به صورت triangle تشکیل شده از هم می پاشد.
در کد نویسی سیستم Lindenmayer باید به بخشهایی مانند یابنده face های 3گوشه در شی 3بعدی و تبدیل هر یک یه 3 face جدید یعنی وسط هر face یا پیدا کرده و از هر راس به آن یک edge اضافه کند .
پس در سیستم Direct X با فراخوانی یک 3Dplane آن را با کمی دستکاری از طریق mesh editor به شکل زیر تبدیل میکنیم.
با دادن ترکیب های داده ای که بعداً آموزش برنامه نویسی اون رو قرار میدم 3 فرمول جدید به mesh اضافه میشه با شرط اینکه اضلاع مشترک حذف نشن یا اگر لازم به حذف آنها بود face جدید با دستورات cap ترمیم بشه . بنابراین شکل جدید این شکلی است
همین روش را یا 11 فرمول دیگه هم ادامه میدیم
شکل نهایی ما همین است که میشه با استفاده از دستورات displace و soft select کمی شی 3بعدی را شبیه یک کوه انجام بدیم . برای این کار بهتر است که با استفاده از تکسچرهای تصادفی Plasma یا smoke است ولی چون توضیح این دو سیستم تصادفی بسیار وقت گیر میباشد فقط یک دستور soft select ساده به شی 3بعدی نسبت میدهیم.
منبع : جامعه طراحان خورشید
n=0 , A به n=2 , AB
تبدیل میشود و روی هر یک از اضلاع یک مثلث متساوی الاضلاع دیگر درست میشود و اضلاع مشترک آنها که ساق مثلثهای جدید است از سیستم حذف میشود . بنابراین به ترتیب داریم:
n=3 , ABAAB و ....
وقتی لازم باشد که یکی از اضلاع مشترک حذف شود داریم :
n=4 , ABAABABA و n=5 , ABAABABAABAAB
در این حالت شکلی مطالق شکل زیر ایجاد میشود.
که در حالتی که از نزیک تر نگاه کنیم این شکلی است
فرق سیستم Lindenmayer در 3بعد این است که اضلاع مشترک حذف نمیشوند چون در صورتی حذف آنها Face مورد نظر که به صورت triangle تشکیل شده از هم می پاشد.
در کد نویسی سیستم Lindenmayer باید به بخشهایی مانند یابنده face های 3گوشه در شی 3بعدی و تبدیل هر یک یه 3 face جدید یعنی وسط هر face یا پیدا کرده و از هر راس به آن یک edge اضافه کند .
پس در سیستم Direct X با فراخوانی یک 3Dplane آن را با کمی دستکاری از طریق mesh editor به شکل زیر تبدیل میکنیم.
با دادن ترکیب های داده ای که بعداً آموزش برنامه نویسی اون رو قرار میدم 3 فرمول جدید به mesh اضافه میشه با شرط اینکه اضلاع مشترک حذف نشن یا اگر لازم به حذف آنها بود face جدید با دستورات cap ترمیم بشه . بنابراین شکل جدید این شکلی است
همین روش را یا 11 فرمول دیگه هم ادامه میدیم
شکل نهایی ما همین است که میشه با استفاده از دستورات displace و soft select کمی شی 3بعدی را شبیه یک کوه انجام بدیم . برای این کار بهتر است که با استفاده از تکسچرهای تصادفی Plasma یا smoke است ولی چون توضیح این دو سیستم تصادفی بسیار وقت گیر میباشد فقط یک دستور soft select ساده به شی 3بعدی نسبت میدهیم.
منبع : جامعه طراحان خورشید