More Related Content Similar to Pv3d开发流程及商业应用 孙令纯 (6) More from FLASH开发者交流会 (20) Pv3d开发流程及商业应用 孙令纯2. 开发流程: DAE 文件 swf Viewport3D 用来将 3D 场景内计算出来的 3 维图象映射到 flash 的 2 维平面。第 3 个参数则指 示当舞台的大小发生变化时候 Viewport3D 是否 reSize 。最后一个参数指示构建出来的这个 窗口是否响应鼠标交互事件。 所有被创建且需要显示在场景上的 3D 物体,都需要 addChild 到 Scene3D 的显示列表里, 这点和 flash 的 addChild 很像。 3. 开发流程: 移动,旋转 触发响应: camera.moveForward(160); camera.moveBackward(160); camera.moveUp(160); camera.moveDown(160); camera.moveLeft(160); camera.moveRight(160); camera.yaw(2); camera.pitch(2); camera. roll(2); camera.rotationY+=2; camera.rotationZ+=2; camera.rotationX+=2; camera.z+=160; camera.z-=160; camera.y+=160; camera.y-=160; camera.x+=160; camera.x-=160; material= new BitmapFileMaterial("image/cf.png"); material.interactive=true; plane= new Plane(material,3000, 3000, 2, 3 ); plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, planeclick); scene.addChild(plane); private function planeclick( e:InteractiveScene3DEvent ):void { } 4. 开发流程: DAE 文件的触发: private function setInteractiveMaterials(targetObject:DisplayObject3D, value:Boolean):void { for each(var mat:MaterialObject3D in _targetObject.materials.materialsByName) { mat.interactive = value; } } private function addEventListeners(displayObject:DisplayObject3D, eventType:String, listener:Function):void { displayObject.addEventListener(eventType, listener); for each(var child:DisplayObject3D in displayObject.children) { addEventListeners(child, eventType, listener); } } addEventListeners(_obj, InteractiveScene3DEvent.OBJECT_PRESS, daePressedHandler); 5. 开发流程: 利用 Tweener 制作动画 import caurina.transitions.*; Tweener.addTween(n1,{x:-24000,y:7400,z:60000,delay:0,time:30, transition:"linear" } ); Tweener.removeAllTweens(); Tweener.removeTweens(target:Object [, property1:String, property2:String, ...]):Boolean; Tweener.removeTweens(myMovieClip, "_x", "_y", "_alpha"); 7. 开发流程: 摄像机碰撞 private var rx :Number= 0; private var ry :Number = 0; private var rz :Number = 0; public function loop(event:Event):void { if (camera.x>8684||camera.x<-8684||camera.z<-16200||camera.z>18343) { camera.x=rx; camera.y=ry; camera.z=rz; } rx=camera.x; ry=camera.y; rz=camera.z; } 8. 开发流程: 效果表现: 反射: 使用 MovieClip : public class ReflectionSimple extends ReflectionView public function ReflectionSimple() { surfaceHeight = -100; } import org.papervision3d.materials.MovieAssetMaterial; mat= new MovieAssetMaterial("mat",true,true); mat.interactive=true; (mat.movie as Movieclip).gotoAndPlay(); 10. 商业应用: http://www.vousleboss.com/ http://www.bandit3.com/ http://cardboard.theupsstore.com/ http://www.ha-py.com/island/ http://www.sointeractive.pl/ http://ecodazoo.com/ http://www.ecsw.pl/ http://www.toyota-europe.com/cars/new_cars/iq/minisite/index.aspx http://nikon-connect.com/en/main.html