请教了几个高手,
回答都是NO,
没有近路可走,
但我还是不甘心,
所以来到CSDN再次提问,我的问题是这样的,
现在有一个3D模型,
这个模型有N个顶点,
在不允许使用D3D、OPENGL现成库函数的前提下,
如果需要对这个模型进行3D变换的话,
需要对这N个顶点依次操作,
这个矩阵类我已经写好了,
但是N个顶点要进行N次操作,
是不是很累,
计算机也很累,我现在有1个想法,
就是可不可以找到一个“这个模型的局部坐标原点的向量”,
从而当我仅需要对“这个局部坐标原点向量”操作1次,
这N个顶点就全部搞定,
不需要操作N次,
这个设想是不是很幼稚呢?
有没有这样的近路可以走呢?

解决方案 »

  1.   

    自己写嘛,通过矩阵对每个顶点进行变换,DX、opgl其实也是通过矩阵变换的;只不过他能利用硬件的能力;
    自己写的未必比他们慢。
    《《winows 游戏编程大师 下册 里有》》 你可以查阅下
      

  2.   

    模型的N个顶点,要想渲染出来,最终要变换到世界坐标系中,每个顶点都要乘上世界矩阵,这个计算是少不了的,只是像OpenGL,Direct3D会帮你在硬件中进行这些变换,只要你把模型的世界矩阵准备好发给图形硬件就可以了你说的模型局部坐标原点,实际上它本身就隐含着有个局部坐标原点,就是(0, 0, 0),你想要把模型放在世界的某个位置,就得有个偏移量,比如(10, 12, 36),这时这个坐标就是基于世界坐标系了也就是说,你想要把模型变换到世界坐标系中,每个顶点的坐标都要加上这个偏移量,这时我们可以把这个偏移量来构造一个世界矩阵:
    1  0  0  0
    0  1  0  0
    0  0  1  0
    10 12 36 1
    这个模型的所有顶点都共用这个世界矩阵在你的应用程序中一般情况下不需要把所有的顶点变换到世界坐标系中,而只是维护这个矩阵,只有要渲染模型时,才把这个矩阵发送给OpenGL或Direct3D,同时把模型的所有顶点坐标也发送给图形硬件,底层会帮你做变换的运算注意,这里发送的顶点坐标流是基于模型的局部坐标系的,而总的偏移量(10, 12, 36)是基于世界坐标系的