User:Java3D

From Wikipedia, the free encyclopedia

جاوا 3d علیرضا مسگری دانشجو کارشناسی رشته کامپیوتر نرم افزار دانشگاه بین المللی امام خمینی Blue_thundar_2020@yahoo.com

چکیده جاوا 3D یک سلسله کلاسهایی از جاوا میباشد که میتوان توسط آن اعمال گرافیکی را پردازش و اجرا نمود. در واقع این قابلیت را به برنامه نویس میدهد که اشیا هندسی را به طور مجازی دراندازه مختلف ودر سه بعد طراحی کند.دراین مقاله با بررسی کدهای مربوطه وکلاسهای موجود در زبان جاوا مشخص میشود که چگونه جاوا اشیا را در سه بعد نمایش داده وتحلیل آن از دید ما به چه صورت میباشد.در حقیقت جاوا این قابلیت را می دهد که بتوانیم اشیا را آنگونه که درطبیعت هستند به تصویر کشیده و دنیایی همچون دنیای واقعی را برای بیننده تداعی کنیم. کلمات کليدی: Scene Graph:یک نمونه از کلاسهای سه بعدی جاوا میباشد که میتوان توسط آن برای شیء مکان و موقعیت هندسی و صدا و نور و در حالت کلی ظاهر یک شی را تعریف کرد.

 پکیج1  : پکیج فضای نامی رامعرفی میکند که کلاس هادر آن ذخیره می شود.چنانچه عبارت پکیج به کار نبریم نام کلاس ها در پکیج پیش فرضی قرار میگیرند که فاقد نام است.
  Import :برای استفاده از پکیج های آماده در برنامه از این دستور استفاده می شود.
  com.sun.j3d.utils.universe: این پکیج محیطی مناسب برای کار با جاوا 3d را فراهم میکند تا بسیاری از برانامه هاوکلاسهای اولیه جاوا 3بعدی به راحتی اجرا شود.
                           .package1                                                                               

Canvas: در علوم مهندسى پارچه کرباسى يا کتانى يا علفى پارچه کانوادوزى و در اینجا صرفا نام مشخصه ای میباشد. متد2 : جملات جاوا در متد ها گردآوری می شوند. هر متد باید داخل یک کلاس باشد. هر متد یک نام دارد که با حروف کوچک شروع می شود و معمولآ یک کلمه است و کاری انجام می دهد. همیشه بلافاصله بعد از هر متد یک پرانتز باز می شود و به این طریق شما می توانید یک متد را تشخیص دهید. Constructors : سازنده ها . Vector: بردار مقدمه

فناوری تصاویر سه بعدی از زمان ابداع در دهه 1890 تاکنون با اقبال چندانی مواجه نشده و موانع مختلفی مانند هزینه بالای تولید، محدودیت تجهیزات نمایش در کشورهای مختلف و پایین بودن استقبال بینندگان، تهیه کنندگان را در استفاده از این فناوری جذاب محتاط کرده است.
  زمانی که یک گروه موسیقی در مراسم فستیوال کن سال 2007 برای اولین بار تصاویر سه بعدی از فیلمی مرتبط با موسیقی خود پخش کردند، حامیان فیلمهای مدرن سه بعدی آغاز دوران جدیدی از تولید فیلم در این صنعت را پیش بینی کردند. اما بعد از گذشت دو سال تهیه کنندگان مستقل و توزیع کنندگان این نوع از فیلمها 

2.Method در استودیوهای بزرگ هالیوودی همچنان در انتظار آغاز این دوران جدید به سر می برند.

  بسیاری از این تهیه کنندگان با مشکلات فراوانی مشابه آنچه استودیوها با آن مواجهند روبرو هستند که از آن جمله می توان به کمبود سالنهای سینمایی مجهز به سیستم پخش فیلمهای سه بعدی به خصوص در آسیا و اروپا و عدم استقبال مخاطبان برای خریداری عینکهای مخصوص تماشای این فیلمها اشاره کرد.بحران مالی نیز از دیگر مشکلات رایجی است که این شرکتها رابا پیچیدگی های فراوانی مواجه کرده است.
  اما با توجه به عملکرد برخی شرکتهای مستقل مانند والت دیسنی که در سال 2005 نسخه سه بعدی انیمیشن جوجه کوچک را ارائه کرد می توان گفت که تلاشهایی برای آغاز استفاده 

