SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Úvod do 3D v AS3
          s Away3D a Flare3D
          Nikolaj Rýfr
          Adobe User Group, Praha, 24. 2. 2011



          nikolaj@nikolaj.cz
          www.nikolaj.cz


Saturday,February 26, 2011
Nikolaj Rýfr
                                  * 1980

                             Senior RIA developer, geewa.com
                             Ve Flashi od verze 3 (1998)
                             První 3D ostruhy (1994) www.povray.org


                             Twitter: @nikolajcz
                             Další informace: blog.nikolaj.cz



Saturday,February 26, 2011
Pre-Molehill 3D Flash

                             SMOOTH HIGH POLY?!


                                                                          NICE TEXTURES?!




                                 Money For Nothing / Dire Straits, 1985



           Pomalý + Ošklivý + Chybový + Zmatený


Saturday,February 26, 2011
Rozšířené knihovny
                † Papervision3D
                       Away3D
                       Flare3D - 500 Euro / rok
                       Alternativa3D - nyní creditware
                       Sophie3D - 330 Euro / stránka
                       Yogurt3D
                       Sandy3D


Saturday,February 26, 2011
Stručné srovnání
                             Away3D            Flare3D
               Open-source            Komerční licence
               Složitější API         Přehlednější API
               Velká komunita         Dobrá dokumentace
               Prefab3D               3Ds MAX plugin + IDE
               Collada formát         .f3d + Collada
               Away3D Lite ~ 25kb     Lepší správa paměti


Saturday,February 26, 2011
Co je to vlastně to 3D?
                View - "televizor"
                             Scéna, Kamera, Renderer - "vykreslovač"

                Objekty - "herci"
                             Drátěné modely, Povrchy - textury,
                             materiály

                Doplňky - "efekty"
                             Světlo, Augmentovaná Realita, Fyzika
                             Kolize, Stínování, Zrcadla atd…


Saturday,February 26, 2011
Vytvoření scény
          Away3D                                   Flare3D
          scene = new Scene3D();	 	   	            scene = new Scene3D(this);

          cam = new Camera3D();                    nebo
          cam.z = 500;
          cam.lookAt( new Vector3D() );		   	      // prohlížecí mód při návrhu
                                                   scene = new Viewer3D(this);
          view = new View3D();
          view.scene = scene;                      scene.camera.setPosition(0,0,500);
          view.camera = cam;                       scene.camera.lookAt(0,0,0);
          view.x = stage.stageWidth / 2;
          view.y = stage.stageHeight / 2;
          addChild(view);

          addEventListener (Event.ENTER_FRAME,
          processFrame, false,0, true);

          function processFrame (e:Event):void {
          	 view.render();	 	
          }


Saturday,February 26, 2011
První objekt
          Away3D                           Flare3D
          sphere = new Sphere();           sphere = new Sphere ("koule", 100, 12 );
          sphere.radius = 100;             scene.addChild(sphere);
          sphere.segmentsH = 12;
          sphere.segmentsW = 12;
          scene.addChild(sphere);

          // do fnc processFrame vlozte:   // do handler fnc onEnterFrame:
          sphere.yaw(1); // otacet         sphere.rotateX(1); // kutalet
          sphere.pitch(1); // kutalet      sphere.rotateY(1); // otacet
          sphere.roll(1); // obracet       sphere.rotateZ(1); // obracet


          Kam dál?                         Kam dál?
          package away3d.primitives        package flare3d.primitives




