collada interactive material در papervision3d

++Hadi++

Active Member
سلام دوستان.
مدلی رو در 3دیمکس ساختم و اونو متریال تصویر دادم و وارد بلندر و بعد وارد فلش کردم . با یه دستور for ... in ، حالت interactive همه متریالاشو true کردم و در آخر با دستور getchildByName سعی کردم به تکه های مختلف مدل که در 3 دی مکس مدلسازی و نامگذاری شده بود دست پیدا کنم تا رویداد موس (مثل لمس موس یا کلیک ) به اونها بدم . حتی سعی کردم این رویدادها رو به خود شی اصلی DAE هم بدم . ولی interactive نشد و فانکشن هایی هم که به اونا نسبت دادم اجرا نشدند . ایا کسی هست مرا یاری کند ؟؟؟
 

++Hadi++

Active Member
مرسی دوستان
مسئله کاملا یافت شد
از همه شما سپاسگزاریم ...
 

++Hadi++

Active Member
بهترین راه collada interactive material in papervision3d 2.1

اینم بهترین لینکی که به من کمک کرد :
http://www.packtpub.com/article/papervision3d-external-models-part2
البته برای اینتر اکتیو کردن متریالها ی یک شی collada 1.4 با DAE parser و تنظیم اون در بلندر و ایمپورت کردن در papervision 2.1 و فلش CS4 ...
حالا به راحتی می تونم به child های کولادام دستورات Mouse Event یا رویداد های کیبورد رو بدم .
به این عبارت خیلی خیلی خیلی توجه کنید :

Next, we define a listener waiting for clicks on an object nested inside the model. This needs to be set for every child object you want to be clickable. Therefore, we use model.getChildByName and search for a nested object. You can set the second parameter recursive to true, in order to search for a nested object inside a nested object. In fact, the model is a child object of the DAE class that was used to load it
.
PHP:
model.getChildByName("Cube_001", true).addEventListener
(InteractiveScene3DEvent.OBJECT_CLICK, click);
The name Cube_001 was automatically defined inside the modeling tool. You can also see this name when Papervision3D parses the object and traces its name in the output window.
INFO: DisplayObject3D: Cube_001
To see this you can publish the previous project that also loads the cube created in Blender.

و اینم یکی از بهترین راه ا برای true کردن interactive تمام متریالهای یک کولادا هست :
PHP:
private function setInteractiveMaterials(targetObject:DisplayObject3D, value:Boolean):void
        {
            for each(var mat:MaterialObject3D in targetObject.materials.materialsByName)
            {
                mat.interactive = value;
            }
        }
و این یکی از بهترین راهها برای دسترسی به children های یک کولادا و دادن EventListener خاص به تمامی فرزندان یک مدل collada هست :
PHP:
private function addColladaEvents(displayObject:DisplayObject3D, eventType:String, listener:Function):void
        {
            displayObject.addEventListener(eventType, listener);
 
            for each(var child:DisplayObject3D in displayObject.children)
            {
                this.addColladaEvents(child,eventType, listener);
            }
        }
دست همگی درد نکنه واقعا خسته نباشید ...:sad:
هم متکلم وحده بودیم هم مع الغیر ... هم جای خودمون بودیم هم جای مخاطب ...:-?
بای...
 
آخرین ویرایش:

lololumiere

Member
دوست من شما نمیتونی یه مبحث در مورد آموزشflash 3d ساختن بدی؟
در حد مبتدی
 

++Hadi++

Active Member
دوست من شما نمیتونی یه مبحث در مورد آموزشflash 3d ساختن بدی؟
در حد مبتدی
سلام
1- برای ساخت فلش 3 بعدی 3 تا کلاس مهم یافت می شه البته کلاسهای دیگه ای هم هستن ولی این 3 تا رو بورسن :
papervision3d و away3d و alternativa3d
هر کدوم قابلیت های خاص خودشونو دارن مثلا برای انجام پروژه های کوچیک از pv3d و برای انجام پروژه های یکم بزرگتر از قبلی از away و برای ساخت بازیهای 3 بعدی از alternativa استفاده می کنن .
2- برای آموزش بهترین سایتا ، سایتای خارجی هستن که بی برو برگرد کمکت می کنن . برای آموزش papervision3d که عمومی ترین اونهاست ، آقای ارجمند در همین فروم و در سر تایپیک ، آموزش خوبی دادن و همینطور در امضای بنده ، سایتی رو معرفی کردم که فقط کافیه کلیک کنین و به سایت شخصی ایشون تشریف ببرین .
بای...
 

arjmand200

Member
من تو وبلاگ آموزش کامل intractivity material رو داده بودم اصلا اینترکتیویتی تو pv یه روال داره و توی همه ابجکتها (چه از نوع primitives یا calloda یا 3d text یا 3d vector و حتی تو 3d effect ) هم یکیه و اون اینه که اولا باید viewport3d یا basicview که متدی به اسم intractive داره رو true کنی بعد متریال اون ابجکت ( که میتونه یکی از موارد بالا باشه ) رو که اونم متدی به همان اسم داره رو باید true کرد و اینم بیشتر مربوط میشه به 3d collision hit test که یک مبحث پیچیده ریاضیه مانند رویه ها و چینش نقاط (یادمه تویه یک کتاب که خیلی وقت پیش خونده بودم یک مبحث آموزشی تو این مورد گذاشته بودن که واقعا خیلی جالب بود ) ولی در کل برای راحتی کار شما همین 2 مورد رو در نظر داشته باشین کافیه !

آقا هادی خیلی پیشرفت کردین (بنده باید شاگردی شما رو بکنم :wink: ) اگه لطف کنین !
 
آخرین ویرایش:

++Hadi++

Active Member
خواهش می کنم استاد
ما هیچوقت اساتید خودمونو فراموش نمی کنیم ... شما خیلی خیلی به جامعه فلش کارای 2 بعدی و 3 بعدی خدمت بزرگی رو ارائه دادین و لطف بزرگی رو کردین .
من هم به نوبه خودم از شما سپاسگزارم...
والا دنبال راههای زیادی گشتم تا شاید بتونم متریال های یه آبجکت 3 دی رو که از کولادا لود می شه رو اینتراکتیو کنم ولی هر چی دنبال کردم به جایی نرسیدم . این شد که در یکی از سایتای خارجی روش بالا رو پیدا کردم و کاملا جواب داد . وقتی یه مثلا مکعبی که در بلندر ساخته شده رو وارد pv3d کردم ، اسامی displayObject3d که در پنجره output بودند رو یادداشت کردم و همه اونها در یه (displayobject (به اسمی که الان خاطرم نیست ولی یه SCENE در اون بود) قرار داشتند و الباقی اشیای 3 بعدی در کولادا در اون بودند و بالاخره تونستم با استفاده از اون و بعد با استفاده از نام هر تکه به جواب برسم.
باز ممنون از لطف شما دوست عزیزم...
بای...
 

جدیدترین ارسال ها

بالا