PDA

View Full Version : Games vs 3dGraphic apps



Farhad.B.S
دوشنبه 10 شهریور 1382, 14:04 عصر
سلام.
همونطور که میدونید بازی ها به صصورت runtime رندر میشند . ولی خوب بین صحنه های مختلف هیچ وقفه ای وجود نداره .
در صورتی که برای رندر کردن چند تا جسم خیلی ساده تو برنامه هایی مثل Maya یا 3dMax زمان زیادی گزفته میشه.
میخواستم بدونم علتش چیه ؟
ممنون.

Anti_Evil
دوشنبه 10 شهریور 1382, 14:44 عصر
سلام فرهاد جان،

نرم افزارهای 3d مانند 3d max و maya نیز از run-time rendering بهره میگیرند. رسم یک کره یا مکعب در محیط 3d max دقیقا به همان صورتی است که در بازی ها انجام میپذیرد.
در هنگام نصب این نرم افزارها، سوالی در مورد نوع engine برای rendering پرسیده میشود که اغلب به شکل زیر است:

OpenGL
DirectX
Software Rendering
Or something

این config برای rendering در محیط برای طراحی و همچنین برای render نهایی است.

اما در مورد سرعت rendering، حق با شماست !
سرعت rendering در بازیها بسیار بالاتر است، که باید باشد !
همانطور که در سوال جوابهای قبلی اشاره شد در تمام بازی ها، دو فاکتور بسیار مهم هستند.
یک سطح گرافیکی بازی، و دوم سرعت اجرای بازی. برای همخوانی این دو فاکتور اغلب طراحان بازی های کامپیوتری به کم کردن نقش یکی از این دو فاکتور میپردازند.
همانطور که میدانید مخاطبان بازی های کامپیوتری بسیار بیشتر نسبت به کاربرانی که قصد کارهای صرفا گرافیکی را دارند میباشد در نتیجه برای ایجاد یک بازی باید به فکر عموم بود.
به همین دلیل است که در اکثر بازی ها به کاراکترهای اصطلاحا low polygons بر میخوریم.
در یک کلام در بازی ها همه چیز به صورت optimize شده استفاده میشود !
چه object های گرافیکی و چه اگوریتم های rendering.
مورد اول که به نظرم شفاف است، مورد دوم نیازمند بحث های بسیار زیاد و تخصصی دارد.
ولی به صورت مختصر باید بگویم این دقیقا سوالی بود که ذهن برنامه نویسان را در 3 یا 4 دهه پیش در آمریکا به خود اختصاص داد، راه حل های بسیار متنوع و مختلفی درست شد که بسیاری از آنها در منطق با یکدیگر برابر بودند.
ولی شاید هیچ کدام از این راه حل ها به زیبایی BSP پیاده سازی نشد.
BSP یا Binary Space Partitioning راه حلی بود که اولین بار توسط id software در doom استفاده شد. این الگوریتم بعدها در بسیاری از بازی ها استفاده شد و شرکتهای مختلف بازی سازی نسخه های مختلفی از آن را تهیه کردند. به نظر میرسد با توجه به اهمیت این مسئله، پیاده سازی BSP برای هر 3d engine باید جزو یکی از اولویت ها باشد.
این شرح مختصری بود بر BSP

موفق باشید،
Anti_Evil

Farhad.B.S
سه شنبه 11 شهریور 1382, 12:46 عصر
سلام.
جناب AntiEvil بسیار بسیار ممنون از توضیحات خوب و کاملتون :oops: .

MOHSEN731
شنبه 27 دی 1382, 02:03 صبح
جناب AntiEvil از کجا می توان یکBSP TOOL برای طراحی این فرمت پیدا کرد -ممنون ‏

Anti_Evil
شنبه 27 دی 1382, 17:25 عصر
آقای محسن خان، قبلا به شما گفتم که سایت GalaxyRoad.com در حال بازسازی است و اگر کمی صبر کنید جواب تمام این سوال ها را در آنجا پیدا خواهید کرد.
در هر حال برای اینکه جواب این سوال را داده باشم بهتر است نرم افزار QRadiant را download کنید.
این نرم افزار برای طراحی محیط بکار میرود و به فایل های BSP. اکسپورت میکند.

موفق باشید.

MOHSEN731
یک شنبه 28 دی 1382, 01:58 صبح
قربونت برم پس هرچه زودتر راهش بنداز که خیلی مشتاقم (بهتر بگم مشتاقیم چون خیلی ها میخوان درباره بازی نویسی اطلاعات بدونند)
البته امیدوارم سایت شما جامعیت کامل را در ارائه مطالب داشته باشه و لایق عنوان Iranian game developers باشد
ممنون

