我一直在试图让我生成的几何图形与方向矢量对齐。为了说明我目前的问题是什么:将几何图形对齐到方向矢量
- A =正确对准几何形状(只是用于测试三角形)
- B =正确对齐几何
我当前的代码解决方案对于这个三角形的例子(这个代码运行你在屏幕上看到的所有节点,从分割开始,我使用GLM数学库):
glm::vec3 v1, v2, v3;
v1.x = -0.25f;
v1.z = -0.25f;
v2.x = 0.25f;
v2.z = -0.25f;
v3.x = 0.0f;
v3.z = 0.25f;
v1.y = 0.0f;
v2.y = 0.0f;
v3.y = 0.0f;
glm::mat4x4 translate = glm::translate(glm::mat4x4(1.0f), sp.position);
glm::mat4x4 rotate = glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), sp.direction, glm::vec3(0.0f, 1.0f, 0.0f));
v1 = glm::vec4(translate * rotate * glm::vec4(v1, 1.0f)).swizzle(glm::comp::X, glm::comp::Y, glm::comp::Z);
v2 = glm::vec4(translate * rotate * glm::vec4(v2, 1.0f)).swizzle(glm::comp::X, glm::comp::Y, glm::comp::Z);
v3 = glm::vec4(translate * rotate * glm::vec4(v3, 1.0f)).swizzle(glm::comp::X, glm::comp::Y, glm::comp::Z);
为A点的方向矢量值:
- X 0.000000000浮子
- ý0.788205445浮子
- ž0.615412235浮子点B
方向矢量值:
- x 0.0543831661 float
- ý0.788205445浮子
- Ž-0.613004684浮子
编辑1(24/11/2013 @ 20点36分): A和B不具有任何关系,两者分别生成。当生成A或B时,只知道位置和方向。
我一直在寻找的解决方案张贴在这里:
- Quaternions, rotate a model and align with a direction
- Direct3D Rotation Matrix from Vector and vice-versa
- Direction Vector To Rotation Matrix
但我一直没能成功地转动我的几何形状与对齐我的方向矢量。我觉得我正在做一些相当基本的错误。
任何帮助将不胜感激!
这里的问题是A和B没有关系,不能以这种方式使用。在A或B点生成三角形时,只知道位置和方向。我将在最上面澄清我的问题,以包括这一点。 – Yonathan
@Yonathan我的朋友,这绝对没有意义。你必须解释哪些点和矢量必须翻译和/或旋转到其他点和矢量(或等价的变换描述)。 – Gene
在A点或B点生成三角形时,我只有一个平移(位置)和它应该面对的方向。翻译效果很好,因为您可以看到三角形都位于深灰点上。较浅的灰线表示脸部应指向的方向。我试图完成的是在每个灰点上都有这些三角形,面对下一个灰点。这在某些点上会沿着这些正确对齐的点生成几何图形。因此,我想生成一个矩阵来正确旋转这个几何体的顶点。希望这更有意义。 – Yonathan