ページ 11

3Dプログラム

Posted: 2010年4月14日(水) 03:11
by s-rush
お久しぶりです。

最近3Dプログラムに挑戦しているのですが、
躓いてしまったので質問させていただきに来ました。

今、本家DXライブラリのサンプルプログラム(迷路を3Dで表示)を参考に
ウィザードリィのような3Dダンジョンゲームを作っているのですが、
壁を目の前でとらえた時の圧迫感が気になるので、それを改良しています。

上記のサンプルプログラムでは、カメラを中心に移動しているように感じました。
カメラ=自キャラといったような感じでしょうか・・・
(間違っていたらごめんなさい)
そこで、操作可能な架空のキャラクター(見えませんが)を置き、
それをカメラで追うようなプログラムを作ろうと考えています。
このようにすることによってカメラの位置が手前にずれるので、
壁の圧迫感が解消されるのではないかと思いました。

しかし、このカメラワークがうまくいきません。
旋回したあとに、前進・後退をするとカメラの動きがおかしくなってしまいます。
ソースコードとその他必要なものを添付しておきますので、
一度実行してみてください。

3Dプログラムは今回が初めてなので、理解が不十分な部分が多いですが、
どうかお力を貸してください。

開発環境:VC++2008EE
OS   :WindowsXP
言語  :C言語
ライブラリ:DXライブラリ

Re:3Dプログラム

Posted: 2010年4月14日(水) 05:09
by Ma
すいません、添付みてませんが、時間ないので軽くアドバイスです。

そのような簡単なカメラワークなら次のステップでいけます。

・プレイヤーの目の位置を計算します。
・目線ベクトルを計算します。
・目線ベクトルを負の値でスケール倍して、プレイヤーの目の位置に加算したベクトルがカメラの位置です。
・カメラの位置から、プレイヤーの目の位置を注視点に設定。(DXライブラリには、カメラ位置と注視点で指定できる関数があります。)

完成。

*追記
もっと高度で、スムーズな動きをお求めの場合は、
パトーキンさんのモンハン風プログラムが参考になると思います。
(ニコニコで検索するとソースコードも出るかと。) 画像

Re:3Dプログラム

Posted: 2010年4月15日(木) 22:14
by Justy
 原因は重要なパラメータである CamDirが回転しても更新されていないからです。
 回転したら CamDirを適切に更新してみて下さい。

Re:3Dプログラム

Posted: 2010年4月16日(金) 02:30
by s-rush
>Maさん
サンプルプログラムをもう一度読み直してみました。
おそらく、Maさんのおっしゃる手順をふんでるような感じはしました。
(まちがっていたらごめんなさい)
モンハン風プログラムを見てみました。
やはり生半可な知識じゃ3Dの実装はむずかしいですね^^;
もっと勉強しておくべきでしたorz

>Justyさん
なるほど。
本家にアップされていた2つのサンプルプログラムを単純に組み合わせて作っただけなので、
いまいち理解が不十分でした。
もういちど見直して修正してみます。

Re:3Dプログラム

Posted: 2010年4月16日(金) 15:30
by s-rush
プログラムを再度見直して修正したところ、無事に動作してくれました。
左右旋回を行う部分で少し勘違いしていたようです^^;

プログラムの処理がいまいちまだ理解していませんがorz
やっぱり3Dは難しいですね・・・

Maさん、Justyさん、忙しい中アドバイスしていただきありがとうございました。
またどこかで躓くことがあると思うので、その時はよろしくお願いします。

実行ファイル(.exe)のコマンドライン引数を設定

Posted: 2010年5月01日(土) 22:46
by たろう
実行ファイル(.exe)のコマンドライン引数を設定するにはどうすればよいのでしょうか?

Re:実行ファイル(.exe)のコマンドライン引数を設定

Posted: 2010年5月01日(土) 23:10
by たかぎ
コマンドプロンプトで、実行ファイル名に続けて、空白文字で区切って並べるだけです。