コリジョン、スカイドーム全然分からん
こんにちは、KKです。
正月ぶりのブログ更新です。
いよいよ外が暑くなってきましたが、いかがお過ごしでしょうか。
私は資格試験やら日々の業務やらで精神崩壊の日々を過ごしております。
3Dから逃げるな、ということで久しぶりの進捗報告です。
進捗1:コリジョン全然分からん。
DXライブラリを用いて3Dモデルを表示する方法までは理解し、シェーダーも何となく使えるようにはなりましたが、壁や床の当たり判定の処理はイマイチ理解できずにいました。
壁にめり込まないように処理することはできるものの、壁から押し返す処理が上手くいかず、ガタガタ視点が揺れてしまうといった状況でした。
上の動画中で、壁に衝突したとき、特に廊下の隅に衝突したときに視点が揺れているのが分かると思います。
この動画では、壁にめり込んだ後に押し返す処理の中で、プレイヤーの速度ベクトルを使用しているため、速度によって押し返す量が変動し、ガタガタと揺れるような処理になってしまっています。
そこで、壁から押し返す処理を、壁(のメッシュ)の法線ベクトルで行うように改良したのがこちらです。。。
先程よりも滑らか?な押し返しになっていることが分かると思います。
また3DモデルのメッシュはDXライブラリの関数で簡単に参照することができるため、プログラムの行数も大幅に削減することができました(というか今までが冗長すぎた)
法線ベクトル、便利や・・・
進捗2:スカイドーム全然分からん
3Dモデルの描画は出来たので、次は3Dの背景や空を描画したい、ということで、空を描画するためのスカイドームを利用してみました。
それっぽい描画はできました。はい。
動画ではある程度上手く描画できていますが、視点のクリッピング距離や光の加減を誤ると、上手く背景が描画されないことがあり、なかなか大変でした。
よりリアルな表現にしたり、霧が掛かったような表現にするには、もう一工夫必要なようです。
何となくDXライブラリの3Dが分かってきたような気がするが・・・やっぱり分からん。
テクスチャやZバッファ、フィルタ処理など、まだ理解すべき技術は沢山あります。
てかいい加減Unityやろうや、C#から逃げるな()
ではでは