![]() |
DDM君 (2008-11-18 23:46:00) |
大家测试后遇到什么问题可以告诉我,好立即修改,感谢了^_^ |
![]() |
苹果 (2008-11-19 12:23:21) |
实现单一的绕y轴旋转测试通过,期待更复杂的效果 |
![]() |
DDM君 (2008-11-19 13:28:50) |
感谢苹果君。 不过暂时不准备在这方面继续,完美的全方位旋转其实是个死胡同,这也是为什么以前那个orbit被取消掉的原因,配合第4个参数大部分游戏需要的情况都够用的啦,呵呵。 具体有什么使用上要求都可以提,具体问题具体解决嘛。 |
![]() |
Justin (2008-11-24 16:02:45) |
很实用的功能~~有个问题~为什么我下的pv3d里没FreeCamera3D类~是Camera3D类~~FreeCamera3D是官方的吗?难道我下的不是最新的,里面还有orbit方法~~ |
![]() |
DDM君 (2008-11-24 16:58:05) |
是的 为了避免很多麻烦 请直接使用我们这里提供的傻瓜包 里面都是最新的pv3d功能 而且随时会随google那边更新而更新,我们也在不断加入新功能 可以定时下载来覆盖以前的就是 |
![]() |
martin (2008-12-17 17:20:56) |
你好,我用orbitY每次旋转一周后就会卡一下,不知道怎么回事! [code] package { import flash.display.DisplayObject; import flash.display.Sprite; import flash.display.MovieClip; import flash.events.Event; import org.papervision3d.core.proto.MaterialObject3D; import org.papervision3d.materials.BitmapMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.cameras.FreeCamera3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.events.InteractiveScene3DEvent; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.materials.MovieAssetMaterial; import org.papervision3d.events.FileLoadEvent; /** * @PageName : cube * @author : Martin * @QQ : 183654371 * @MSN : im@mococo.cn */ public class cube extends Sprite { private var viewport:Viewport3D; private var renderer:BasicRenderEngine; private var scene:Scene3D; private var camera:FreeCamera3D; private var cuber:Cube; private var plane:Plane; private var do3d:DisplayObject3D; private var imtes:Object; private var yPos:Number = 0; private var numOfRotations:int = 2; private var anglePer:Number = 0; public function cube() { addEventListener(Event.ADDED_TO_STAGE, init); addEventListener(Event.REMOVED_FROM_STAGE, init); } private function init(e:Event):void { viewport = new Viewport3D(480, 320, true, true); viewport.buttonMode = true; renderer=new BasicRenderEngine(); scene = new Scene3D(); camera = new FreeCamera3D(); camera.zoom = 80; addChild(viewport); viewport.interactive=true; var left:MovieAssetMaterial = new MovieAssetMaterial('cubemc', false); var right:MovieAssetMaterial = new MovieAssetMaterial('cubemc', false); var top:MovieAssetMaterial = new MovieAssetMaterial('cubemc', false); var down:MovieAssetMaterial = new MovieAssetMaterial('cubemc', false); var front:MovieAssetMaterial = new MovieAssetMaterial('cubemc', false); var back:MovieAssetMaterial = new MovieAssetMaterial('cubemc', false); var materialist:MaterialsList = new MaterialsList(); materialist.addMaterial(left, 'left'); materialist.addMaterial(right, 'right'); materialist.addMaterial(top, 'top'); materialist.addMaterial(down, 'bottom'); materialist.addMaterial(front, 'front'); materialist.addMaterial(back, 'back'); cuber = new Cube(materialist, 100, 100, 100, 1, 1, 1); scene.addChild(cuber); imtes = { }; do3d = new DisplayObject3D(); anglePer = ((Math.PI * 2) * numOfRotations) / 14; for (var i:int = 1; i < 15 ; i ++ ) { imtes[i] = { }; imtes[i].bfm = new BitmapFileMaterial('cube/' + i + '.jpg', false); imtes[i].bfm.interactive = true; imtes[i].bfm.name = 'bfm' + i; imtes[i].bfm.addEventListener( FileLoadEvent.LOAD_COMPLETE , addContent ); imtes[i].bfm.oneSide = false; imtes[i].bfm.smooth = true; } camera.lookAt(do3d); scene.addChild(do3d); addEventListener(Event.ENTER_FRAME,process); } private function onClick(e:InteractiveScene3DEvent):void { trace('e: ' + e); } private function addContent(e:FileLoadEvent):void { numLoaded ++; plane = new Plane(e.currentTarget as MaterialObject3D, 130, 87, 2, 2); trace(plane.name); plane.x = Math.cos(numLoaded * anglePer) * 200; plane.z = Math.sin(numLoaded * anglePer) * 200; plane.y = yPos += 40; plane.rotationY = ( -numLoaded * anglePer) * (180 / Math.PI) + 270; trace(anglePer, numLoaded); plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onClick); do3d.addChild(plane); } private var numLoaded:int = 0; private function process(evt:Event):void { camera.orbitY(do3d, 2, 900, 100); renderer.renderScene(scene, camera, viewport); } } } [/code] |
![]() |
kevinwong (2008-12-17 17:37:12) |
orbitY本身是不会卡的,你可以用最简单的场景试一试。 卡一般的原因是你某个物体的某个旋转转一周后被复位了。 |
![]() |
小香猪 (2008-12-17 17:37:59) |
建议把傻瓜包放到Google code上面更新,还可以加入更多的人进行修改,大家从SVN上更新更容易点。 |
![]() |
DDM君 (2008-12-17 19:30:16) |
呵呵,这个不可以哈,傻瓜包不过是pv3d加了点自己的修改而已 不能放google code的 |
![]() |
E.P, (2009-05-17 23:16:05) |
太牛了··必须要感谢下·· |
![]() |
DDM君 (2009-05-18 08:10:58) |
呵呵,没事没事,欢迎光临 对了,我们的FlabCamera3D也可以用这个方法了哦,以后都用FlabCamera3D就可以了。 |
![]() |
netsnower (2009-05-18 11:42:40) |
请问这个功能和camera.moveLeft(1)有什么区别。 直接使用camera.moveLeft(1)不是也可以绕中心点移动相机吗? |
![]() |
DDM君 (2009-05-18 23:11:16) |
orbitY是靠三角运算得出来的位置 |
|
|