MD5ANIM と MD5Mesh ファイル (Doom の 3D アニメーションとモデル形式) からアニメーションを DX 11 遅延レンダラーにロードしようとしています。
XNA Math を使用してアニメーションのモデルの頂点位置と法線を更新する必要がある点を除いて、すべて正常に動作します。回転した法線を計算する次のコードの結果は常に -1.#QNAN00 であり、モデルは完全に黒く表示されます。それとは別に、位置の計算は正常に機能し、法線なしで完全に黒くアニメーションが正常に実行されていることがわかります。
// Add to vertices normal and ake weight bias into account
tempVert.normal.x -= rotatedPoint.x * tempWeight.bias;
tempVert.normal.y -= rotatedPoint.y * tempWeight.bias;
tempVert.normal.z -= rotatedPoint.z * tempWeight.bias;
//End
計算開始時の値は次のとおりです。
float tempWeight.bias = 1.0000000
XMFLOAT3 回転ポイント x=-0.022973990 y=-0.053293169 z=-0.10924719
XMFLOAT3 tempVert.normal = x=0.00000000 y=0.00000000 z=0.00000000
forループで値を計算することに言及する必要があります。ループの後、次のように値を保存します。
MD5Model.subsets[k].positions[i] = tempVert.pos; // Store the vertices position in the position vector instead of straight into the vertex vector
MD5Model.subsets[k].vertices[i].normal = tempVert.normal; // Store the vertices normal
XMStoreFloat3(&MD5Model.subsets[k].vertices[i].normal,XMVector3Normalize(XMLoadFloat3(&MD5Model.subsets[k].vertices[i].normal)));
乾杯マックス