Рузанов Игорь . UAFPUG, 16.08.2008.
Введение <ul><li>Papervision3D  – написанная на  AS3  библиотека (движок) для работы с 3-х мерной графикой в  Adobe Flash ...
Установка <ul><li>Скачать из репозитория  Svn (TortoiseSVN ) :   http://papervision3d.googlecode.com/svn/trunk/branches/Gr...
Основные классы <ul><li>Viewport3D </li></ul><ul><li>Scene3D </li></ul><ul><li>Camera3D (or alternatives) </li></ul><ul><l...
package   {    import … ;     public class Main extends Sprite{         private var viewport:Viewport3D;         private v...
Viewport3D <ul><li>viewportWidth </li></ul><ul><li>viewportHeight </li></ul><ul><li>autoScaleToStage </li></ul><ul><li>int...
Camera3D <ul><li>Camera3D </li></ul><ul><li>FreeCamera3D </li></ul><ul><li>FrustumCamera3D </li></ul>
BasicRenderEngine <ul><li>private var renderer:BasicRenderEngine = new BasicRenderEngine(); </li></ul><ul><li>// обычно вы...
3 D  координаты
3 D  объекты. Плоскость <ul><li>Plane(material:MaterialObject3D=null, width:Number=0,   height:Number=0,   segmentsW:Numbe...
3 D  объекты. Сфера <ul><li>Sphere(material:MaterialObject3D=null, radius:Number=100, segmentsW:int=8, segmentsH:int=6,ini...
3 D  объекты. Куб <ul><li>var materialsList:MaterialsList = new MaterialsList(); </li></ul><ul><li>materialsList.addMateri...
3 D  объекты. Куб <ul><li>var materialsList:MaterialsList = new MaterialsList(); </li></ul><ul><li>var insideFaces:int = C...
private function initPapervision3D():void { viewport = new Viewport3D(); viewport.interactive = true; viewport.autoScaleTo...
cube = new Cube(materials, CUBE_SIZE, CUBE_SIZE, CUBE_SIZE, CUBE_QUALITY, CUBE_QUALITY, CUBE_QUALITY, Cube.ALL, Cube.NONE)...
private function mousePressHandler(e:Event):void { state = UPDATING_STATE; } private function mouseReleaseHandler(e:Event)...
removeEnterFrameListeners(); switch (value) { case UPDATING_STATE : stage.quality = StageQuality.LOW; addEventListener(Eve...
private function createMaterial(url:String, sideName:String):MovieMaterial { var movie:CubeSide = new CubeSide(url); movie...
private function createArea():void { var rect:Rectangle = new Rectangle(area[0], area[1], area[2], area[3]); var bitmap:Bi...
Полезные ссылки <ul><li>http://blog.papervision3d.org/ </li></ul><ul><li>http://pv3d.org/ </li></ul><ul><li>http://papervi...
Спасибо за внимание <ul><li>Изображения для панорамы (с)   MyDeco.com </li></ul>
Upcoming SlideShare
Loading in...5
×

Знакомство с Papervision3d

1,980

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,980
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Знакомство с Papervision3d

  1. 1. Рузанов Игорь . UAFPUG, 16.08.2008.
  2. 2. Введение <ul><li>Papervision3D – написанная на AS3 библиотека (движок) для работы с 3-х мерной графикой в Adobe Flash и Flex </li></ul><ul><li>С открытым исходным кодом </li></ul><ul><li>MIT лицензия </li></ul>
  3. 3. Установка <ul><li>Скачать из репозитория Svn (TortoiseSVN ) : http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite/src </li></ul><ul><li>Добавить файлы в classpath проекта </li></ul><ul><li>Импортировать papervision классы в проект </li></ul>
  4. 4. Основные классы <ul><li>Viewport3D </li></ul><ul><li>Scene3D </li></ul><ul><li>Camera3D (or alternatives) </li></ul><ul><li>BasicRenderEngine (or alternative) </li></ul>
  5. 5. package {    import … ;     public class Main extends Sprite{         private var viewport:Viewport3D;         private var scene:Scene3D;         private var camera:Camera3D;         private var renderer:BasicRenderEngine;         public function Main() {                initPapervision3D();         }         private function initPapervision3D():void {                viewport = new Viewport3D();                addChild(viewport);                scene = new Scene3D();                camera = new Camera3D();                renderer = new BasicRenderEngine();                renderer.renderScene(scene, camera, viewport);         }    } }
  6. 6. Viewport3D <ul><li>viewportWidth </li></ul><ul><li>viewportHeight </li></ul><ul><li>autoScaleToStage </li></ul><ul><li>interactive </li></ul><ul><li>autoClipping – объекты вне прямоугольника viewport’a не будут рендерится </li></ul><ul><li>autoCulling - будут рендерится только объекты, которые находятся перед камерой (треугольники спрятанные за другими треугольниками не будут отрендерены) </li></ul>
  7. 7. Camera3D <ul><li>Camera3D </li></ul><ul><li>FreeCamera3D </li></ul><ul><li>FrustumCamera3D </li></ul>
  8. 8. BasicRenderEngine <ul><li>private var renderer:BasicRenderEngine = new BasicRenderEngine(); </li></ul><ul><li>// обычно вызывается на Event.ENTER_FRAME </li></ul><ul><li>renderer.renderScene(scene, camera, viewport); </li></ul>
  9. 9. 3 D координаты
  10. 10. 3 D объекты. Плоскость <ul><li>Plane(material:MaterialObject3D=null, width:Number=0, height:Number=0, segmentsW:Number=0, segmentsH:Number=0, </li></ul><ul><li>initObject:Object=null) </li></ul>
  11. 11. 3 D объекты. Сфера <ul><li>Sphere(material:MaterialObject3D=null, radius:Number=100, segmentsW:int=8, segmentsH:int=6,initObject:Object=null) </li></ul>
  12. 12. 3 D объекты. Куб <ul><li>var materialsList:MaterialsList = new MaterialsList(); </li></ul><ul><li>materialsList.addMaterial(frontMaterial, &quot;front&quot;); </li></ul><ul><li>materialsList.addMaterial(backMaterial, &quot;back&quot;); </li></ul><ul><li>materialsList.addMaterial(leftMaterial, &quot;left&quot;); </li></ul><ul><li>materialsList.addMaterial(rightMaterial, &quot;right&quot;); </li></ul><ul><li>materialsList.addMaterial(topMaterial, &quot;top&quot;); </li></ul><ul><li>materialsList.addMaterial(bottomMaterial, &quot;bottom&quot;); </li></ul><ul><li>var cube:Cube = new Cube(materialsList); </li></ul><ul><li>scene.addChild(cube); </li></ul>
  13. 13. 3 D объекты. Куб <ul><li>var materialsList:MaterialsList = new MaterialsList(); </li></ul><ul><li>var insideFaces:int = Cube.LEFT + Cube.RIGHT + Cube.BOTTOM; </li></ul><ul><li>var cube:Material = new Cube(m, w, d, h, sS, sT, sH, insideFaces); </li></ul>
  14. 14. private function initPapervision3D():void { viewport = new Viewport3D(); viewport.interactive = true; viewport.autoScaleToStage = true; addChild(viewport); scene = new Scene3D(); camera = new Camera3D(); camera.z = 0; camera.focus = 20; renderer = new BasicRenderEngine(); } Инициализация Papervision3d
  15. 15. cube = new Cube(materials, CUBE_SIZE, CUBE_SIZE, CUBE_SIZE, CUBE_QUALITY, CUBE_QUALITY, CUBE_QUALITY, Cube.ALL, Cube.NONE); cube.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, mousePressHandler); cube.addEventListener(InteractiveScene3DEvent.OBJECT_RELEASE, mouseReleaseHandler); cube.addEventListener(InteractiveScene3DEvent.OBJECT_DOUBLE_CLICK, mouseDoubleClickHandler); scene.addChild(cube); Инициализация куба
  16. 16. private function mousePressHandler(e:Event):void { state = UPDATING_STATE; } private function mouseReleaseHandler(e:Event):void { state = EASING_STATE; } Обработка событий мышки
  17. 17. removeEnterFrameListeners(); switch (value) { case UPDATING_STATE : stage.quality = StageQuality.LOW; addEventListener(Event.ENTER_FRAME, updateCamera); break; case EASING_STATE : stage.quality = StageQuality.LOW; addEventListener(Event.ENTER_FRAME, easeCamera); break; case NORMAL_STATE : stage.quality = StageQuality.HIGH; break; } Переключение между состояниями
  18. 18. private function createMaterial(url:String, sideName:String):MovieMaterial { var movie:CubeSide = new CubeSide(url); movie.addEventListener(Event.COMPLETE, bitmapLoaded); var material:MovieMaterial = new MovieMaterial(movie); material.smooth = true; material.interactive = true; material.animated = true; return material; } Создание материала (текстуры)
  19. 19. private function createArea():void { var rect:Rectangle = new Rectangle(area[0], area[1], area[2], area[3]); var bitmap:Bitmap = Bitmap(loader.contentLoaderInfo.content); var mc:Sprite = new Sprite(); mc.x = rect.x; mc.y = rect.y; mc.alpha = 0; mc.addChild(getHighlightedBitmap(bitmap, rect)); mc.addEventListener(MouseEvent.MOUSE_OVER, handleMouseOver); mc.addEventListener(MouseEvent.MOUSE_OUT, handleMouseOut); addChild(mc); } Добавление событий мышки для материала
  20. 20. Полезные ссылки <ul><li>http://blog.papervision3d.org/ </li></ul><ul><li>http://pv3d.org/ </li></ul><ul><li>http://papervision2.com/ </li></ul><ul><li>http://blog.zupko.info/ </li></ul><ul><li>http://mrdoob.com/blog/ </li></ul>
  21. 21. Спасибо за внимание <ul><li>Изображения для панорамы (с) MyDeco.com </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×