スケールからワールド投影行列を構築するときは、行列を回転させて平行移動すると、変換行列はプロセスの最後でなければなりません。そうでない場合は、翻訳を拡大または回転させます。スケールと回転は特定の順序で行う必要がありますか?世界の行列を構築する
は、今私はあなたが順序が重要と考えで正しい
std::for_each(objects.begin(), objects.end(), [&, this](D3D93DObject* ptr) {
D3DXMATRIX WVP;
D3DXMATRIX translation, rotationX, rotationY, rotationZ, scale;
D3DXMatrixTranslation(&translation, ptr->position.x, ptr->position.y, ptr->position.z);
D3DXMatrixRotationX(&rotationX, ptr->rotation.x);
D3DXMatrixRotationY(&rotationY, ptr->rotation.y);
D3DXMatrixRotationZ(&rotationZ, ptr->rotation.z);
D3DXMatrixScaling(&translation, ptr->scale.x, ptr->scale.y, ptr->scale.z);
WVP = rotationX * rotationY * rotationZ * scale * translation * ViewProjectionMatrix;
});
結果のオブジェクトはスペースに表示され、効果的にはそれ自身との相対的なものです。 – Puppy