flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● 无语瓶阁下在教程区里 回复“《超简易papervision3D基础 ...”(18:09:44)
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
● bad credit payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:13)
浏览主题:关于rotationX,有问题请教下大家~!

关于rotationX,有问题请教下大家~!
hunter_xsy (2009-12-30 16:30:56)

做了一个随着鼠标左右上下移动改变CUBE的rotationX和rotationY的交互效果,代码如下:
private function mous_Move(e:MouseEvent):void {
cube.rotationY += 0.3*(((mouseX-stage.stageWidth/2)/20)+targetRy-cube.rotationY);
cube.rotationX += 0.3*((-(mouseY-stage.stageHeight/2)/20)-cube.rotationX);
trace(cube.rotationX)
}
然后我再给CUBE加了一个点击事件,分别点左右两边空白处让CUBE水平翻面,问题来了,加了这个效果后,之前的鼠标响应rotationX的效果出现了问题,当点击水平翻面后感觉效果变成了rotationZ旋转效果,请大家帮忙看看,不知道我说清楚了没,下面是点击事件的代码:
private function onClick(event:MouseEvent):void {
if (mouseX > stage.stageWidth / 2 + 50) {
if (click_choose == false) {
targetRy +=90 ;
click_choose=true;
TweenLite.to(cube,0.3,{rotationY:"+90",ease:Back.easeOut,onComplete:onFinishTween});
                       }
                 }
if (mouseX < stage.stageWidth / 2 - 50) {
if (click_choose == false) {                              
targetRy -=90 ;
click_choose=true;                        
TweenLite.to(cube,0.3,{rotationY:"-90",ease:Back.easeOut,onComplete:onFinishTween});
                       }
                 }
}


flash 3d 研究所 DDM君
(2009-12-30 20:37:50)
三维的rotation如果不用四元数,是很麻烦的,是一个相对的旋转,也就说当你旋转了一个轴后,另外的轴的方向都可能变换了。

如果要制作流畅正确的旋转,参考我们研究所下面这篇文章:
http://www.flab3d.com/tutorial.php?top=t21quat


flash 3d 研究所 hunter_xsy
(2009-12-31 10:30:31)


flash 3d 研究所 hunter_xsy
(2009-12-31 10:43:53)
谢谢DDM君的提示,教程看得我有点云里雾里。:(
现在的问题就是要把rotationX和rotationY换算成四元数是吧,
那具体的写法是否是这样?
var point:number3D=new Number3D(0,0,0);
var arr:Array=[cos90,0,-sin90,0,
      0,1,0,0,
      sin90,0,cos90,0,
      0,0,0,1];
var matrix: Matrix3D=new Matrix3D(arr);
cube.rotationY=Matrix3D.multiplyVector4x4(matrix,point)

flash 3d 研究所 hunter_xsy
(2009-12-31 10:47:09)
然后COS跟SIN的度数也要换成弧度数?
Math.sin(90 * Math.PI/180)
Math.cos(90 * Math.PI/180)

flash 3d 研究所 hunter_xsy
(2009-12-31 17:38:47)
trace(matrix)和trace(point)都有结果,为嘛我trace(Matrix3D.multiplyVector4x4(matrix,point) )的结果是undefined呀?


评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了