2010/04/21
テーマ: 開発 / Blender / 2010 / すべて
ゲーム開発の方、しばらく放置してしまいましたが、道路メッシュができないと進まない!ということで久しぶりに進めることにしました。
前回は、踊り場の形をちゃんとしたり、坂を滑らかにしたりする所までやりました。
今回はこんなです。
壁がないとすぐに車が落ちてしまうので、あった方がいいだろうということで作りました。
長い道路の両側すべてに作りこんだ店を配置するわけにもいかないので、ほとんどの部分はテクスチャでハリボテを作ってそれっぽく見せる、という用途にも使えます。
ちなみに、せっかく作った convex hull コードですが、要らないというかうまくいかない場合があると分かったので外しました。素直に「道路部分の延長」と「踊り場」のそれぞれについてポリゴンを作ったらうまくいきました。
重複頂点が出るので、Blender の "Remove Doubles" 機能を最後に呼んでいます。
今までは床と壁が1個ずつでしたが、壁を1個増やして小さくしてガードレールとしました。原理はたいしたことないですが、今まで1個だったローカル変数とかを2つにするのが面倒。
前回ので少し走らせてみたところ、コーナーが丸くないと曲がるときすぐ壁にぶつかってイライラすることが分かったので、角を取ってみました。
コードの変更は少ないですが、なんかもうぐちゃぐちゃになりつつあって、さらに横断歩道の部分はガードレールなしにしたいとか思ったらどこを変えればいいんだろうって感じになってます。む~ん。
単位をメートルとする。...とても地味ですが重要なポイントです。
車の大きさ、道路の幅、ガードレールの高さ、建物の高さ等単位を揃えておかないと、なんかサイズ感が違ったオブジェクトが集まってどれを調整したらいいかわかんなくなってしまいます。
スクリーンショットでは、道路の幅は 8m, 歩道の幅は 3m, ガードレールの高さは 1.2m という設定になっています。
壁とガードレールを取り付けた時点でのスクリーンショットが残っていたので貼りつけておきます。
triangle mesh の上で車(raycast vehicle)を走らせると、ポリゴンの継ぎ目で車にとんでもない力がかかって横転してしまう、という大きな問題があったので、Bullet 界隈のフォーラムを調べて解決した、という話を書こうかと思います。
オフラインでは進んでたりするんですが、記事化するのが面倒で書いてないネタもいくつかあったりします。