Saturday,February 26, 2011
Make-up
       Away3D                                      Flare3D
       material =                                  mars:Texture3D
         new BitmapFileMaterial ("mars.jpg");        = scene.addTextureFromFile("mars.jpg");
       sphere.material = material;
                                                   scene.addEventListener
                                                     (Scene3D.COMPLETE_EVENT, allLoaded );

       A kde jsou stíny?                           function allLoaded (e:Event) {
                                                   marsMat = new TextureMaterial ("mars",mars);
       light = new DirectionalLight3D();           sphere = new Sphere ("koule", 100, 12, marsMat);
       scene.addLight(light);                      }
       light.direction=new Vector3D(0,-300,100);
       // použili jsme přidání bitmapy pomocí      A ty stíny?
       [Embed]. pomocná třída Cast v Away3D jen
       natypovává bitmapData                       Flare3D má úžasný exportér z 3Ds Max. Vážně!
       material = new PhongBitmapMaterial          Ale dobře... vše se dozvíte v API. :)
         (Cast.bitmap(marsClass) );
                                                   http://bit.ly/fVjgDj
       	 	 	




Saturday,February 26, 2011
Interakce
       Away3D                                         Flare3D
       Interakce s objektem                           Interakce s objektem
       sphere.addEventListener                        sphere.addEventListener
         (MouseEvent3D.MOUSE_UP, handler_fnc);	          (MouseEvent3D.CLICK, handler_fnc)


       Interakce s místem na objektu                  Komplexní interakce rovnou
       sphere.addEventListener                        mouse = new MouseCollision()
         (MouseEvent3D.MOUSE_UP, handler_fnc);        mouse.addCollisionWith( sphere )
                                                      scene.addEventListener
       // { handler_fnc(e:MouseEvent3D) }                ( Scene3D.RENDER_EVENT, renderEvent )

       var target:Vector3D =                          // renderEvent fnc (prevzato z tutorialu)
          new Vector3D(e.sceneX,e.sceneY,e.sceneZ);   if (mouse.test(Input3D.mouseX, Input3D.mouseY)) {  
       target.scaleBy(2)                              var info:CollisionInfo = mouse.data[ 0 ]
                                                      vector.setPosition
       cam.x = target.x;
                                                         (info.point.x, info.point.y, info.point.z)
       cam.y = target.y;
                                                      vector.setNormalOrientation( info.normal )
       cam.z =	 target.z;                             vector.visible = true
       cam.lookAt( new Vector3D() );




Saturday,February 26, 2011
Práce s modely
       Away3D                                      Flare3D
       Import COLLADA .DAE modelu                  Nahrání .f3d modelu
       cld = new Collada;                          scene.addChildFromFile( "model.f3d" );
       _loader = new Loader3D();
                                                   // allLoaded handler
       _loader.addEventListener
                                                   biped:Pivot3D =
          (Loader3DEvent.LOAD_SUCCESS,                scene.getChildByName( "model.f3d" );
          _onLoadSuccess);                         biped.addLabel( "walk", 0, 46 );
       _loader.loadGeometry("../model.dae",cld);   biped.addLabel( "idle", 51, 290 );
       _view.scene.addChild(_loader);              biped.setScale(.5,.5,.5);
                                                   biped.z = 162;
                                                   biped.x = -200;
       cont:ObjectContainer3D =                    biped.setRotation(0,345,0);
          _loader.handle as ObjectContainer3D;     biped.playLabel("idle");
       animLib:AnimationLibrary =                  biped.animationPrecision = true;
          cont.animationLibrary;                   // a rovnou přidáme kolize :)
                                                   collisions = new SphereCollision(biped, 20 );
       animator = animationLibrary.getAnimation
                                                   collisions.addCollisionWith(smthng);
          ("default").animator as BonesAnimator;   // smthng je další Pivot3D

       _animator.play();




Saturday,February 26, 2011
Zhodnocení
          Než bude Molehill, je 3D ve Flashi jenom
          doplněk a vyžaduje velkou dávku
          podvádění a ústupků.
          Away3D je dostupná platforma s velkou, živou základnou, ale Flare3D
          poskytuje komfort a stabilitu ideální pro práci v komerčním prostředí.
          Pro mne jasný vítěz, ale jak nám kartami zamíchá Adobe ještě uvidíme.

          Dobré propojení se stávající 3D workflow se zdá být klíčové.




          Poznámka: Alternativa3D je určitě taky skvělá knihovna. Na začátku mne odrazovala celkem
          strohým API, velkou cenou, malou komunitou - proto v ní nedělám a vývoj sleduji jen zběžně.
          Uvítám Vaše názory na mém blogu v komentářích k této slideshow.




Saturday,February 26, 2011
Užitečné odkazy
          Sokoban v Away3D nebo Flare3D?
          http://bit.ly/dGZZyD


          Takto si představuji stránku návodů:
          http://www.flare3d.com/tutorials


          Molehill for freaks
          http://www.bytearray.org/?p=2555




Saturday,February 26, 2011
Díky za Váš zájem.
          Jsem hrozně zvědavý,
          co vymyslíte za úžasné
          a inspirující věci.

          Pošlete mi nápady,
          dotazy a hlavně ukázky na
          nikolaj@nikolaj.cz




Saturday,February 26, 2011

Más contenido relacionado

Destacado

Supercharge Your Public Relations with Content Marketing
Supercharge Your Public Relations with Content MarketingSupercharge Your Public Relations with Content Marketing
Supercharge Your Public Relations with Content MarketingFirecracker PR
 
Action research plan 2
Action research plan 2Action research plan 2
Action research plan 2tnicks
 
Mga batayang uri ng komposisyon
Mga batayang uri ng komposisyonMga batayang uri ng komposisyon
Mga batayang uri ng komposisyonCamille Tan
 
Medical Benefits Of Cloning
Medical Benefits Of CloningMedical Benefits Of Cloning
Medical Benefits Of Cloningmuskanscharm
 
PPE Awareness VN - Advance
PPE Awareness VN - AdvancePPE Awareness VN - Advance
PPE Awareness VN - AdvanceTung Pham Tien
 
Pagsasanay sa tayutay
Pagsasanay sa tayutayPagsasanay sa tayutay
Pagsasanay sa tayutayCamille Tan
 
Kahalagahan ng wika 2
Kahalagahan ng wika 2Kahalagahan ng wika 2
Kahalagahan ng wika 2Camille Tan
 
Mga batayang uri ng komposisyon
Mga batayang uri ng komposisyonMga batayang uri ng komposisyon
Mga batayang uri ng komposisyonCamille Tan
 
Argumentong Komposisyon
Argumentong KomposisyonArgumentong Komposisyon
Argumentong KomposisyonCamille Tan
 

Destacado (11)

Supercharge Your Public Relations with Content Marketing
Supercharge Your Public Relations with Content MarketingSupercharge Your Public Relations with Content Marketing
Supercharge Your Public Relations with Content Marketing
 
Action research plan 2
Action research plan 2Action research plan 2
Action research plan 2
 
Mga batayang uri ng komposisyon
Mga batayang uri ng komposisyonMga batayang uri ng komposisyon
Mga batayang uri ng komposisyon
 
Retorika
RetorikaRetorika
Retorika
 
Medical Benefits Of Cloning
Medical Benefits Of CloningMedical Benefits Of Cloning
Medical Benefits Of Cloning
 
PPE Awareness VN - Advance
PPE Awareness VN - AdvancePPE Awareness VN - Advance
PPE Awareness VN - Advance
 
Pagsasanay sa tayutay
Pagsasanay sa tayutayPagsasanay sa tayutay
Pagsasanay sa tayutay
 
Retorika
RetorikaRetorika
Retorika
 
Kahalagahan ng wika 2
Kahalagahan ng wika 2Kahalagahan ng wika 2
Kahalagahan ng wika 2
 
Mga batayang uri ng komposisyon
Mga batayang uri ng komposisyonMga batayang uri ng komposisyon
Mga batayang uri ng komposisyon
 
Argumentong Komposisyon
Argumentong KomposisyonArgumentong Komposisyon
Argumentong Komposisyon
 

Uvod do 3D v AS3 pomocí Flare3D a Away3D

  • 1. Úvod do 3D v AS3 s Away3D a Flare3D Nikolaj Rýfr Adobe User Group, Praha, 24. 2. 2011 nikolaj@nikolaj.cz www.nikolaj.cz Saturday,February 26, 2011
  • 2. Nikolaj Rýfr * 1980 Senior RIA developer, geewa.com Ve Flashi od verze 3 (1998) První 3D ostruhy (1994) www.povray.org Twitter: @nikolajcz Další informace: blog.nikolaj.cz Saturday,February 26, 2011
  • 3. Pre-Molehill 3D Flash SMOOTH HIGH POLY?! NICE TEXTURES?! Money For Nothing / Dire Straits, 1985 Pomalý + Ošklivý + Chybový + Zmatený Saturday,February 26, 2011
  • 4. Rozšířené knihovny † Papervision3D Away3D Flare3D - 500 Euro / rok Alternativa3D - nyní creditware Sophie3D - 330 Euro / stránka Yogurt3D Sandy3D Saturday,February 26, 2011
  • 5. Stručné srovnání Away3D Flare3D Open-source Komerční licence Složitější API Přehlednější API Velká komunita Dobrá dokumentace Prefab3D 3Ds MAX plugin + IDE Collada formát .f3d + Collada Away3D Lite ~ 25kb Lepší správa paměti Saturday,February 26, 2011
  • 6. Co je to vlastně to 3D? View - "televizor" Scéna, Kamera, Renderer - "vykreslovač" Objekty - "herci" Drátěné modely, Povrchy - textury, materiály Doplňky - "efekty" Světlo, Augmentovaná Realita, Fyzika Kolize, Stínování, Zrcadla atd… Saturday,February 26, 2011
  • 7. Vytvoření scény Away3D Flare3D scene = new Scene3D(); scene = new Scene3D(this); cam = new Camera3D(); nebo cam.z = 500; cam.lookAt( new Vector3D() ); // prohlížecí mód při návrhu scene = new Viewer3D(this); view = new View3D(); view.scene = scene; scene.camera.setPosition(0,0,500); view.camera = cam; scene.camera.lookAt(0,0,0); view.x = stage.stageWidth / 2; view.y = stage.stageHeight / 2; addChild(view); addEventListener (Event.ENTER_FRAME, processFrame, false,0, true); function processFrame (e:Event):void { view.render(); } Saturday,February 26, 2011
  • 8. První objekt Away3D Flare3D sphere = new Sphere(); sphere = new Sphere ("koule", 100, 12 ); sphere.radius = 100; scene.addChild(sphere); sphere.segmentsH = 12; sphere.segmentsW = 12; scene.addChild(sphere); // do fnc processFrame vlozte: // do handler fnc onEnterFrame: sphere.yaw(1); // otacet sphere.rotateX(1); // kutalet sphere.pitch(1); // kutalet sphere.rotateY(1); // otacet sphere.roll(1); // obracet sphere.rotateZ(1); // obracet Kam dál? Kam dál? package away3d.primitives package flare3d.primitives Saturday,February 26, 2011
  • 9. Make-up Away3D Flare3D material = mars:Texture3D new BitmapFileMaterial ("mars.jpg"); = scene.addTextureFromFile("mars.jpg"); sphere.material = material; scene.addEventListener (Scene3D.COMPLETE_EVENT, allLoaded ); A kde jsou stíny? function allLoaded (e:Event) { marsMat = new TextureMaterial ("mars",mars); light = new DirectionalLight3D(); sphere = new Sphere ("koule", 100, 12, marsMat); scene.addLight(light); } light.direction=new Vector3D(0,-300,100); // použili jsme přidání bitmapy pomocí A ty stíny? [Embed]. pomocná třída Cast v Away3D jen natypovává bitmapData Flare3D má úžasný exportér z 3Ds Max. Vážně! material = new PhongBitmapMaterial Ale dobře... vše se dozvíte v API. :) (Cast.bitmap(marsClass) ); http://bit.ly/fVjgDj Saturday,February 26, 2011
  • 10. Interakce Away3D Flare3D Interakce s objektem Interakce s objektem sphere.addEventListener sphere.addEventListener (MouseEvent3D.MOUSE_UP, handler_fnc); (MouseEvent3D.CLICK, handler_fnc) Interakce s místem na objektu Komplexní interakce rovnou sphere.addEventListener mouse = new MouseCollision() (MouseEvent3D.MOUSE_UP, handler_fnc); mouse.addCollisionWith( sphere ) scene.addEventListener // { handler_fnc(e:MouseEvent3D) } ( Scene3D.RENDER_EVENT, renderEvent ) var target:Vector3D = // renderEvent fnc (prevzato z tutorialu) new Vector3D(e.sceneX,e.sceneY,e.sceneZ); if (mouse.test(Input3D.mouseX, Input3D.mouseY)) {   target.scaleBy(2) var info:CollisionInfo = mouse.data[ 0 ] vector.setPosition cam.x = target.x; (info.point.x, info.point.y, info.point.z) cam.y = target.y; vector.setNormalOrientation( info.normal ) cam.z = target.z; vector.visible = true cam.lookAt( new Vector3D() ); Saturday,February 26, 2011
  • 11. Práce s modely Away3D Flare3D Import COLLADA .DAE modelu Nahrání .f3d modelu cld = new Collada; scene.addChildFromFile( "model.f3d" ); _loader = new Loader3D(); // allLoaded handler _loader.addEventListener biped:Pivot3D = (Loader3DEvent.LOAD_SUCCESS, scene.getChildByName( "model.f3d" ); _onLoadSuccess); biped.addLabel( "walk", 0, 46 ); _loader.loadGeometry("../model.dae",cld); biped.addLabel( "idle", 51, 290 ); _view.scene.addChild(_loader); biped.setScale(.5,.5,.5); biped.z = 162; biped.x = -200; cont:ObjectContainer3D = biped.setRotation(0,345,0); _loader.handle as ObjectContainer3D; biped.playLabel("idle"); animLib:AnimationLibrary = biped.animationPrecision = true; cont.animationLibrary; // a rovnou přidáme kolize :) collisions = new SphereCollision(biped, 20 ); animator = animationLibrary.getAnimation collisions.addCollisionWith(smthng); ("default").animator as BonesAnimator; // smthng je další Pivot3D _animator.play(); Saturday,February 26, 2011
  • 12. Zhodnocení Než bude Molehill, je 3D ve Flashi jenom doplněk a vyžaduje velkou dávku podvádění a ústupků. Away3D je dostupná platforma s velkou, živou základnou, ale Flare3D poskytuje komfort a stabilitu ideální pro práci v komerčním prostředí. Pro mne jasný vítěz, ale jak nám kartami zamíchá Adobe ještě uvidíme. Dobré propojení se stávající 3D workflow se zdá být klíčové. Poznámka: Alternativa3D je určitě taky skvělá knihovna. Na začátku mne odrazovala celkem strohým API, velkou cenou, malou komunitou - proto v ní nedělám a vývoj sleduji jen zběžně. Uvítám Vaše názory na mém blogu v komentářích k této slideshow. Saturday,February 26, 2011
  • 13. Užitečné odkazy Sokoban v Away3D nebo Flare3D? http://bit.ly/dGZZyD Takto si představuji stránku návodů: http://www.flare3d.com/tutorials Molehill for freaks http://www.bytearray.org/?p=2555 Saturday,February 26, 2011
  • 14. Díky za Váš zájem. Jsem hrozně zvědavý, co vymyslíte za úžasné a inspirující věci. Pošlete mi nápady, dotazy a hlavně ukázky na nikolaj@nikolaj.cz Saturday,February 26, 2011