ほぼ半年放置していたソフトボディ・ダイナミクス、久々にソース見てみた。か~なり訳がわからなかった。凄いね、半年前の俺。
じつは結構いい線行ってたのに、事故で最新のソース紛失してショックのあまり半年ほど放置してたんだけど、物理シム関係の環境から久々に刺激を受けてなんだかやる気がちょっとだけ出た、といったところ。
とりあえずDBP用にD3Dのコマンドを拡張してくれる素晴らしいdllを発見したので、それについてきたサンプルから関数をポンと移植して、法線を表示できるようにしてみた。
ダイナミクス、とか大層な看板掲げているけど実のところまじめにシムやろうとは全然考えていない。あくまでもゲーム用に、そこそこ簡単に弾性体が扱えるようになる関数群とそのためのエディタが作れればいいかな?程度で。
そのかわりそのぷるんぷるん感にはかなりこだわりたいとか思ってたんだけど、実際のところゲームに使う弾性体ってそれほどぷるんぷるんしていないものが結構あるかも、と言うことに気づいていまさらながらデータ構造から見直さないと、と言う悲惨なことに。ゲームに使うとすると、ダイナミクスだけでなくキネマティクスで扱えないと駄目だよね。
まぁ、そのあたりは妄想レベルではほぼ解決しているのであとは手を動かせるかどうかなんだけど、現時点での最大の問題は法線の平均化のうまいアルゴリズムが思いつかないこと。リアルタイムで頂点を共有する面を算出しているとリソースの無駄遣いに思えるので、エディタで吐き出す前にマテリアルの設定のような形で連続する面をあらかじめテーブル化しておくべきなのかなぁ、、、。
な~んかもうちょっとスマートな方法がありそうな気がするんだけど、、、。
どなたかお知恵をお貸し下さい。
0 件のコメント:
コメントを投稿