از این صنعت جذاب آغاز شده است.

  فناوری سه بعدی به مفهوم خلق و نمایش تصاویر متحرک در بعد سوم است که تصور عمق را در تصویر مسطح برای بیننده به وجود می آورد. این تصاویر معمولا با استفاده از تصویربرداری همزمان دو تصویر با استفاده از دو دوربین که با زاویه 90 درجه در کنار یکدیگر قرار داده شده اند به وجود می آید. زمانی که این تصاویر به نمایش درآید چشم آنها را مشابه یکدیگر تشخیص داده و قشر بینایی مخ این دو تصویر را به صورت یک تصویر واحد سه بعدی برای بیننده ترجمه می کند. 
 این شیوه در حال حاضر شیوه ای بسیار قدیمی به شمار می رود و امروزه با استفاده از رایانه های فوق پیشرفته و شیوه تصویربرداری رایانه ای یا CGI، محدوده عملیاتی تولید کنندگان تصاویر سه بعدی بسیار گسترده شده است به شکلی که نیاز به تجهیزات متعدد از جمله دوربینهای مخصوص برای ارائه این تصاویر از بین رفته است.
 اما در ساخت برنامه های سه بعدی نیز تدابیری اندیشیده شد که از جمله آنها نرم افزارهای گرافیکی سه بعدی همچون مایا و AoutoCad و... و زبان های برنامه نویسی با قابلیت گرافیک سه بعدی که ازجمله مهمترین آنها میتوان جاوا را نام برد.

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

 اینگونه به نظر می رسد که اگر خطای دید وجود نداشت این قابلیت نیز هرگز به وجود نمی آمد که در یک صفحه صاف مانیتور ویا تلویزیون بتوان تصاویری ایجاد کرد که بیننده آنها را سه بعدی تصور کند واز آن لذت ببرد.(شکل 2و1)

شکل 2و1: در این شکل یک اسکیت سوار را ملاحظه خواهید کرد.(باید به شکل دقت کنید وپس از تار شدن شکل مورد نظر دیده میشود.)همچنین در شکل بعد واژه 3D را به صورت سه بعدی میبینید.

خب ملاحظه شد که چطور خطای دید موجب بوجود آمدن تصاویر سه بعدی زیبا میشود.

 بهتر است بررسی کنیم که چطور این گونه میشود و چرا تصویری که ظاهرا در دو بعد می باشد و در صفحه ای مسطح ملاحظه میشود با کمی دقت به شکلی در سه بعد تبدیل می شود.
 حتما به یاد دارید که در دوره تحصیل دبستان و یا راهنما یی معلم و دبیر محترم تصاویر سه بعدی را چگونه نما یش میداد او نیز از همین خطای دید استفاده می کرد و اشکال سه بعدی را برای شاگردانش بهنمایش در می آورد در واقع این عملکرد خطا پذیر چشم را خاطر نشان میکند و نه تنها در این موارد بلکه در تمام برنامه ها و نرم افزار ها از این خطا استفاده مناسب میشود.(شکل 3)


شکل 3: نمونه ای از تصویر ساده سه بعدی . از جمله دلائل وجود حطای دید بودن دو چشم در انسان با یک میدان دید است.اگر به تصویر زیر دقت کنیم خیلی راحت تر نحوه استفاده برنامه ها و نرم افزار ها را از این خطا درک میکنیم .(شکل 4)

شکل 4: نحوه ایجاد خطای دید . جاوا از جمله بهترین و قویترین زبان های برنامه نویسی جاوا میباشد که این زبان قابلیت طراحی برنامه های گرافیکی در سه بعد را دارد و در زمره بهترین ها در این زمینه به حساب می آید .

  جاوا با پکیج های گرافیکی خود توانسته از خطای دید انسان بهترین استفاده را کند و دنیایی سه بعدی را همچون دنیای واقعی بوجود آورد.