johnsss
پنج شنبه 06 فروردین 1383, 23:17 عصر
این مثال رو در نظر بگیرید:
من یک شی با تعداد face ~ 56640 ایجاد کردم. این رو توی 3dsMax که render میکنم در حدود 5 دقیقه در دستگاه من طول میکشه که 100 فریم اون رندر بشه، توجه کنید که هیچ texture ای هم نداره. ولی وقتی همین رو روی loader که خودم نوشتم توسط OpenGL اجرا میکنم در حدود 5fps به من میده. یعنی 100 frame را در زمان 20 ثانیه اجرا میکنه. (در نظر بگیرید که من حتی به ان Texture هم دادم و 2 منبع نور هم اضافه کردم.
پس ایراد کار کجاست؟ من که هیچ polygon ای رو disregard نمیکنم و همه را میکشم. پس چرا در برنامه من که حتی detail level بالاتری داره این سریع تر اجرا میشه؟
یکی از دلایل میتونه این باشه که برنامه من از امکانات کارت گرافیک و به عبارت دیگر از OpenGL Renderer و امکانات GPU مستقیماً استفاده میکنه. در حالیکه در 3dsMax or Maya از
Renderer های خود Max & Maya استفاده میشه. دلایل زیاد تر میشه برای این اورد ولی این دلایل حرفه ای هستند و سر شما رو درد نمیارم.
موفق باشید.
به امید ایران آباد.
Johnsss

File 1: Picture of 3ds_loader, using OpenGL
http://web.axelero.hu/jack857/3ds_loader.JPG
File 2: Picture of 3dsMax Rendering 100 Frames.
http://web.axelero.hu/jack857/3ds.JPG

p.s.
همونطور که دوست عزیزم آقای anti evil گفت در بازی ها از تکنیک های خاصی استفاده میشه و در آنها اشیا رو به Low Polygon تبدیل میکنند که FrameRate زیاد تر بشه. در تقریبا هیچ بازی نخواهید دید که یک شی 50,000Face داشته باشه و این فقط به عنوان مثال بود.

Anti_Evil
جمعه 07 فروردین 1383, 04:35 صبح
الف)

مقایسه دو نرم افزار نظیر 3D Max و 3DS Loader در مورد سرعت rendering اشتباه است، حتی با فرض اینکه نرم افزار 3DS Loader تمام polygon ها را نمایش دهد.

البته قابلیت های کارت گرافیکی تاثیر بسزایی بر عملکرد نرم افزار 3DS Loader دارد و اگر نگوئیم 100% ولی حداقل 90% بر عملکرد نرم افزار 3D Max نیز تاثیر گذار خواهد بود.
در حقیقت نرم افزار غول پیکری نظیر 3D Max از بسیاری از عملگرهای Software Processing برای render نهایی بهره میبرد که این خود یکی از عامل های بازدارنده در سرعت rendering میباشد، با این حال قابلیت های کارت گرافیک میتواند در کیفیت و سرعت rendering تاثیر گذار باشد.

نرم افزار 3D Max در حین render کردن یک frame بسیاری از تنظیمات ( تنظیماتی نظیر Track View و ... ) و پیش فرظ ها ( پیش فرظ هایی برای خروجی زیباتر نظیر vertex shaders و ... ) را در نظر میگیرد و سپس به صورت تک تک شروع به rendering میکند.


... برنامه من که حتی detail level بالاتری داره ...

البته فکر کنم اشتباهی شده اما screen shot هایی که تهیه کردید نشانگر این بود که خروجی 3d max دارای کیفیتی بسیار بالاتر است.

دلایل دیگری هم وجود دارد که مقایسه بین این دو نرم افزار را غیر ممکن میکند که از حوصله توپیک خارج است.

ب)

شاید بتوان این دو نرم افزار را به گونه ای دیگر با هم مقایسه کرد، که البته آن را نیز غیر معقول میدانم.
از نظر منطقی مقایسه سرعت rendering بین این دو نرم افزار زمانی امکان پذیر است که بخواهیم 3DS Loader را با 3D Max - Design Mode مقایسه کنیم.
یعنی با 3d max در هنگام رسم و در محیط طراحی آن ...
در آن حالت به صورت لحظه ای همان اتفاقی می افتد که در 3ds loader می افتد ...
مقایسه به این شیوه تا حدود بسیار زیادی خطاست زیرا در عمل 3d max تنها رسم اشکال را انجام نمیدهد و بسیاری از عوامل دیگر در آن دخالت میکنند، ولی حتی با در نظر گرفتن این همه محدودیت نتیجه رضایت بخشی دارد.

یک 3ds loader ساده نوشته شده بوسیله OpenGL:
http://www.gametutorials.com/download/OpenGL/3DSLoader_OGL.zip

موفق و پیروز باشید،
هادی

Voldemort
دوشنبه 17 فروردین 1383, 23:56 عصر
Anti_Evil عزیز این سایتت چی شد؟ چرا راش ننداختی؟ بی صبرانه منتظر افتتاح و خوندن مطالب جالب شما هستم.

Anti_Evil
سه شنبه 18 فروردین 1383, 04:28 صبح
انشاالله تا چند دقیقه دیگر (;

Voldemort
پنج شنبه 18 تیر 1383, 06:20 صبح
این نرم افزار QRadiant رو از کجا میشه گیر آورد؟

Anti_Evil
پنج شنبه 18 تیر 1383, 16:45 عصر
http://www.barnamenevis.org/forum/viewtopic.php?t=6958

موفق باشید،
هادی