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

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

Post a comment
Embed Video
Edit your comment Cancel

Favorites, Groups & Events

Знакомство с Papervision3d - Presentation Transcript

  1. Рузанов Игорь . UAFPUG, 16.08.2008.
  2. Введение
    • Papervision3D – написанная на AS3 библиотека (движок) для работы с 3-х мерной графикой в Adobe Flash и Flex
    • С открытым исходным кодом
    • MIT лицензия
  3. Установка
    • Скачать из репозитория Svn (TortoiseSVN ) : http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite/src
    • Добавить файлы в classpath проекта
    • Импортировать papervision классы в проект
  4. Основные классы
    • Viewport3D
    • Scene3D
    • Camera3D (or alternatives)
    • BasicRenderEngine (or alternative)
  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. Viewport3D
    • viewportWidth
    • viewportHeight
    • autoScaleToStage
    • interactive
    • autoClipping – объекты вне прямоугольника viewport’a не будут рендерится
    • autoCulling - будут рендерится только объекты, которые находятся перед камерой (треугольники спрятанные за другими треугольниками не будут отрендерены)
  7. Camera3D
    • Camera3D
    • FreeCamera3D
    • FrustumCamera3D
  8. BasicRenderEngine
    • private var renderer:BasicRenderEngine = new BasicRenderEngine();
    • // обычно вызывается на Event.ENTER_FRAME
    • renderer.renderScene(scene, camera, viewport);
  9. 3 D координаты
  10. 3 D объекты. Плоскость
    • Plane(material:MaterialObject3D=null, width:Number=0, height:Number=0, segmentsW:Number=0, segmentsH:Number=0,
    • initObject:Object=null)
  11. 3 D объекты. Сфера
    • Sphere(material:MaterialObject3D=null, radius:Number=100, segmentsW:int=8, segmentsH:int=6,initObject:Object=null)
  12. 3 D объекты. Куб
    • var materialsList:MaterialsList = new MaterialsList();
    • materialsList.addMaterial(frontMaterial, "front");
    • materialsList.addMaterial(backMaterial, "back");
    • materialsList.addMaterial(leftMaterial, "left");
    • materialsList.addMaterial(rightMaterial, "right");
    • materialsList.addMaterial(topMaterial, "top");
    • materialsList.addMaterial(bottomMaterial, "bottom");
    • var cube:Cube = new Cube(materialsList);
    • scene.addChild(cube);
  13. 3 D объекты. Куб
    • var materialsList:MaterialsList = new MaterialsList();
    • var insideFaces:int = Cube.LEFT + Cube.RIGHT + Cube.BOTTOM;
    • var cube:Material = new Cube(m, w, d, h, sS, sT, sH, insideFaces);
  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. 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. private function mousePressHandler(e:Event):void { state = UPDATING_STATE; } private function mouseReleaseHandler(e:Event):void { state = EASING_STATE; } Обработка событий мышки
  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. 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. 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. Полезные ссылки
    • http://blog.papervision3d.org/
    • http://pv3d.org/
    • http://papervision2.com/
    • http://blog.zupko.info/
    • http://mrdoob.com/blog/
  21. Спасибо за внимание
    • Изображения для панорамы (с) MyDeco.com

+ r00zr00z, 2 years ago

custom

1066 views, 0 favs, 0 embeds more stats

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 1066
    • 1066 on SlideShare
    • 0 from embeds
  • Comments 1
  • Favorites 0
  • Downloads 6
Most viewed embeds

more

All embeds

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?