Package: com.sun.j3d.utils.universe : این پکیج محیطی مناسب برای کار با جاوا 3d را فراهم میکند تا بسیاری از برانامه ها و کلاسهای اولیه جاوا 3بعدی به راحتی اجرا شود.

SimpleUniverse() :یک جهان مجازی ساده تولید میکند. SimpleUniverse(Canvas3D canvas3D): یک محیط مجازی با پارامترهای canvas3D میسازد. setNominalViewingTransform() Method : کلاس ViewingPlatform برای ساختن شاخه های گرافیکی در scene graph جاوا 3d میباشد و معمولا برای ارتباط با متد getViewingPlatform ازکلاس SimpleUniverse میباشد. void addBranchGraph(BranchGroup bg) : برای اضافه کردن شاخه های گراف در دنیای مجازی جاوا استفاده میشود به این صورت که نقاطی را در محل مورد نظر قرار میدهد و با اتصال نقاط شکل مورد نظر را میسازد. ViewingPlatform getViewingPlatform():این متد نقاط داده شده را از متد ()void setNominalViewingTransform میگیرد و باتوجه به آنها مکان شی مورد نظر را ازائه میکند. MainFrame Constructor (partial list) : این کلاس برای ساخت applet در application است که البته البته میتونه متد main() نداشته باشد. برای مثال برای شروع نوشتن یک برنامه گرافیکی سه بعدی در جاوا باید اینگونه شروع کرد: MainFrame extends java.awt.Frame and implements java.lang.Runnable, java.applet.AppletStub, and java.applet.AppletContext. Canvas3D Constructor : این کلاس به کلاسهای canvas و کلاسهای AWT (Abstract Windows Toolkit) تقسیم میشود و این کلاس حداقل باید به یکی از شاخه های گراف scene graph ارجاع داده شود . Canvas3D(GraphicsConfiguration graphicsconfiguration) Transform3D Default Constructor Transform3D Methods (partial list) این کلاس و متد آن موجب نمایش انتقال و چرخش و مقیاس گذاری و... میشود. void rotX(double angle) void rotY(double angle) void rotZ(double angle) void set(Vector3f translate)

با استفاده از عبارات ساده و قابل فهم موجود در بالا میتوان اشکال هندسی را در سه بعد و با هر اندازه که میخواهیم رسم کنیم.(شکل 5)

شکل 5 : این شکل با استفاده از کدهای ساده موجود در جاوا بوجود می آید. بردار ها در جاوا تدابیری برای نمایش بردار ها در سه بعد اندیشیده شده است که موجب می شود برادار ها را همچون دنیای حقیقی در سه بعد طراحی و به نمایش در آورد. Vector3f Constructors : به تنهایی دارای سه بعد است که در جاوا با سه مولفه x,y,z مشخص شده و ابعاد مشخصی را در بر خواهد داشت. Vector3f(float x, float y, float z) : این متد ابعاد سه گانه ارتفاع عرض و طول را از کاربر در یافت میکند و اختیار این بردار عملا به دست کاربر است. ColorCube Constructors : با استفاده از این متد می توانیم ابزار کشیده شده و مشخص شده را به هر طریق لازم رنگ و آب و شکل دهیم.( شکل 6)




شکل 6

نتایج

پس در آخر باید گفت که اشکال سه بعدی در دنیای غیر واقعی بر پایه خطای دید انسان ها بنا شده است ودر بسیاری از زبان های برنامه نویسی از این قانون استفاده شده و توانسته است دنیایی واقعی را برای ما و در سه بعد به شکلی  مهیّج ترسیم کند که جاوا از جمله این زبان ها است و موضوع مورد بحث در این مقاله نیز همین بود.

نتيجه‌گيری و جمع‌بندي تمام برنامه های گرافیکی و زبان های برنا مه نویسی بر پایه خطای دید بنا شده است. مراجع

Getting Started with the Java 3D™ API

در 6  pdf  مجزا

www.Brnamenevis.com www.national.blogfa.com www.uldoz.com www.servicekar.com www.ariaclick.com http://java.sun.com/products/javamedia/3d/collateral