View Full Version : آوردن object از قبل طراحی شده به opengl
grando_alireza
جمعه 26 فروردین 1390, 23:01 عصر
سلام
من می خوام یک object رو در یک برنامه ی دیگه مثلا 3d max یا برنامه ای دیگه طراحی کنم و بعد این object رو توی opengl لود کنم و همچنین بتونم اندام این object رو توی برنامه ای که می نویسم تکون بدم! مثلا یک شی ای که یک بازو داره-من می خوام بازوی این شی رو تکون بدم.
چطوری می تونم این کار رو انجام بدم؟ object باید از چه نوعی باشه؟
pswin.pooya
شنبه 27 فروردین 1390, 12:13 عصر
خب شما مي توني لودرهاي مختلفي براي قالبهاي مختلف پيدا كني. مثلا ميتونه از 3ds و يا obj براي مشهاي استاتيك استفاده كني.
لودر obj:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=25
لود كردن .3ds:
http://www.gamedev.net/page/resources/_/reference/programming/sweet-snippets/loading-3ds-files-r1259
براي انيميشنهاي اسكلتي گزينه هاي كمتري داري و يكي از بهترين اونها ms3d (milk shape هست:
مقاله لود كردن ms3d:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=31
يكي از بهترين گزينه ها .x هست كه خيلي راحت ميتوني هم اكسپورتر و هم لودر براش پيدا كني.
اگر در زمينه لود كردن فايلهاي 3d و ... تجربه نداري بهتره كه كتاب زير رو بخوني:
focus on 3d models
يه كتابخونه حاضري به اسم assimp براي لود كردن فايلهاي مدل وجود داره و يه رنج بزرگ از قالبها رو ساپورت ميكنه:
http://assimp.sourceforge.net/
اما در مورد اكسپورتر بايد خودت دست به كار شي.
grando_alireza
سه شنبه 30 فروردین 1390, 22:38 عصر
سلام
اگر من یک object رو با پسوند 3ds لود کنم چه جوری می تونم تو برنامه دستکاریش کنم؟ مثلا فرض کنید اگر object ما یک ماشین باشه چه جوری می تونم تو برنامه چرخ این ماشین رو بچرخونم؟
خیلی ممنون از راهنماییتون
pswin.pooya
چهارشنبه 31 فروردین 1390, 01:06 صبح
تا اونجا كه يادم مياد داخل فرمت 3ds آبكتهاي مختلف از هم جدا بودن. و هر كدوم يه اسم داشتن. ميتوني از اون اسم براي پيدا كردن آآبجكتت استفاده كني. اما راه راحتر اينه كه چرخها رو توي يه فايل ديگه بذاري.
فرمتهاي اسكتلي معمولا امكان bind رو فراهم مي كنن و فكر كنم md3 بود كه يه چيز مثل تگ داشت و امكان متصل شدن اشياء مختلف رو ميداد.
اما اينكه چه جوري چرخ رو به چرخوني بر ميگرده به برنامه نويسي OpenGL و 3D كه معمولا براي مبتديها دستور glRotatef پيشنهاد ميشه.
ژوپیتر
چهارشنبه 31 فروردین 1390, 13:50 عصر
3dmax در یکی از فرمتهای ذخیره سازیش به صورت ASCII File هم ذخیره میکنه که میتونی راحت فایل رو بخونی و هر شیا رو با نام، مرکز، ابعاد رنگ و غیره ذخیره میکنه.
من چند سال پیش با DirectX کار میکردم که کامپوننتی رو روی ماکس نصب کردم که برای اکسپورت فایلهای .X بود و راحت در Direct3D استفاده میکردم، اگه با API های OpenGL کار میکنی، فکر کنم خود API ها فایلهای .X رو لود میکنند.
pswin.pooya
چهارشنبه 31 فروردین 1390, 18:31 عصر
فکر کنم خود API ها فایلهای .X رو لود میکنند
OpenGL یه API خالی هست یا به اصطلاح raw و هیچ فرمت فایلی رو ساپورت نمی کنه. خود شما باید اون فرمت رو براش تعریف کنی
mohamad.zakery
پنج شنبه 19 آبان 1390, 06:31 صبح
براي اينكه بخواهين چرخ ماشين بچرخه معقول نيست در api اين كار رو بكني!!!
اينكار بايد در مدل سه بعدي بصورت انيميشن شود.
ايده بدين صورت است كه همه حالات ممكن براي يك مدل را در نظير مي گيرد و سپس اون مدل را مي سازيد. در برنامه يا گيم به فريم يا فريم هاي مورد نظر دسترسي پيدا مي كنيد.
مثلا براي يك انسان:
راه رفتن
تير زدن
نشستن
و ....
انيميشن هاي اين ها همه را در يك مدل سه بعدي ميسازي
زمان استفاده مثلا به راه رفتن نياز داري
ميروي سربخت لود كردن فريم هاي راه رفتن
همين!
Ananas
جمعه 27 آبان 1390, 20:51 عصر
سلام.
میتونید اطلاعات Object مثل مش و متریال و انیمیشن و ... رو با MaxScript تو یه فایل باینری با هر ترتیبی که دوست داری بنویسی و ذخیره کنی و در برنامت با همون ترتیب اونو لود کنی .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.