درس دوم

در جاوا تری دی Java 3D

درس دوم:

قبل از این که بریم سره برنامه بعدی ، بزارید یه نموره در مورد SimpleUniverse توضیح بدم ،

SimpleUniverse زیر کلاس VirtualUniverse می باشه و بسیاری از ابزار هایی که یه برنامه نویس سه بعدی کار مبتدی به اون نیاز داره رو در اختیار ما میزاره ، همونطور که تو مثال قبل مشاهده کردید خیلی سریع یه چیزی مثل فریم که پس زمینه اش هم یه بوم (Canvas) بود اومد بالا بدون اینکه ما دو خط کد اضافه بزنیم، از ویژگی های مهم این کلاس اینه که سه چیز رو برای ما درست می کنه :

1)Local

2)Viewer

3)ViewingPlatform

که در مورد این سه چیز بعداً بیشتر صحبت می کنیم

و اما درس جدید:

در یک صفحه با گرافیک سه بعدی ممکنه اشیای زیادی وجود داشته باشه ، یک روش مدیریت درست درمون این اشیا اینه که اونا رو دسته بندی کنیم ، و بین هر یک از دسته ها بعداً ارتباط معنایی برقرار کنیم ، که این دو کار رو بهش گروه بندی و تشکیل گراف می گن ، گروه بندی به این معنیه که اشیا مرتبط رو بزاریم کنار هم ، مثل خود من و شما دست و پا و چشم و ... و سایر اندام هامون گروه بندی شدن به گروهی به نام "خود ما" اضافه شدن ، مثلاً گروهی به نام "سیف الله" :) ، تشکیل گراف اینه که این گروه ها رو به هم ربط بدیم ، مثلاً گراف هم اتاقی که می تونه شامل 5،6،7 و ... گروه (هر نفر به عنوان یک گروه) باشه

وقتی یه Universe ایجاد می کنیم باید حداقل یه گروه داشته باشیم ، برای ایجاد گروه در جاوا تری دی از کلاس Group و زیر کلاس های اون استفاده می کنیم

BranchGroup : زیر کلاس Group می باشد و ما از این به بعد اشیایی رو که می سازیم به شی ای از این نوع کلاس اضافه می کنیم ، و در نهایت پس از اضافه کردن اشیا مورد نظر به این BranchGroup ، خود BranchGroup رو به دنیای گرافیکیمون اضافه می کنیم، به مثال زیر توجه کنید:

 



تو مثال بالا یه مکعب رنگی ساختیم (ColorCube) با پارامتر 0.5 (که میزان scale رو نشون میده) و اون رو به گروه و گروه رو به دنیای گرافیکی اضافه کردیم ، توجه کنید که اگه مثال بالا رو اجرا کنید چیزی مشاهده نمی کنید :) :) :) ، هدف این مثال فقط این بود که با نحوه مدیریت شی هایی که می سازید آشنا بشید ، برای نمایش اون مکعب باید یه سری چیز دیگه رو هم مشخص کنید :

1) اون شی در کجا قرار داده بشه (مختصات هندسی شی)

2) دنیامون رو از چه نقطه ای ببینیم (مختصات هندسی دنیا )

ولی به جای دو تا گزینه بالا می تونیم از میون بر استفاده کنیم(فعلاً واسه نیاز های ما این راه جواب میده):

متد setNominalViewingTransform پنجره دیدی که برای دنیامون هست رو اونقد در محور Z عقب میاره تا شی ای که قصد دیدن اون رو را داریم نسبت به محور X ها در فاصل 1- و 1 نرماله بشه ( ها!!!!!!) (برای اینکه منظورمو بهتر بفهمید تو کد زیر پارامتر ورودی ColorCube رو عوض کنید تا مطلب جا بیفته )

یه نکته در مورد محور ها:

از چپ به راست پنجره محور جهت دار X

از پایین به بالای صفحه محور جهت دار Y

از ته صفحه به سمت ما محور جهت دار Z

و این هم کدی که بتونه اون مکعب رنگیه رو نشون بده:

کد رو می تونید از اینجا دانلود هم کنید:

http://safecomp.persiangig.com/CODE/Second.java

و

اگه این کد رو اجرا کنید باید نتیجه اش این شکلی باشه:

باور کنید شکل بالا یه مکعبه :) ، چیه ؟؟؟ باور نمی کنید ؟؟؟ فکر می کنید مستطیله؟؟؟ نه مکعبه ،منتها چشم ها را باید شست ، جور دیگر باید دید!!!! بعداً که تونستیم این رو توی صفحه جا به جا کنیم اونوقت باور می کنید که یه مکعبه :)