注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[转] MAX SDK的INode的变换矩阵  

2012-11-17 23:32:16|  分类: 3d_3dmax |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Node->GetNodeTM()
Node的TM,不是Object的TM。每个Node都有个基准点(Pivot Point)。这个Pivot Point在世界坐标中的状态,就是这个Node的TM。而附加在这个Node上的Object相对这个Pivot Point可能会有其他的变换(平一、旋转等)。

INode->GetParentTM()
父节点的TM。我们说过NodeTM是在世界坐标中的。所以,要得到节点相对父节点的TM需要 GetNodeTM() * Inverse(GetParentTM())。

INode->GetObjectTM()
用这个矩阵,可以把Node中的Object变换到世界空间来。
其实GetObjectTM() = NodeTM() * (Object相对于Node的变换)。

INode->GetObjTMAfterWSM()
WSM 的意思是World Space Modifer。Modifer有两中:一种是Object Space的;一种是World Space的。如名字所暗示的:World Space Modifier要把Object先变换到世界空间里来,而不是物体空间中。所以,如果一个Object(Node上的Object)受到过World Space Modifier的影响,我们在EvalWorldState()的时候已经把顶点变换到世界坐标系中来了。GetObjectTM返回的将是把Object从INode的局部坐标系变换到世界坐标系的矩阵,如果把ObjectTM乘上得到的顶点(经过WSM后,顶点已经在世界空间中了),就做了两次世界变换了,所以我们需要得到Node>的一个矩阵,这个矩阵是表示能把经过WSM变换后的顶点正确的变换到世界空间中来。 这个矩阵就是GetObjTMAfterWSM()。如果一个INode上没有WSM,那么GetObjTMAfterWSM()和GetObjectTM是相同的。同样,它和GetObjTMBeforeWSM也是相同的。

INode->GetObjTMBeforeWSM()
这个函数的到WSM施加在INode前的ObjectTM。即这个INode不包括WSM时候,把它的Object的顶点变换到世界坐标系中的变换矩阵。

  评论这张
 
阅读(642)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017