私はopenglを使用してc ++で物理シミュレーターを作成しようとしていますが、カメラが向いている軸に沿ってオブジェクト(現在はほとんどが立方体)をスケーリングできる必要があります。
これをモデル マトリックスとして使用すると、オブジェクトを完全にうまく描画できます。
mat4 Model = Translate(cube.Position - float3(gl.Position.x, gl.Position.y, -gl.Position.z)) * Rotate(cube.Rotation) * Scale(cube.Scale);
gl.Position はカムの位置、float3 は私が書いた vec3 のようなクラスなどです...
だから私はその行を変更して、何よりも先にスケーリング係数を含めようとしました(最後にあるものが最初に適用されます):
mat4 Model = Translate(cube.Position - float3(gl.Position.x, gl.Position.y, -gl.Position.z)) * Rotate(cube.Rotation) * Scale(cube.Scale) * (Rotate(float3(gl.Rotation.x, gl.Rotation.y, gl.Rotation.z)) * Scale(float3(1.0f, 1.0f, sqrt(1 - (velocity * velocity)))) * Rotate(float3(tau - gl.Rotation.x, tau - gl.Rotation.y, tau - gl.Rotation.z)));
重要なのは最後の部分です。オブジェクトを回転させ、スケーリングし、回転させて元に戻します。各軸は、カムのピッチ、ヨー、ロールをラジアン単位で保持します。移動、回転などの関数は適切に機能しますが、スケーリングするマトリックスを作成する理論について助けが必要です。