Знакомство с Papervision3d - Presentation Transcript
Рузанов Игорь . UAFPUG, 16.08.2008.
Введение
Papervision3D – написанная на AS3 библиотека (движок) для работы с 3-х мерной графикой в Adobe Flash и Flex
С открытым исходным кодом
MIT лицензия
Установка
Скачать из репозитория Svn (TortoiseSVN ) : http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite/src
Добавить файлы в classpath проекта
Импортировать papervision классы в проект
Основные классы
Viewport3D
Scene3D
Camera3D (or alternatives)
BasicRenderEngine (or alternative)
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); } } }
Viewport3D
viewportWidth
viewportHeight
autoScaleToStage
interactive
autoClipping – объекты вне прямоугольника viewport’a не будут рендерится
autoCulling - будут рендерится только объекты, которые находятся перед камерой (треугольники спрятанные за другими треугольниками не будут отрендерены)
Camera3D
Camera3D
FreeCamera3D
FrustumCamera3D
BasicRenderEngine
private var renderer:BasicRenderEngine = new BasicRenderEngine();
private function mousePressHandler(e:Event):void { state = UPDATING_STATE; } private function mouseReleaseHandler(e:Event):void { state = EASING_STATE; } Обработка событий мышки
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; } Переключение между состояниями
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; } Создание материала (текстуры)
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); } Добавление событий мышки для материала
1 comments
Comments 1 - 1 of 1 previous next Post a comment