質問: OpenGLを使ってオブジェクトを生成するとき、 カメラであってもカメラ以外のオブジェクトであろうと通称MVP行列と呼ばれる計算式は付いて回るものでしょうか? この疑問の背景には、参考資料等で**一つのオブジェクトを描画するために一つのMVP行列を使用している例が多く**、複数のオブジェクトを描画する際にはオブジェクトと同じ数だけMVP行列が必要なのではないかと思ったためです。 すなわち、3D空間を描画する手段においてはModel行列は書くオブジェクトにて各々の配置の行列を書き、ProjectionとView行列については、どのオブジェクトにおいても共通した値を使うということが正しい3D空間の実現の仕方ということでしょうか? . . . *※下図では、ProjectionMatrixとViewMatrixはどのオブジェクトにおいても同じ値で、ModelMatrixだけがそれぞれのオブジェクトで変化していることを図で表してみたものです。(透視投影法のカメラで例えてます。glm::mat4(1.0)は原点を表したものです。のはずです。認識が正しければ。)* ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/41ed1220c260c107c8ba8a81cd919916.png)
回答: > > すなわち、3D空間を描画する手段においてはModel行列は書くオブジェクトにて各々の配置の行列を書き、ProjectionとView行列については、どのオブジェクトにおいても共通した値を使うということが正しい3D空間の実現の仕方ということでしょうか? > > > モデル行列はオブジェクトを世界座標のどこに配置するかを表す行列なので、オブジェクトごとに必要です。 ProjectionMatrix と ViewMatrix はすべてのオブジェクトで共通です。 なので、モデル行列だけオブジェクトごとに保持すればよいでしょう。