ページ 11

STGの3D背景の原理について

Posted: 2013年2月01日(金) 01:15
by ぷに
はじめまして。質問させていただきます。
C++とDirectXでSTGを制作しています。

よく3DのSTGにあるように、3D空間をぐるぐる回ったり、プレイヤーが奥から飛んできて
カメラ手前まで来て、そこからゲーム開始といったような3Dならではの演出を見受けられますが、
こういった処理はカメラの座標を移動していて、マップやプレイヤーなどのオブジェクト自体の座標はそのままなのでしょうか?
それとも、カメラは定点でプレイヤーなどを移動させて演出しているのでしょうか?

また、3Dの背景は一部のモデルデータを繰り返し生成しているのか、それとも広いマップを読み込んでいて、その中でプレイヤーを
移動させているのかどういう場合が一般的でしょうか?

私は後のやり方で3D背景のモデルデータを表示したいと考えているのですが、広いマップをステージの数だけ読み込むと処理が重くならないでしょうか?
3Dモデリングの知識が浅いのでわからないのですが、作り方によっては軽いマップも作れるのでしょうか?

質問が多くなって申し訳ないですが、どんな些細なことでもいいので、情報のご提供よろしくお願いします。

Re: STGの3D背景の原理について

Posted: 2013年2月01日(金) 08:45
by h2so5
どのような演出をしたいかとか、どれくらいの性能のハードウェアを想定しているかによって答えは変わってきます。

どの方法が最適なのか分からないのであれば試しに作って比較してみるのが一番です。
作った上で上手くいかなくて解決策を求めるのはいいですが、作っていないのに最適解を求めるのは無理です。
  • 普通はカメラを移動させたほうがコードは簡潔になりますが、演出によってはプレイヤーも移動させたりするでしょう。
    ちょっと特殊かもしれないですがバーテックスシェーダーを利用することも考えられます。
  • マップが広い場合はメモリを消費しますが、見える部分だけを描画していればそれほど重くはならないと思います。
    モデルデータを繰り返し生成するのはメモリ消費を抑えるのには有効ですが継ぎ目を意識しないといけないですし、コーディングの難易度も高いです。

Re: STGの3D背景の原理について

Posted: 2013年2月01日(金) 12:19
by softya(ソフト屋)
>こういった処理はカメラの座標を移動していて、マップやプレイヤーなどのオブジェクト自体の座標はそのままなのでしょうか?
>それとも、カメラは定点でプレイヤーなどを移動させて演出しているのでしょうか?

私はプレーヤーを動かしたほうがシンプルだと思います。
理由は背景とカメラの位置関係を動かさなくて良いからです。
まぁ、演出しだいなんですけどね。

>また、3Dの背景は一部のモデルデータを繰り返し生成しているのか、それとも広いマップを読み込んでいて、その中でプレイヤーを
>移動させているのかどういう場合が一般的でしょうか?

どちらもあり得ると思いますが、後者のほうが簡単です。

>私は後のやり方で3D背景のモデルデータを表示したいと考えているのですが、広いマップをステージの数だけ読み込むと処理が重くならないでしょうか?
>3Dモデリングの知識が浅いのでわからないのですが、作り方によっては軽いマップも作れるのでしょうか?

ステージ数だけ読むというのは、全部のステージを一度に読むということでしょうか?
とりあえず、今いるステージだけを読み込んでステージのつなぎで読み込むようにすれば、無茶なデータを作らなければ問題は少ないと思います。
ただ、ステージのデータ次第ですのでなんとも言えないです。
※ 3Dデータはポリゴン数と使うテクスチャの量ですべてが決まります。

私もh2so5さんと同様の意見ですが始める前から心配しすぎです。
絶対初めはうまくいかないので、失敗と試行錯誤のすえに分かってくるものだと思って下さい。
経験がないうちに作る前からベターもベストも求めてはいけません。