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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぷに

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

#1

投稿記事 by ぷに » 13年前

はじめまして。質問させていただきます。
C++とDirectXでSTGを制作しています。

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

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

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

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 13年前

どのような演出をしたいかとか、どれくらいの性能のハードウェアを想定しているかによって答えは変わってきます。

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#3

投稿記事 by softya(ソフト屋) » 13年前

>こういった処理はカメラの座標を移動していて、マップやプレイヤーなどのオブジェクト自体の座標はそのままなのでしょうか?
>それとも、カメラは定点でプレイヤーなどを移動させて演出しているのでしょうか?

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

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

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

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

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

私もh2so5さんと同様の意見ですが始める前から心配しすぎです。
絶対初めはうまくいかないので、失敗と試行錯誤のすえに分かってくるものだと思って下さい。
経験がないうちに作る前からベターもベストも求めてはいけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る