我正在研究3D頂點蒙皮。一切工作正常。我現在被困在如何最好地用圖形表示我的骨頭。我意識到我可以將骨骼畫成從一個關節到另一個關節的簡單線條。如何以圖形方式繪製3D骨骼
但是,我強烈地想要繪製類似攪拌機圖形表示的攪拌器骨頭(帶正面和反面)。
我的示例代碼(下)只適用於面向方向(0,1,0)的關節。如果我有一個面向骨(1,0,0),那麼它不能準確地表示骨頭。
所以最終,我的問題是:是否有一個數學公式,用於根據我的骨骼關節的朝向將這些頂點從(0,1,0)定向到某個任意矢量方向。
glm::vec3 vert[14];
vert[ 0] = glm::vec3(0.0f, 0.0f, 0.0f);
vert[ 1] = glm::vec3(-0.2f, 0.2f,-0.2f);
vert[ 2] = glm::vec3(0.2f, 0.2f,-0.2f);
vert[ 3] = glm::vec3(0.0f, getLength(), 0.0f);
vert[ 4] = glm::vec3(-0.2f, 0.2f,-0.2f);
vert[ 5] = glm::vec3(-0.2f, 0.2f, 0.2f);
vert[ 6] = glm::vec3(0.0f, 0.0f, 0.0f);
vert[ 7] = glm::vec3(0.2f, 0.2f,-0.2f);
vert[ 8] = glm::vec3(0.2f, 0.2f, 0.2f);
vert[ 9] = glm::vec3(0.0f, 0.0f, 0.0f);
vert[10] = glm::vec3(-0.2f, 0.2f, 0.2f);
vert[11] = glm::vec3(0.0f, getLength(), 0.0f);
vert[12] = glm::vec3(0.2f, 0.2f, 0.2f);
vert[13] = glm::vec3(-0.2f, 0.2f, 0.2f);
如果你有骨骼方向和方向,你可以用簡單的矢量代數在它周圍構造一個多面體。你也可以建立一個「股票」模型(在主軸上),然後旋轉和縮放它以匹配你想渲染的骨骼。 – didierc