Houdini中vex 矩阵变换

Houdini中vex 矩阵变换

vector xform=chv('transform') , rot=chv('rot') , scale=chv('scale') ; 
float tx=xform.x , ty=xform.y , tz=xform.z ; 
float rx=radians(rot.x) , ry=radians(rot.y) , rz=radians(rot.z) ; 
float sx=scale.x , sy=scale.y , sz=scale.z ; 
vector4 r1 , r2 , r3 , r4 ; 
r1 = set( sx*cos(ry)*cos(rz) , sx*cos(ry)*sin(rz) , -sx*sin(ry) , 0 ) ; 
r2 = set( sy*(cos(rz)*sin(rx)*sin(ry)-cos(rx)*sin(rz)) , sy*(cos(rx)*cos(rz)+sin(rx)*sin(ry)*sin(rz)) , sy*cos(ry)*sin(rx) , 0 ) ; 
r3 = set( sz*(sin(rx)*sin(rz)+cos(rx)*cos(rz)*sin(ry)) , sz*(cos(rx)*sin(ry)*sin(rz)-cos(rz)*sin(rx)) , sz*cos(rx)*cos(ry) , 0 ) ; 
r4 = set( tx , ty , tz , 0 ) ; 
//matrix m=set(r1,r2,r3,r4) ; 

@P *= set(r1,r2,r3,r4) ; 

能够实现基本的变换功能 ;

另外,根据矩阵求旋转向量的方法:
接着上面的代码

@x = atan2(r2.z/sy,r3.z/sz) ; 
@y = asin(-r1.z/sx) ; 
@z = atan2(r1.y/sx,r1.x/sx) ; 

x,y,z分别对应绕各轴向的旋转角度 ;其中sx,sy,sz可由对应r1,r2,r3各个分量的平方和再开根号求得 ;

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值