我一直在試圖讓我生成的幾何圖形與方向矢量對齊。爲了說明我目前的問題是什麼:將幾何圖形對齊到方向矢量
- 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