'

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

Понравилась презентация – покажи это...





Слайд 0

Знакомство с papervision3d Рузанов Игорь. UAFPUG, 16.08.2008.


Слайд 1

Введение Papervision3D – написанная на AS3 библиотека (движок) для работы с 3-х мерной графикой в Adobe Flash и Flex С открытым исходным кодом MIT лицензия


Слайд 2

Установка Скачать из репозитория Svn (TortoiseSVN): http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite/src Добавить файлы в classpath проекта Импортировать papervision классы в проект


Слайд 3

Основные классы Viewport3D Scene3D Camera3D (or alternatives) BasicRenderEngine (or alternative)


Слайд 4

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);         }    } }


Слайд 5

Viewport3D viewportWidth viewportHeight autoScaleToStage interactive autoClipping – объекты вне прямоугольника viewport’a не будут рендерится autoCulling - будут рендерится только объекты, которые находятся перед камерой (треугольники спрятанные за другими треугольниками не будут отрендерены)


Слайд 6

Camera3D Camera3D FreeCamera3D FrustumCamera3D


Слайд 7

BasicRenderEngine private var renderer:BasicRenderEngine = new BasicRenderEngine(); //обычно вызывается на Event.ENTER_FRAME renderer.renderScene(scene, camera, viewport);


Слайд 8

3D координаты


Слайд 9

3D объекты. Плоскость Plane(material:MaterialObject3D=null, width:Number=0, height:Number=0, segmentsW:Number=0, segmentsH:Number=0, initObject:Object=null)


Слайд 10

3D объекты. Сфера Sphere(material:MaterialObject3D=null, radius:Number=100, segmentsW:int=8, segmentsH:int=6,initObject:Object=null)


Слайд 11

3D объекты. Куб 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);


Слайд 12

3D объекты. Куб 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);


Слайд 13

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


Слайд 14

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); Инициализация куба


Слайд 15

private function mousePressHandler(e:Event):void { state = UPDATING_STATE; } private function mouseReleaseHandler(e:Event):void { state = EASING_STATE; } Обработка событий мышки


Слайд 16

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; } Переключение между состояниями


Слайд 17

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; } Создание материала (текстуры)


Слайд 18

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); } Добавление событий мышки для материала


Слайд 19

Полезные ссылки http://blog.papervision3d.org/ http://pv3d.org/ http://papervision2.com/ http://blog.zupko.info/ http://mrdoob.com/blog/


Слайд 20

Спасибо за внимание Изображения для панорамы (с) MyDeco.com


×

HTML:





Ссылка: