ページ 11

DxLibを使用しての xファイルを表示できない

Posted: 2012年9月02日(日) 12:43
by dic
ひさしぶりに書き込みます

いま、3Dに挑戦していてて、やはりつまづきました
3Dモデルの読み込みは成功しているみたいなのですが、
描画関数を呼び出しても、まったく3Dモデルが描画
できません

まったくわからないので、ソースコード全部アップして
どこが間違っているのかを見つけてもらえないでしょうか?

Re: DxLibを使用しての xファイルを表示できない

Posted: 2012年9月02日(日) 13:28
by softya(ソフト屋)
DXライブラリ付属ツールのDxLibModelViewer.exeで見る限りはマテリアルにアルファブレンド設定されていて完全に透明になっているようです。
見えない原因の一つはこれですが他にも問題があるようです。
【補足】 あと凄くモデルが小さいです。DXライブラリで表示するにはMV1SetScaleで50から100倍ぐらいに拡大したほうが良いようです。
訂正。カメラが悪かったです。カメラを適切に設定すれば大丈夫です。

あとは、表示されことを保証されているモデルを使って画面中央に表示できるプログラムを先に作りましょう。
プログラミングの基本ですが、
1) 原因の切り分けをするためにプログラムを単純化する。
2) 保証されているもので動作を確認して問題となる点を極力減らす。
3) ツールなど確認に使えるものを活用する。

プログラムを見る限り3Dプログラミング自体に慣れていないと思いました。
オリジナルモデルの表示の前に色々先にやることがあるはずです。

【補足】
どのような言語や環境でもそうですが分からないものを多重に組み合わせれば動作を検証することはできません。
まず足掛かりになる動く環境を構築して、そこから変更を少しづて加えていくことで問題点を浮き上がらせることが必要です。
今回の問題は、(1)表示されるかどうかがわからない (2)表示位置が分からない (3)表示されるサイズが問題あり (4) プログラムが初めてやるには既に複雑 など何重に問題を内包していました。
(1)と(3)はDxLibModelViewer.exeで確認可能です。
(2)に関しては表示が保証されているモデルで動作確認が事前に可能です。実際にはここで表示できた時点でZバッファやカメラの画角・方向や環境光の設定は試しておいたほうが良いでしょう。
(4)は別の簡単なプログラムを用意してテスト確認の上で移植する方が良いでしょう。

Re: DxLibを使用しての xファイルを表示できない

Posted: 2012年9月02日(日) 13:48
by トントン
アタリは付けられませんか?
カメラの位置などは大丈夫でしょうか?

Re: DxLibを使用しての xファイルを表示できない

Posted: 2012年9月04日(火) 15:26
by dic
モデルに多少問題があったんですか、DirectXSDK付属のツールではみれたので安心してました
まだ、知識的に不足しまくっているので、DirectX 3Dについて解説している書籍などあったら参考にしたいので
紹介してくれると助かります。特に用語(英語ばかりでハテナが連続しています)
DirectX SDK のサンプルソースは見たのですが、英吾で読めませんでした

softyaさんがおっしゃるとおり、知識がまったくない状態です。
カメラや、ライトの設定などをやらないと、今回のような問題がでてくるのでしょうか?

>>トントンさん
すいません、アタリがよくわかりません

3Dは初心者レベルです

Re: DxLibを使用しての xファイルを表示できない

Posted: 2012年9月04日(火) 15:53
by softya(ソフト屋)
ここでDirectX3Dに踏み込むと却ってややこしくなると思います。
DXライブラリはDirectXを簡単に使うための隠蔽(ラッパー)ライブラリなのですから抑えるポイントは抑えるが難しいところは踏み込まない方針が良いと思いますよ。
モデルの問題は、x形式など形式ごとの変換やツールなど色々な問題が絡むのでこれを読めというのはありませんが、みんなが使っていない方法を選ぶと苦労するというのは間違い無いです。
※ 座標系の右手系・左手系問題もあるのでDirectX用のツールを使うのが無難です。特にDXライブラリでは専用ビューアがあるので活用してください。

