MAX SDK的INode的变换矩阵,以及Object的一些常识

转载 2006年06月05日 21:13:00

MAX SDK中,INode是很重要的一个部分。 几乎所有的东西都需要通过INode来访问:Mesh Camera等.
下面我来简单的介绍一下和INode相关的各种不同的TM.(Transformation Matrix).仅仅代表我近日阅读MAX SDK的一些理解.希望高手指教.新手讨论.

首先是介绍一下Node和Object(Mesh TriObject等).
MAX里的Scene是由INode构成的,Node里包含很多东西.这个Node可能是可以Deform(变形)的,或者是不可以Deform的。如常见的Editable Mesh和Cylinder一类的东西是可以Deform的Node. 而Camera是不可以Deform的。
一个包含了几何物体的Node(就是可以转化为GeomObject的)中的几何体并不是Node本身.而是Node中的Object .这个Object 可能是一个Derived Object(表示这个Object从别的Object那里派生出来,通常是从上一个修改器(Modifier)的结果那里派生的). 同时还附加了一些Modefier  每个Modifer的修改结果都是一个Deried Object .而类似Pyhsique的修改器都是作用在Derived Object上.因此,要找一个Node有没有Pyhsique的修改器,需要通过Derived Object来得到.
INode->GetObjectRef()可以得到这个物体的Object .
Object->SuperClassID() == GEN_DERIVED_CLASS_ID的话,就表示这个Object是一个Derived Object .
DerivedObject->GetObjectRef()得到这个这个Derived Object是从那个Object派生出来的..

用上面三个函数.可以遍历一个Node从创建到形成这个Node,所有经过的Derived Object.

如果要得到这个Node上最终的Object的状态(ObjectState.它包含了Node的Object). 只要调用INode->EvalWorldState()就可以了。

下面.我来介绍Node里容易引起混淆的几个TM.
INode->GetNodeTM().: NodeTM()只包含了Node的TM.不是物体的TM. 每个Node都有个基准点(Pivot Point). 这个Pivot Point在世界坐标中的状态,就是这个Node的TM. 而附加在这个Node上的Object相对这个Pivot Point可能会有其他的变换(平一,旋转等). 所以.NodeTM不能用来变换Object.

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

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

INode->GetObjTMBeforeWSM() : WSM的意思是World Space Modifer. Modifer有两中,一种是Object Space的。一种是World Space的.如名字所暗示的: World Space Modifier要把Object先变换到世界空间里来.而不是物体空间中,所以,如果一个Object(Node上的Object)受到过World Space Modifier的影响。那么它已经变换到世界坐标系中来了。GetObjectTM返回的将是单位矩阵(否则,就做了两次世界变换了). 但是我们想得到把Object变换到世界空间的矩阵,那么怎么办呢?,唯一的办法就是GetObjTMBeforeWSM(). 它将返回一个等效于没有WSM的时候的GetObjectTM.

INode->GetObjTMAfterWSM() : 本人实在没有想到这个TM有什么用途.望高人指教.


以上只是本人的拙见.参考了MAX SDK中的:
The Node and Object Offset Transformations
Geometry Pipeline System
的两个部分.

发表在这里,希望能让MAX SDK中的东西也能引起大家注意. 多多讨论.
MAX SDK里有很多没有天理的东西.希望大家也能商量点天理出来

xheartblue 2005 - 1- 6 凌晨

一维离散余弦变换矩阵生成

  • 2015年12月11日 20:13
  • 159B
  • 下载

Opencv中使用Surf特征实现图像配准及对透视变换矩阵H的平移修正

图像配准需要将一张测试图片按照第二张基准图片的尺寸、角度等形态信息进行透视(仿射)变换匹配,本例通过Surf特征的定位和匹配实现图像配准。 配准流程: 1. 提取两幅图像的Surf...
  • dcrmg
  • dcrmg
  • 2016年09月22日 22:57
  • 6376

基于角点变换矩阵的图像拼接

  • 2012年03月22日 23:04
  • 907KB
  • 下载

[WebGL入门]十三,minMatrix.js和坐标变换矩阵

这次介绍了一下本网站的矩阵计算的库minMatrix.js的基本的使用方法,和坐标变换矩阵的顺序。 minMatrix.js通过一个叫做matIV的对象来对矩阵进行操作,各种方法的具体内容,现在不明白...

基础——仿射变换矩阵与warpAffine

本文转载于: http://blog.csdn.net/q123456789098/article/details/53330484 http://www.cnblogs.com/ghj1976/...

使用ICP得到的变换矩阵更新相机位置

大多数关于ICP的介绍都是介绍了ICP算法如何配准两个点云,但是没有介绍如何更新相机位置,本文将对此进行介绍。 已知: 点云X0和X1,点云X0对应的相机外参矩阵M0。 待求: 点云M1对应的相机外参...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MAX SDK的INode的变换矩阵,以及Object的一些常识
举报原因:
原因补充:

(最多只允许输入30个字)