3Dプログラム

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

3Dプログラム

#1

投稿記事 by s-rush » 15年前

お久しぶりです。

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

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

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

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

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

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

Ma

Re:3Dプログラム

#2

投稿記事 by Ma » 15年前

すいません、添付みてませんが、時間ないので軽くアドバイスです。

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

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

完成。

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

Justy

Re:3Dプログラム

#3

投稿記事 by Justy » 15年前

 原因は重要なパラメータである CamDirが回転しても更新されていないからです。
 回転したら CamDirを適切に更新してみて下さい。

s-rush

Re:3Dプログラム

#4

投稿記事 by s-rush » 15年前

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

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

s-rush

Re:3Dプログラム

#5

投稿記事 by s-rush » 15年前

プログラムを再度見直して修正したところ、無事に動作してくれました。
左右旋回を行う部分で少し勘違いしていたようです^^;

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

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

たろう

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

#6

投稿記事 by たろう » 15年前

実行ファイル(.exe)のコマンドライン引数を設定するにはどうすればよいのでしょうか?

たかぎ

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

#7

投稿記事 by たかぎ » 15年前

コマンドプロンプトで、実行ファイル名に続けて、空白文字で区切って並べるだけです。

閉鎖

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