3Dはある意味現実的なことを簡易化シミュレートして数学的に扱う分野です。
目(カメラ)、光源(ライト)、物体は現実世界で日常的に存在するものですが3Dの世界では全て自分で操ってあげないと行けません。
言うなればあなたは映画の監督(カメラマン)でカメラの位置や向き、ライトの位置や強さや色、登場する人や物をすべて適切に配置しないと行けない立場に有るわけです。

DXライブラリのカメラは少し厄介な設定が初期設定なっていますので、デフォルトではなくご自分で指定されたほうが良いでしょう。
ライトも極端な陰影が付くライトで影の側にカメラを向けてしまうと真っ暗ですので、出来れば変えたほうが良いですがわかってきてからで良いと思います。

前置きはこのぐらいにして、DXライブラリの3Dの入門ですがリブロワークス様の中の人が書いているブログの解説が分かりやすいのでご紹介します。

わくわくプログラミング自習室 Blogs - 【DXライブラリ3D入門】とりあえずモデルを表示してみよう <http://i-libro.net/wpmu/blog/archives/495>
わくわくプログラミング自習室 Blogs - 【DXライブラリ3D入門】モデルを綺麗に表示する <http://i-libro.net/wpmu/blog/archives/556>
わくわくプログラミング自習室 Blogs - 【DXライブラリ3D入門】モデルを移動する、回転する ~変形と行列 <http://i-libro.net/wpmu/blog/archives/618>
わくわくプログラミング自習室 Blogs - 【DXライブラリ3D入門】カメラの使い方をマスターしよう <http://i-libro.net/wpmu/blog/archives/652>
わくわくプログラミング自習室 Blogs - 【DXライブラリ3D入門】モデルをアニメーションさせよう(前編) <http://i-libro.net/wpmu/blog/archives/824>
わくわくプログラミング自習室 Blogs - 【DXライブラリ3D入門】モデルをアニメーションさせよう(後編) <http://i-libro.net/wpmu/blog/archives/876>
このあとも続きますが興味があれば読んでみてください。
http://i-libro.net/wpmu/blog/archives/c ... 9%E3%83%AA

Re: DxLibを使用しての xファイルを表示できない

Posted: 2012年9月05日(水) 00:02
by トントン
dic さんが書きました: >>トントンさん
すいません、アタリがよくわかりません
アタリとは上手く動かないのは大体この辺が影響しているのかな?
と目安をつけることです。

大まかな流れはsoftya(ソフト屋)さんが書いてくれてます。
例をあげると、僕の場合
以下の手順で確認しました。

・表示ができないという質問がある
→ 描画関係の処理が影響してそう。
→ 表示関係で何が影響していそうか考える。
    1.表示は上手くいっているが、他の物体よりも後ろ側に描画されている
    2.表示はうまくいっているが、背景と同じ色をしている(または透明)
    3.表示は上手くいっているが画面外である
    4.xファイルが壊れている
    5.読み込みが失敗している

という事を考えて、上から順に調査してみました。(そうすると3番目になりました)
今回、dicさんが「まったくわからないので」とあったので
あえて聞いてみました。申し訳ないです。

まぁ、偉そうなこと言ってますが僕もよくわかっていないのですけどねorz

Re: DxLibを使用しての xファイルを表示できない

Posted: 2012年9月05日(水) 00:16
by softya(ソフト屋)
私とトントンさんが書いていることは3Dでも2Dでもあるいはコンソールのプログラムでも同じように段階を踏んだアプローチが可能です。
なので原則的なバグ探しのアプローチを取られていないと言うことを気にしての書き込みでした。3Dであることはこの際関係ありません。

Re: DxLibを使用しての xファイルを表示できない

Posted: 2012年9月15日(土) 12:33
by dic
>>softyaさん
ご指摘ありがとうございます
ほかのxファイル、Dxlib付属のxファイルだと表示されました
カメラがあとは関係してくるのか・・・なと思ってます
リンク先、とても参考になります

>>トントンさん
なるほど、アタリですね
参考になります
エラーの原因の探し方のアドバイスありがとうございます

softyaさんが教えてくれたリンク先を読みます
ひとまず、解決とさせてもらいます