Collada Export

++Hadi++

Active Member
سلام
خسته نباشید ...
یه سوال
در اکسپورت کردن فایل های کولادا برای استفاده در papervision ، من از 3dmax 2009 ، فایلی رو تولید و با پسوند dae اونو سیو کردم ولی در ورود اون به فلش و papervision با راه و رسم درستش ، ارور داد (ارور خطای زمان اجرا ) . بعد رفتم در اینترنت و سرچ کردم و فهمیدم که اکسپورت کولادای 3d max ، مشکل داره ... این بود که دیگه سعی کردم پلاگین مخصوصش رو پیدا کنم . پس ColladaMax2009.zip رو دانلود و نصب کردم . آیا در استفاده از اون باید تدابیر خاصی رو در فایل خروجی بیندیشم یعنی مثلا بعد از اکسپورت باید در فایل کولادا یه شی متریال لیست درست کنم ؟
راستی تعداد face های مرغوب اشیای 3 بعدی ساخته شده در 3 دی مکس ، برای کار در فلش (papervision ) چند تا هست ؟
مرسی از شما ...
 

arjmand200

Member
در باره قسمت اول سوالت من خودم از مکس استفاده نمیکنم ( به نظرم خیلی بیخوده ) من از بلندر استفاده میکنم اما اینکه مشکل داری یه توضیحاتی میدم ببینید pv واسه هر فرمتی میشه گفت یه parser داره (مکس و بلندر ، cinema4d , google sketchup ) البته همه این parser ها کار میکنن و مشکلی ندارن فکر کنم شما یه جایی اشتباه کردی
من خودم از dae استفاده میکنم و اینجا یه نقطعه ای که هست اونم اینه که calloda 2 ورژن داره ورژن 1.3.1 و یکی هم 1.4 حالا فرقشون تو اینه که ورژن 1.3.1 انیمیشن و فیزیک رو درست ساپورت نمیکنه و مزیتش تو اینه که سبکه اما 1.4 همه چی رو ساپورت میکنه و یکم تجزیش زمان بره واسه لود اونم نباید از کلاس Collada استفاده کنی چون واسه لود متریال مشکل داره (البته زمانی که متریال رو داخل blender زده باشی و گرنه داخل خود pv با متریال لیست کار میکنه ) باید از کلاس DAE استفاده کنی (البته در هر صورت اگه بخوای فایلی رو که وارد میکنی انیمیشن هم داشته باشه " حالا این انیمیشن چه داخله blender ساخته بشه یا داخله pv با کلاس AnimationClip3D ساخته بشه " حتما دیگه باید از این parser استفاده کنی ) اما اینکه چطوری کار کنی :
ببین واسه این که این اسکریپت تو بلندر کار کنه باید ورژن pythone ی که نصب کردی 2.5.2 باشه وگرنه این اسکریپت اجرا نمیشه (البته این اسکریپت با نصب بلندر نصب مبشه ) بعد تو بلندر میری قسمت export اونجا بسته به اون چیزایی که گفتم ورزن 1.3.1 یا 1.4 رو انتخاب میکنی حالا اگه داخله بلندر متریال رو داده باشی باید use Relative paths رو فعال کنی تا مسیر متریال رو نسبی بده و متریال رو کنار فایل dae بذاری بعدا خیلی راحت میتونه کارت رو انجام بدی
ااما قسمت دوم سوالت : pv بر خلاف اکثر نرمافزارهای سه بعدی که بر حسب Polygons کار میکنن تمامی ابجکتها رو با Triangles میزنه یعنی بیس کاری pv با Triangles هست (واسه اینکه منظورو بفهمی کلاس Sphere رو باز کن اونجا میبنی که از کلاس Triangle3D استفاده کردن ) اما تو pv بیشترین مقدار Triangle3D نباید از 3000 تا بیشتر باشه ( حدود 1500 Polygons ) البته این مقدار تا اونجایی که من فهمیدم ماکزیمم نیست ولی خودش واسه یه کار معمولی زیاده (فکر کنم جواب اون دوستمون رو هم دادم ) حالا به هر حال
بای :wink:
 

++Hadi++

Active Member
سلام جناب ارجمند
خیلی ممنون
اینکه بهترین گزینه برای مدلسازی برای papervision و الباقی کلاسهای 3 بعدی سازی فلش ، blender هست قبول ولی من باید فورا یه پروژه رو تحویل بدم و فقط هم به 3d max وارد هستم و وقت یادگیری blender رو ندارم . در پروژه ام هم انیمیشن شاید باشه و احتمال قوی هم نباشه .
بهترین راه اکسپورت مدل و متریال از 3 دی مکس به papervision چی هست . یعنی شما چه راهی رو پیشنهاد می کنید ؟از parser خود 3 دی مکس استفاده کنم ؟(آیا مشکلی رو با متریال و ... نخواهد داشت ؟)
یا از parser خود dae استفاده کنم ؟
پس متریالها رو چیکار کنم ؟ همش ارور می ده و می گه که نشناخته . با چه plugini واسه اکسپورت dae استفاده کنم ؟
بعد از اکسپورت چطور می تونم کارها ر و بدون ارور پیش ببرم ؟(ارور متریال و ... آیا باید در فایل collada تغییرات ایجاد کنم یا در کدهای as3 متریال لیست درست کنم ؟)
آیا می تونم ورژن کلادامو انتخاب کنم ؟
باز از شما متشکرم.
 

