اموزش papervision

شروع موضوع توسط javadsava ‏1 آگوست 2009 در انجمن سه بعدی سازی در فلش و موتور های سه بعدی

  1. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    به نام خدا

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


    من در اخرهای جلسه قبل انواع متریالها رو گفتم و 11 تا از اونها رو اسم بردم و اونجا هم گفتم که از این متریالها شاید کلا از لحاظ کار سه تاشون با هم فرق دارن و اکثر اونها شبیه هم هستن


    خوب اولین قسمت رو با BitmapAssetMaterial شروع میکنم قبل از هر کاری اول ببینیم متدهای این کلاس چیه :

    PHP:
    public function BitmapAssetMaterial( linkageID:String, precise:Boolean = false )

    یادم رفت این رو بگم که برای مثال دیگه با همون مثال قبلی شروع میکنم و برای صرفه جویی در زمان مثال دیگه نمیزنم

    خوب اولین پارامتر نشون میده که ورودی از نوع bitamData هستش یعنی عکسی که وارد کتابخانه شده و به اکشن اسکریپت export شده
    البته این نوع متریال رو من زیاد توصییه نمیکنم چون حجم کار رو افزایش میده

    اینم نمونه کد که میتونین تستش کنین البته این رو هم بگم که من عکس رو با این اسم BMPMaterial اکسپورتش کردم:


    PHP:

    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.materials.*;


    var viewport:Viewport3D = new Viewport3D(800,600);
    var scene:Scene3D = new Scene3D();
    var camera:Camera3D = new Camera3D();
    var renderer:BasicRenderEngine = new BasicRenderEngine();
    var material:BitmapAssetMaterial = new BitmapAssetMaterial("BMPMaterial",false);


    material.doubleSided = true;

    material.smooth = true;
    material.tiled = true;

    var materials:MaterialsList = new MaterialsList(material);
    materials.addMaterial(material, "all");


    addChild(viewport);
    var sphere:Cube = new Cube(materials,550,550,400,20,20,20,0,0);
    sphere.x =0;
    sphere.y = 0;

    scene.addChild(sphere);
    addEventListener(Event.ENTER_FRAME , mainFun);
    function mainFun(e:Event) {
        sphere.rotationX =stage.mouseY/20
        sphere.rotationY += 10;
        renderer.renderScene(scene, camera, viewport);
    }

    --------------------------------------------------

    2) BitmapColorMaterial : این متریال تقریبا کار colorTransform رو انجام میده و متدهاش اینه :

    PHP:
    public function BitmapColorMaterial(color:Number=0xFF00FF, alpha:Number=1)

    که فکر نکنم نیاز به توضییح باشه

    3)BitmapFileMaterial تقریبا مناسبترین نوع متریال که واسه وب مناسبه و عکس رو از بیرون لود میکنه . کار کلاس loader رو میکنه و حجم کار هم خیلی کم میشه :

    PHP:
    public function BitmapFileMaterial( url :String="", precise:Boolean=false )

    که مشخصه url هم مسیر فایل تون هستش میتونین با قرار دادن این مقدار (URLRequest.url) یه لودینگ هم واسه متریالی که داره لود میشه بزارین طوری که اول از نوع MovieMaterial استفاده کنین بعد که فایلتون لود شد این متریال رو null کنین و این متریال رو ست کنین (البته ترفند زیاده و من دیگه نمیخوام اینارو توضییح بدم و این دیگه به خلاقیت خودتون بستگی داره)

    4)BitmapMaterial : اینم هم یه انتخاب خوبیه واسه اونایی که میخوان خودشون از طریق کلاس bitmapdata یه متریال بسازن

    PHP:
    public function BitmapMaterial( asset:BitmapData=null, precise:Boolean = false)

    asset نام bitmapdata هستش که ساختین (یه مثال میزنم تا کامل منظورمه رو بدونین)

    فقط کافیه این خط کدها رو به پروژتون اضافه کنین :

    PHP:
    var bmp:BitmapData = new BitmapData(400,400,false,0xFF0000*Math.random()+0xF0);
    bmp.perlinNoise(40,10,10,10,false,true,7,false,null);
    var material:BitmapMaterial = new BitmapMaterial(bmp,false);

    من در این جا با perlinNoise یه افکت خیلی ساده ساختم واسه این که بدونین چطوری میشه از این متریال استفاده کرد


    5)BitmapViewportMaterial : اما دوستان این متریال

    PHP:
    public function BitmapViewportMaterial(bitmapViewport:BitmapViewport3D, precise:Boolean=false)

    این متریال یکم پیچیدس فقط میتونم این رو بگم که شما میتونین چندین viewport رو به متریال نسبت بدین ، درسته که مقدار پردازش فایل خیلی افزایش میده (چون موتور رندر باید دوبار از viewport رندر بگیره ولی کارایی خیلی زیادی داره که بعد در موردش مثال خواهم زد )
    در پارامتر اول ما باید کلاس :BitmapViewport3D وارد پروژه کنیم که این کلاس دقیق همانند viewport هستش که قبلا گفتم و متدهاش هم عین اونه :
    PHP:
    public function BitmapViewport3D(viewportWidth:Number=640, viewportHeight:Number=480, autoScaleToStage:Boolean = false,bitmapTransparent:Boolean=false, bgColor:int=0x000000,  interactive:Boolean=false, autoCulling:Boolean=true)

    اگه خواستین باهاش کار کنین اول اون رو وارد پروژتون کنین :

    PHP:
    import org.papervision3d.view.BitmapViewport3D



    6) BitmapWireframeMaterial : دقیقا شبیه کلاس (متریال ) WireframeMaterial هستش . بخاطر همون یکیش رو توضییح میدم

    PHP:
    public function BitmapWireframeMaterial(color:Number=0xFF00FF, alpha:Number=1, thickness:Number=3)

    7) ColorMaterial : یه متریال خیلی ساده دقیقا شبیه BitmapColorMaterial

    PHP:
    public function ColorMaterial( color:Number=0xFF00FF, alpha:Number = 1, interactive:Boolean = false )

    8)MovieAssetMaterial : شبیه BitmapAssetMaterial که چندتا متد اضافه داره :

    PHP:
    public function MovieAssetMaterial( linkageID:String="", transparent:Boolean=false, animated:Boolean=false, createUnique:Boolean=false, precise:Boolean = false)

    animated واسه اینه که اگه متریالی که تو کتابخانه دارین اگه داخلش انیمیشن داره papervision رو مجبور کنه که با دقت یکم بیشتری این متریال رو رندر کنه اگه توی حالت false باشه بهتره !

    و اما createUnique : نمیدونم با مفهوم instance و copy توی 3dmax اشنا هستین (من خودم فقط دیدم)
    خوب من میگم نیازی نیست زحمت بکشین ، ببینید copy یعنی از والد همه چیز روی میگیره و اگه والد تغییر کرد copy هم تغییر میکنه ولی اگه instance باشه یعنی فرزند از والد مستقله و بعد از createUnique فرزند هر تغییر در والد رو ازش صرفنظر میکنه
    در اینجا اگه این متد رو روی false بزارین یعنی هر موقع والد(موی کلیپ کتابخانه) تغییری رو داشته باشه فرزند همه اون تغییرات رو میپذیره ولی اگه روی true باشه والد دیگه از پدر جداست
    البته من خودم هم درست متوجه نشدم منظور از این تغییر چه تغییری هستش چون در هر دو صورت فرزند از والد خصوصیات رو به ارث میبره احتمالا منظورش runtime هستش (حالا هر کی اطلاعاتی داره ما رو هم بی نصیب نذاره)

    9) MovieMaterial : هم شبیه قبلیه ولی یه متد اضافه به نام rect داره که همون کلاس rectangle هستش یعنی شما میتونین فضایی که همیشه AutoResize روش تاثیر بذاره ، چون کنترل این ابجکت سخته بهتره همون روی null باشه

    PHP:
    public function MovieMaterial( movieAsset:DisplayObject=null, transparent:Boolean=false, animated:Boolean=false, precise:Boolean=false, rect:Rectangle=null )

    10)VideoStreamMaterial : خوب موند فقط این متریال دوستان برای کار با باید با کلاس video کار کرده باشین
    برای کار باهاش به یک ابجکت از نوع video و یه کانکشن از نوع netStream دارین من یه مثال میزنم ولی شما تستش نکنین چون یکم سنگینه :wink::

    PHP:
    public function VideoStreamMaterial ( video:Video, stream:NetStream , precise:Boolean = false, transparent:Boolean = false )

    اول ابجکت video رو بسازین (من دیگه زیاد در این باره توضییج نمیدم البته توضییح زیادی هم نیاز نداره)

    PHP:
    var nc:NetConnection = new NetConnection ();
    nc.connect (null);
    var ns:NetStream = new NetStream(nc);
    ns.play ("vid.flv");
    var vid:Video = new Video();
    vid.attachNetStream (ns);

    vid.flv هم نام ویدیو تون هستش
    بعد این کد رو وارد کنین :

    PHP:
    import flash.display.BitmapData;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.*
    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.materials.*;

    var material:VideoStreamMaterial = new VideoStreamMaterial( vid, ns , false, false);


    var viewport:Viewport3D = new Viewport3D(800,600);
    var scene:Scene3D = new Scene3D();
    var camera:Camera3D = new Camera3D();
    var renderer:BasicRenderEngine = new BasicRenderEngine();

    material.doubleSided = true;

    var materials:MaterialsList = new MaterialsList(material);
    materials.addMaterial(material, "all");

    addChild(viewport);
    var sphere:Cube = new Cube(materials,550,550,400,20,20,20,0,0);
    sphere.x =0;
    sphere.y = 0;

    scene.addChild(sphere);
    addEventListener(Event.ENTER_FRAME , mainFun);
    function mainFun(e:Event) {
        sphere.rotationX =stage.mouseY/20;
        sphere.rotationY += 10;
        renderer.renderScene(scene, camera, viewport);
    }

     

    متریالها هم تموم شد
     
    نوشته شده توسط arjmand200 در ‏15 آگوست 2009
    smmousazadeh، amird، mohsen_joker و 3 نفر دیگر از این ارسال تشکر کرده اند.
  2. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    خوب چون جلسه قبل زیاد شد و قبلا هم به خاطر سوال یکی از دوستان یه مقداری توضییح دادم من دو جلسه رو با هم یکی کردم ولی در جلسه بعدی مفصل در مورد lighting و shading صحبت میکنم که مبحث بزرگی . میشه گفت جزو مباحث مهم در papervision هستش که مشتقات زیادی داره (flat shading,specular,negativ و مهمتر reflection )
    در ضمن من این مرجع رو هم معرفی میکنم که  Documentation خود papervision هستش


    پس تا جلسه بعد...
     
    نوشته شده توسط arjmand200 در ‏15 آگوست 2009
    amird، vobot.null، droprain و 4 نفر دیگر از این ارسال تشکر کرده اند.
  3. BioDread

    BioDread Banned

    ارسال‌ها:
    1,443
    تشکر شده:
    1,223
    امتیاز دستاورد:
    36
    تو MaterialList یه پارامتر میگیره که از نوع * هست
    چه بزاریم چه نزاریم باز کار میکنه
    ان برای چی هست؟
     
    نوشته شده توسط BioDread در ‏16 آگوست 2009
    mohsenpoor2 و arman_p از این پست تشکر کرده اند.
  4. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    این رو میگی :
    PHP:
    public function MaterialsList( materials :*=null ):void

    materials : میتونه یک indexArray یا object باشه که میتونی اونجا وارد کنی البته همون کار addMaterial رو میکنه مثل همون کار با ارایه ها مثلا شما چند طور میتونی ارایه بسازی مثال:

    PHP:
    var arr0:Array = ["index0","index1","index2","index3","index4"];
    var arr:Array = new Array();
    arr[0] = "index0";
    arr[1] = "index1";
    arr[2] = "index2";
    arr[3] = "index3";
    arr[4] = "index4";
    arr[5] = "index5";

    تو اینجا هم میتونی به جای استفاده از addMaterial که قبلا گفتم مستقیما توی همون متد این متریالهاتو وارد کنی مثلا :

    PHP:
    var materials:MaterialsList = new MaterialsList(
      {
       
       front:  new ColorMaterial(0xFFFFFF, 1),
       back:   new ColorMaterial(0xFF0000, 1),
       right:  new ColorMaterial(0x00FF00, 1),
       left:   new ColorMaterial(0x333333, 1),
       top:    new ColorMaterial(0x0000FF, 1),
       bottom: new ColorMaterial(0xFFFF00, 1)
      } );

    با هر کدومش راحتی با اون کار کن
     
    نوشته شده توسط arjmand200 در ‏16 آگوست 2009
    amird، mohsen_joker، vobot.null و 6 نفر دیگر از این ارسال تشکر کرده اند.
  5. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    به نام خدا

    با یکم تاخیر امروز ادامه مبحث lighting رو این جلسه خواهم گفت  
    خوب دوستان ما در papervision یه نوع light داریم PointLight3D(تا اونجایی که من میدونم ) البته اگه LightMaps رو هم جزوء این گروه حساب کنیم میشه گفت که دو نوع light داریم البته LightMaps تقریبا یه نوع میشه گفت تنظیم برای PointLight3D  و متریالهای shading حساب میشه خوب حال زیاد مهم نیست من اول یکم در مورد light توضیح بدم
    ببینید کار light در papervision همون کار چراغ خونه هستش که به صورت یه منبه نور نقطعه ای هستش
    دوستان PointLight3D رو با باید از متریالهای shading استفاده کرد چون مشخصه که هر منبع نوری یه نوع سایه با خودش خواهد داشت این سایه میتونه یکی از این سه نوع باشه :

    PhongMaterial
    FlatShadeMaterial
    GouraudMaterial

    خوب حالا چطوری از این PointLight3D استفاده میشه
    دوستان برای اینکه ما بتونیم به فضای سه بعدی یه منبع روشنایی تعریف بکنیم زیاد مشکلی وجود نداره و با یه خط کد ساده میشه این منبع نور رو تعریف کرد ولی برای استفاده از این منبع نور و اختصاص اون به فضایی که چندتا ابجکت داره و هر ابجکت به طور جداگانه یه متریال مخصوص داره یه کم مبحث پیچیده داریم
    و نمیشه گفت که با یه جلسه میشه همه این مباحث رو اموزش داد به خاطر همون واسه اونایی که میخوان این مباحث lighting و shading رو خوب یاد بگیرن این مراجع رو نشون میدم تا قبلا یه پیش زمینه ای داشته باشن چون واقعا این مبحث ، یه مبحث سنگینیه :


    من برای شروع یه منبع نور ایجاد میکنم و به ابجک خودم که یه ابجکت از نوع cube هست یه متریال از نوع FlatShadeMaterial نسبت میدم ، این متریال چندتا ورودی داره که اولیش منبع نور هستش که بر حسب فاصله اون از ابجکت و موقعیتش در scene یه سایه رو ابجکت که به صورت flat (صاف) هستش ایجاد میکنه چون این متریال سایه ای از نوع flat داره و این نوع سایه یه طیف رنگ برای سایه میپذیزه من این رنگ رو 0xCCFF66 میذارم کار تمومه و بعد یه رندر از کار

    و اما متدهای FlatShadeMaterial , PointLight3D :

    PointLight3D دوتا متد داره :


    PHP:
    public function PointLight3D(showLight:Boolean = false, flipped:Boolean = false)

    showLight میگه منبع نور دیده بشه یا نه
    flipped هم بیان کننده جهت منبع نور هستش که اون رو برعکس میکنه البته تو DAE-shading در (ascollada) کاربرده داره که فعلا برای ما کاربرد نداره

    متدهای FlatShadeMaterial :

    PHP:
    public function FlatShadeMaterial(light:LightObject3D, lightColor:uint=0xffffff, ambientColor:uint=0x000000, specularLevel:uint=0 )

    این متدها هم برای توضیحش باید اون مراجع رو بخونین :

    اینم مثال :

    PHP:
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
    import org.papervision3d.lights.PointLight3D;


    var viewport:Viewport3D = new Viewport3D(800,600);
    var scene:Scene3D = new Scene3D();
    var camera:Camera3D = new Camera3D();
    var light:PointLight3D = new PointLight3D(false);
    var flatShade:FlatShadeMaterial = new FlatShadeMaterial(light, 0xCCFF66,0xFF0000 );
    var materials:MaterialsList = new MaterialsList({all : flatShade});
    var renderer:BasicRenderEngine = new BasicRenderEngine();
    addChild(viewport);

    var cube:Cube = new Cube(materials,250,250,250);
    cube.x =-200;
    cube.y = 0;

    light.x = 0;
    light.y = 0;
    light.z = 0;

    scene.addChild(cube);
    addEventListener(Event.ENTER_FRAME , mainFun);
    function mainFun(e:Event) {
        cube.rotationY +=10;
        renderer.renderScene(scene, camera, viewport);
    }

    خوب دوستان میتونید متریالهای GouraudMaterial و PhongMaterial رو هم خودتون تست کنین چون متدهای هر سه یکی مثل همه با این تفائت که مقدار specularLevel در GouraudMaterial و FlatShadeMaterial اختیاریه ولی در PhongMaterial که بر حسب تشدید نور کار میکنه اجباری هر چند که مقدار default اون صفره

    خوب این جلسه هم تموم شد
    در جلسه بعد در مورد سایه ها که تقریبا مثل متریالها هستند صحبت میکنم
     
    نوشته شده توسط arjmand200 در ‏17 آگوست 2009
    mohsen_joker، vobot.null، droprain و 4 نفر دیگر از این ارسال تشکر کرده اند.
  6. sizanjavad

    sizanjavad کاربر فعال

    ارسال‌ها:
    242
    تشکر شده:
    1,449
    امتیاز دستاورد:
    93
    با تشکر و سپاس فراوان از زحمات دوست عزیز arjmand200. واقعا خسته نباشین

    [​IMG][​IMG][​IMG][​IMG]
     
    نوشته شده توسط sizanjavad در ‏17 آگوست 2009
    droprain، mohsenpoor2، ++Hadi++ و یک نفر دیگر از این ارسال تشکر کرده اند.
  7. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    دوست من قرار نیست من جواب شما رو بدم بنده کارهای مهمتر از جواب دادن این سوالات رو دارم
    خواهشا در جایی که به شما ربطی نداره پست ندین
     
    نوشته شده توسط arjmand200 در ‏22 آگوست 2009
    vobot.null و BioDread از این پست تشکر کرده اند.
  8. sizanjavad

    sizanjavad کاربر فعال

    ارسال‌ها:
    242
    تشکر شده:
    1,449
    امتیاز دستاورد:
    93
    arjmand200 جان. چرا درسا رو ادامه نمی دی؟!!!
     
    نوشته شده توسط sizanjavad در ‏22 آگوست 2009
  9. javadsava

    javadsava New Member

    ارسال‌ها:
    6
    تشکر شده:
    9
    امتیاز دستاورد:
    1
    با سلام خدمت همگی و تشکر ویژه از arjmand200

    اولا چند تا سئوال: 1- چطوری می توان رخدادهای موس را تشخیص داد و متناسب با هر کدام یک عمل خاصی را انجام داد؟
    2- چگونه می توان کامپوننت هایی که با استفاده از papervision ساخته شده را ریسورس کرد؟ یعنی ببینیم چطوری درست شدن.
     
    نوشته شده توسط javadsava در ‏26 آگوست 2009
  10. javadsava

    javadsava New Member

    ارسال‌ها:
    6
    تشکر شده:
    9
    امتیاز دستاورد:
    1
    سورس یک mp3 پلیر که هماهنگ با پخش آهنگ یک افکت سه بعدی رو نشون می ده. کافیه فایل موسیقی خودتون را توی پوشه پروژه بزارید و نام اون رو توی سورس جایگزین کنید.



    // Import Papervision3D
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.objects.primitives.Cube;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.materials.utils.MaterialsList;

    // constants
    const CHANNELS_PER_DIRECTION:int= 256;
    const CUBES_PER_CHANNEL:int = 8;
    const CHANNEL_STEPS:int = Math.floor(CHANNELS_PER_DIRECTION / CUBES_PER_CHANNEL);

    // papervision vars
    var viewport:Viewport3D;
    var scene:Scene3D;
    var camera:Camera3D;
    var cube:Cube;
    var renderer:BasicRenderEngine;

    // arrays holding references to cubes for each channel
    var cubesLeftChannel:Array = new Array();
    var cubesRightChannel:Array = new Array();
    // animation flag
    var bolAnimationForward:Boolean = true;

    // sound vars
    var sndObject:Sound = new Sound();
    var reqObject:URLRequest = new URLRequest("so-deep.ram2000.mp3");
    var sndBytes:ByteArray = new ByteArray();

    // INIT
    function init():void {
    init3D();
    initSound();
    // add event listener for render loop
    addEventListener(Event.ENTER_FRAME, renderLoop);
    }

    // init3d
    function init3D():void {
    // Create viewport
    viewport = new Viewport3D(0, 0, true);
    // add viewport to stage
    addChild(viewport);

    // create basic render engine
    renderer = new BasicRenderEngine();

    // Create scene
    scene = new Scene3D();

    // blue cube material
    var blueMaterial:MaterialsList = new MaterialsList(
    {
    front: new ColorMaterial(0x0066FF),
    back: new ColorMaterial(0x0066FF),
    right: new ColorMaterial(0x0046B0),
    left: new ColorMaterial(0x0046B0),
    top: new ColorMaterial(0x1171FF),
    bottom: new ColorMaterial(0x1171FF)
    }
    );

    // green cube material
    var greenMaterial:MaterialsList = new MaterialsList(
    {
    front: new ColorMaterial(0x00CC00),
    back: new ColorMaterial(0x00CC00),
    right: new ColorMaterial(0x009F00),
    left: new ColorMaterial(0x009F00),
    top: new ColorMaterial(0x00CC00),
    bottom: new ColorMaterial(0x00CC00)
    }
    );

    // create cubes for left channel
    for(var i = 0; i < CUBES_PER_CHANNEL; i++) {
    cube = new Cube(blueMaterial, 12, 50, 400);
    cube.x = i * 50;
    cubesLeftChannel.push(cube);
    scene.addChild(cube);
    }
    //create cubes for the right channel
    for(i = 0; i < CUBES_PER_CHANNEL; i++) {
    cube = new Cube(greenMaterial, 12, 50);
    cube.x = (i * 50) + 25;
    cubesRightChannel.push(cube);
    scene.addChild(cube);
    }

    // create camera
    camera = new Camera3D();
    // set camera zoom
    camera.zoom = 11;
    // set cube in the center as camera target
    camera.target = cubesRightChannel[CUBES_PER_CHANNEL / 2 - 1] as Cube;
    // camera start position
    camera.x -= 400;
    camera.y += 300;
    }

    function initSound():void {
    // load mp3 file and play it
    sndObject.load(reqObject);
    sndObject.play();
    }

    // render loop function
    function renderLoop(e:Event):void
    {
    // compute spectrum and put result in byte array
    SoundMixer.computeSpectrum(sndBytes);

    //
    // LEFT CHANNEL CUBES
    for(var i = 0; i < CUBES_PER_CHANNEL; i++) {
    var myCube:Cube = cubesLeftChannel as Cube;
    // get the right positions for the byte array
    sndBytes.position = CHANNEL_STEPS * 4 * i;
    // resize current cube
    myCube.scaleY = sndBytes.readFloat();
    }
    //
    // RIGHT CHANNEL CUBES
    for(i = 0; i < CUBES_PER_CHANNEL; i++) {
    myCube = cubesRightChannel as Cube;
    // get the right positions for the byte array
    sndBytes.position = 1024 + (CHANNEL_STEPS * 4 * i);
    // resize current cube
    myCube.scaleY = sndBytes.readFloat();
    }

    // swing camera
    if(bolAnimationForward) {
    camera.x += 4;
    if(camera.x > 800)
    bolAnimationForward = false;
    } else {
    camera.x -= 4;
    if(camera.x < -400)
    bolAnimationForward = true;
    }

    // render current scene
    renderer.renderScene(scene, camera, viewport);
    }

    init();
     
    نوشته شده توسط javadsava در ‏26 آگوست 2009
    ++Hadi++ و arjmand200 از این پست تشکر کرده اند.
  11. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    در جواب سوالت که گفتی چطوری میشه رویدادهای موس رو تشخیص داد با کلاس InteractiveScene3DEvent کار کن که اکثر eveny های موس رو dispatch میکنه :

    PHP:
    public static const OBJECT_CLICK:String = "mouseClick";
            /**
             * Dispatched when a container in the ISM recieves a MouseEvent.CLICK event
            * @eventType mouseClick
            */

            public static const OBJECT_DOUBLE_CLICK:String = "mouseDoubleClick";
            /**
             * Dispatched when a container in the ISM receives an MouseEvent.MOUSE_OVER event
            * @eventType mouseOver
            */

            public static const OBJECT_OVER:String = "mouseOver";
            /**
             * Dispatched when a container in the ISM receives an MouseEvent.MOUSE_OUT event
            * @eventType mouseOut
            */

            public static const OBJECT_OUT:String = "mouseOut";
            /**
             * Dispatched when a container in the ISM receives a MouseEvent.MOUSE_MOVE event
            * @eventType mouseMove
            */

            public static const OBJECT_MOVE:String = "mouseMove";
            /**
             * Dispatched when a container in the ISM receives a MouseEvent.MOUSE_PRESS event
            * @eventType mousePress
            */

            public static const OBJECT_PRESS:String = "mousePress";
            /**
             * Dispatched when a container in the ISM receives a MouseEvent.MOUSE_RELEASE event
            * @eventType mouseRelease
            */

            public static const OBJECT_RELEASE:String = "mouseRelease";
            /**
             * Dispatched when the main container of the ISM is clicked
            * @eventType mouseReleaseOutside
            */

            public static const OBJECT_RELEASE_OUTSIDE:String = "mouseReleaseOutside";

    در مورد سوال دوم هم بنده اطلاع خاصی ندارم چون اصلا لزومی هم نمیبینم واسه اینکار
    از بابت اموزشت هم ممنون
     
    نوشته شده توسط arjmand200 در ‏26 آگوست 2009
    vobot.null، BioDread و ++Hadi++ از این ارسال تشکر کرده اند.
  12. javadsava

    javadsava New Member

    ارسال‌ها:
    6
    تشکر شده:
    9
    امتیاز دستاورد:
    1
    من توی papervision یک مبتدی هستم و این سورسی که گذاشتم رو توی یک سایت خارجی پیدا کردم.
    بعد همونطور که گفتم من مبتدی هستم و اصلا نمی دونم چطوری از کلاس اینتراکتیو استفاده کنم. اگه ممکنه و برای شما زحمتی نیست لطفا آموزشهات رو ادامه بدی چون این خارجی ها اصلا درست و حسابی آموزش نمیدن و یه سورسهای عجیب غریب میزارن که با کلمه package شروع میشه و اصلا نمی دونم که چطوری از این سورس ها استفاده کنم.

    خواهش دومی که از شما دارم اینه که من رو تو انجام این کار کمک کنید: من میخوام یک منوی سه بعدی بسازم که با کلیک بر روی هر جزء اون مثلا متغیر t تغییر بکنه.
     
    نوشته شده توسط javadsava در ‏29 آگوست 2009
  13. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    دوست من ببینید اینکه شما نمیتونید از اموزشهای خارجی استفاده کنین اونطوری که شما فرمودین ، این مشکل از شماست چون کلاسی که با package شروع میشه نشون دهنده اینکه که author (نویسنده اون ) اون رو به صورت یه کلاس timeline کلاس ننوشته .اینکه چطوری از این نوع کلاسها استفاده کنین در همین انجمن دوستان نوشتن :wink:

    در مورد ادامه اموزشها نیز بعد توضیحاتی رو میدم و صد در صد ادامه اموزشها رو قرار خواهم داد حالا اینجا یا جای دیگه فعلا معلوم نیست چون یکم سرم شلوغه

    در مورد سوال سومتون هم من نمیتونم کمکی بکنم چون با این اموزشها دیگه نیازی به این کار نمیبینم فقط یه راهنمایتون میکنم که خودتون انجامش بدین شما اون منوی رو که طراحی کردین در داخل یه movieclip ادش کنین و اون موی کلیپ رو به عنوان یه متریال MovieAssetMaterial به روی یه plane بندازین کار زیاد سختی نیست

    در مورد اینکه فرمودی خارجی زیاد درست اموزش نمیدن اشباه میکنی چون همین خارجی ها به قول شما ، این کلاس رو نوشتن ( اونم به صورت رایگان اگه ماها مینوشتیم قیمتش معلوم نبود چقدره :green: )

     
     
    نوشته شده توسط arjmand200 در ‏29 آگوست 2009
    vobot.null و ++Hadi++ از این پست تشکر کرده اند.
  14. javadsava

    javadsava New Member

    ارسال‌ها:
    6
    تشکر شده:
    9
    امتیاز دستاورد:
    1
    کسي لينک دانلود کامپوننت papervision 3d رو که پسوندش mxp باشه و قابل نصب که بتونم اون رو توي ليست کامپوننت ها پيدا کنم رو داره؟
    اگر هست خواهشا توي گوگل کد نباشه چون اصلا نمي تونم وارد سايتش بشم و دائما ارور ميده.
    با تشکر
    در ضمن اون کامپوننتي که آقاي ارجمند تو پست اول گذاشته بودند با پسوند swc رو توي پوشه کامپوننت فلش کپي کردم ولي توي ليست کامپوننت ها ظاهر نميشه. کسي دليلش رو مي دونه؟
     
    نوشته شده توسط javadsava در ‏1 سپتامبر 2009
  15. javadsava

    javadsava New Member

    ارسال‌ها:
    6
    تشکر شده:
    9
    امتیاز دستاورد:
    1
    با سلام و آرزوی قبولی طاعات و عبادات روزه داران
    یک پیشنهاد و یک خواهش و یک سوال داشتم . از اونجا که به نظرم درک و فهم کدهای timeline خیلی راحت تر از کدهای کلاسها هست پیشنهاد میکنم دوستانی که استاد هستند یک برنامه ای رو بنویسند که کدهای کلاس رو به کد تایم لاین تبدیل کنه. البته می دونم که این کار مشکلاتی هم داره از قبیل اینکه بعضی از کلاسها مستقل نیستن و در واقع کلاسهای دیگه ای رو گسترش می دن اما به نظرم این کار شدنی است.
    من یک برنامه آموزش قرآن برای پایه سوم ابتدایی با فلش درست کردم و تقریبا کامله فقط مونده لیست سوره ها که تا حالا سه چهار بار درستش کردم اما هر بار نظرم رو زیاد جلب نکرد تا اونجا که توسط شما (arjmand200) با papervision آشنا شدم و تصمیم گرفتم لیست سوره ها رو سه بعدی درست کنم. با توجه به اینکه باز گشایی مدارس نزدیکه از شما خواهش دارم اقلا روزی دو سه خط آموزشتون رو ادامه بدید تا بتونم به این برنامه یک سر و سامونی بدم.
    هر بار خواستم از گوگل کد دانلود کنم یا ارور میده یا از من username و password می خواد. چه کار کنم؟
     
    نوشته شده توسط javadsava در ‏1 سپتامبر 2009
  16. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    ا سلام خدمت دوستان یه چند مدت به خاطر مشکلاتی بد جوری مشغول بودم ، تقریبا یکی دو هفته پیش یه وبلاگ زدم . در این وبلاگ من علاوه بر این اموزش ها وادامه اونا اموزشهای مرتبط رو در سطحی خیلی خوب قرار خواهیم داد دوستان میتونن ادامه این اموزشها و مطالب آموزشی دیگه رو در این وبلاگ بخونن
     
    آخرین ویرایش: ‏4 سپتامبر 2009
    نوشته شده توسط arjmand200 در ‏3 سپتامبر 2009
    moonch، ++Hadi++ و vobot.null از این ارسال تشکر کرده اند.
  17. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    با سلام خدمت دوستان عزیز یکی دو روز بود روی نسخه موبایل وبلاگ کار میکردم تا بتونم کاری بکنم که وبلاگ رو دوستان بر روی موبایل هم ببینین البته خیلی از سرویس ها رو امتحان کردم تا اینکه سروریس mobify رو خیلی خوب دیدم من هم روی این سیستم وبلاگ رو ست کردم دوستان میتونن با موبایل وبلاگ رو هم ببینین و یه کار دیگه هم که کردم این بود که چون اکثر این سرویسها دامنه رو تغییر میدادن من تونستم بدون اینکه دامنه رو تغییر بدم این سایت رو برای سرویس mobify ست کنم حالا میتونین بدون تغییر در دامنه با همون دامنه ilflash.ir وارد وبلاگ بشن فقط یه توصیه که داشتم این بود که با opera کار کنین چون مرورگر خود نوکیا یا سونی css رو کامل ساپورت نمیکنه
     
    نوشته شده توسط arjmand200 در ‏20 سپتامبر 2009
    ++Hadi++ و vobot.null از این پست تشکر کرده اند.
  18. vobot.null

    vobot.null New Member

    ارسال‌ها:
    1
    تشکر شده:
    1
    امتیاز دستاورد:
    1
    سلام خدمت همه دوستان عزیز به خصوص جناب آقای ارجمند امیدوارم لحظات خوبی داشته باشین من مدت زیادی هست که دارم مطالب این انجمن رو میخونم واقعا مطالب این قسمت که مرتبط با آموزش papervision بود لذت بخش بود مطالب بسیار خوبی در اینجا هست که حتی توی کمتر سایت خارجی میشه اونارو پیدا کرد و آقای ارجمند با حوصله فراوان این مطالب رو گذاشتن من به جرعت میتونم بگم که بهترین آموزش هایی بود که توی این انجمن دیدم
    اگه راستشو بخواین یه جورایی به اقای ارجمند حسادت کردم البته به اطلاعاتی که دارن : :green:
    امیدوارم اقای ارجمند دوباره فعالیت خودشون رو آغاز کنن و ما رو از اطلاعات خوبشون محروم نکنن من هم با چندتا از این فریم ورکهای 3 بعدی و 2 بعدی کار کردم و در صورتی که اقای ارجمند بخوان حتمن باهاشون این مطالب رو ادامه میدیم
    با تشکر
     
    نوشته شده توسط vobot.null در ‏25 نوامبر 2009
    arjmand200 از این پست تشکر کرده است.
  19. arjmand200

    arjmand200 Member

    ارسال‌ها:
    235
    تشکر شده:
    311
    امتیاز دستاورد:
    16
    سلم خدمت دوست محترم
    خیلی از ابراز لطفتون ممنونم راستش اصلا مشکلی توی فعالیت خودم توی این انجمن یا وبلاگ نیست و تنها دلیلش مشکلات درسی و کنکور (ارشد ) هستش ، به خاطر همینه که نمیتونم فعالیتی داشته باشم انشالله بعد از کنکور فعالیتم رو شروع میکنم (حالا چه نو سایت و چه تو وبلاگ )
    بازم تشکر میکنم :wink:
     
    نوشته شده توسط arjmand200 در ‏25 نوامبر 2009
    m_zaidabadi از این پست تشکر کرده است.
  20. lololumiere

    lololumiere Member

    ارسال‌ها:
    58
    تشکر شده:
    19
    امتیاز دستاورد:
    6
    salam doste man man dar on jalaseye shoroe kar natonestam chizi doros konam....nemidonam moshkel az component bud ya na faghat ye khaheshi mikonam file componeneto age mishe 2 bare bezar.oni ke on bala bud ke nashod
     
    نوشته شده توسط lololumiere در ‏6 دسامبر 2009
    m_zaidabadi از این پست تشکر کرده است.

به اشتراک بگذارید