0

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)));

乾杯マックス

4

1 に答える 1

0

XMVector3Normalize法線 0,0,0 を指定すると、浮動小数点スペシャルが返されます。

法線を計算するには、各要素 (a 0) をその長さ (a 0) で割ります。その結果、ゼロによる除算が失敗します。

于 2015-06-13T16:09:53.147 に答える