++Hadi++

Active Member
من از چندتا plugin استفاده کردم، اونم برای 3d max ک
ColladaMax_FREE_3.05C
OpenCOLLADA_3ds_Max_1.2.4_x86
در کل در مورد متریالش مشکل داره .
من می خوام یا متریال color یا bitmap 3 دی مکس رو به اشیای ساخته شده با 3 دی مکس بدم ولی در مورد متریال ارور می ده و می گه که متریال رو پیدا نکردیم با اینکه اسم متریال و اشیای داخل صحنه 3 دی مکس رو چک کردم و به درست ترین روشش به اونا دسترسی پیدا کردم ولی در کل نمی دونم که چطور می تونم بافت ها و تصاویر بیت مپی رو کنار کولادا قرار بدم که از کولادا به تصاویر دسترسی پیدا کنه ؟؟؟!!!
در هر صورت من یه روش درست و حسابی می خوام که از 3D max بتونم یه کولادا یا خود فایل 3 دی مکس رو (در هر صورت اشیای 3 دی مکس رو ) وارد papervision3d کنم . همین .
باور کنید اتقده تو این سایتای فینگلیش سرچ کردم که پاک گیج شدم ...
حالا شاید از parser خود مکس یا از کلاس DAE واقع در papervision استفاده کنم ولی نمی دونم ؟؟؟ در مورد متریال اونو پیدا نمی کنه!!!
بای...
 

arjmand200

Member
فایل نهایتون رو تو بلندر ایمپورت کنین مشکلتوتن برطرف میشه !
هیچ ارروی هم پیش نمیاد
تا اونجایی که میدونم این اسکریپت رو با maxScript نوشتن که اونم اصلا مشکل داره
 
آخرین ویرایش:

++Hadi++

Active Member
یعنی فایل 3 دی مکسمو تو بلندر ایمپورت کنم ؟ یا فایل Dae رو ؟
 

++Hadi++

Active Member
آقا مشکل حل شد
فقط باید در 3 دی مکس ، خروجی 3ds بگیرین (البته متریال بیت مپو در اون اعمال می کنیم) و بعد ، مدل خروجی رو به بلندر پاس می دیم و در اون گزینه textered رو می زنیم و خروجی کولادای 1.4 می گیریم و با نوشتن دستورات زیر در فلش ، مشاهده می کنیم که همه چیز OK هست .
فقط :
1- باید عکس ها و تصاویر بیت مپ کنار فایل dae باشن .
2- از کلاس DAE در papervision استفاده کنیم .

PHP:
package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
 
    import org.papervision3d.cameras.CameraType;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.core.proto.MaterialObject3D;
    import org.papervision3d.events.FileLoadEvent;
    import org.papervision3d.events.InteractiveScene3DEvent;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.objects.parsers.DAE;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.BasicView;
    import org.papervision3d.view.Viewport3D;
 
    [SWF(width="640", height="480", frameRate="30", backgroundColor="#eeeeee")]
    public class ColladaExample extends BasicView {
        private var collada:DAE;
 
        public function ColladaExample ()    {
            super(640, 480, true, true, CameraType.FREE);
            init();
        }
 
        private function init():void {
            camera.z = -50;
            camera.y=50;
            camera.rotationX=40;
            camera.zoom = 200;
            addCollada();
        }    
 
        private function addCollada():void {
            collada = new DAE();
            collada.load("Box02.dae");
            collada.x=0;
            collada.y=0;
            collada.z = 0;
            collada.material = new ColorMaterial(0x333333,1,true);
            collada.addEventListener(FileLoadEvent.LOAD_COMPLETE, onColladaLoaded);
            scene.addChild(collada);
            camera.lookAt(collada);
        }    
 
        private function onColladaLoaded(e:FileLoadEvent):void {
            collada.removeEventListener(FileLoadEvent.LOAD_COMPLETE, onColladaLoaded);
            startRendering();
        }
 
        override protected function onRenderTick(event:Event=null):void {
            collada.rotationY += 2;
            super.onRenderTick(event);
        }
    }
}
بای...
 

++Hadi++

Active Member
سلام یه سوال در مورد متریال رنگ یکنواخت و ثابت که shade هم داره (مثل متریال فلزات رنگی ) چی کار کنم ؟
فرض کنین که من یه مدل از ترکیب چند متریال دارم . فرض کنین همش هم رنگی هست ؟
 

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

بالا