開発日誌>2009年2月

開発日誌: 2009年2月


やっとこまともな3Dっぽい3Dぷろぐらむ! - 2009/2/8 (日) by myun2

が書けるようになりました。(ぉ

blackbox.jpg

blackbox.zip

いやぁ、単純な板ポリ(=板ポリゴン)出すのと比べて、だいぶ、かなーり、苦労しました。

・・・とか言いつつ、まぁ自分が原因だったりしたのですが。けーつろーん(←

原因としては、ID3DXSprite::Begin(),End()を呼び出すと色々と勝手にパラメータが書き換わってしまうので、
一部のRenderStateや、ライト等を再設定してやらねばならない、と言うもの・・・。

基本的に、本ではそんな事例載ってませんので、

「本と、おんなじようにSetRenderState()したり、ライトの設定の仕方も真似てる筈・・・なんだけどなぁ・・・」

と、一週間くらい悩んでおりました・・・。

更にたちの悪いのが、開発PC(?)である、Virtual PCだと問題なく動くと言うこと・・・。
「やったー!出来たー!」と大喜びで、メインPCの方でも実行してみたら、動かない・・・というネ・・・。

んで、デバッグ(動作確認)するにもイチイチコピーしてやらねばならず、非常に面倒でした・・・。


あー、あとまぁ、単純にZバッファテストに苦労したり(必要手順が多く*1て全部見つけ出すのに苦労した・・・)、
メッシュも最初「SetMaterial()だけでええんちゃうの・・・?」と思ってたらSetMaterial()、SetTexture()が必要だったり(それもD3DXLoadMeshFromX()で返される情報をそのまま使用、とかではなく、自分でアレコレやってあげなければなかったり)、Ambientやら、Specularやら、Emissiveやらの新しい概念が出てきたり、その型がD3DCOLORVALUEとか言う新しい型だったりやらで、 いやはや、大変でありましたよぉー・・・。

いやぁ、それにしてもSpecularはイイデスネ!このblackbox.exeのキューブのテカテカ感は、実はこのSpecularによるものだったりするのです。
「鏡面効果」とでも言いましょうか。わざわざ自分でアレコレ数学計算しなくともパラメータ一つ(まぁ、実際には二つ:何)で、こんなカッコヨクそれっぽい3D表示が出来るんですからかなり良いです!
このパラメータを弄るだけで、金属っぽい感じやら、ガラスっぽい感じやら、逆にツヤ消しな効果が得られるわけです。すごい!!

と言う感じに遊んでみたのがこのblackbox.exeなんですね。(ぉ


と、言うわけで。結構殆ど、3Dモデル表示やらの基礎は、凡そ終わった感じですね。
後はちょっと板ポリが真っ黒になる(多分法線設定してないから)のを直す、くらいですかね。

そしたら・・・そうですねぇ、パーティクルとか、影とか、そこらへんの応用技術を勉強していきましょうかね。


  1. *1ぱっと思い出せる限りでは、1.D3dCreateDevice()のプレゼントパラムとしてEnableAutoDepthStencilAutoDepthStencilFormatの設定が必要。2.SetRenderState(D3DRS_ZENABLE) 3.画面クリア時にZバッファクリア(Clear(D3DCLEAR_ZBUFFER)も必要。 ってな感じかなー