FC2ブログ

Bullet

Bullet デフォーミングボディ

20180922.gif
※クリックして開くと動くはずです。

もいんっ、って感じ。
デフォーミングボディを使って、人間の身体くらいの柔らかさを表現しようとしてみました。

何かこう、柔らかいところに指が食い込むイメージ?
まぁ、ぶっちゃけ言えばおっぱいです。

ほぼデフォルトの機能ですが、思ったよりは人体の再現性が高かったので良しとします。
多層メッシュまで作らないと論外かなと思っていましたが、それはとりあえず保留しときましょ。

そろそろちゃんとした人体モデル作ってみましょうか。
スポンサーサイト
[PR]

Bullet Demo

相変わらずBulletの勉強中。


デモ

HelloWorldは何となく理解できたので、次はデモをビルドしてみる。
BasicExample.cppをビルドしたらApp_BulletExampleBrowser.exeが出来たので実行。

20180910_01.png


何か色んなデモやサンプルが一気にビルドされたっぽい。
よく分らんが色んな機能が見れて楽しい(小並感)。

文字化けしてたり、一部のデモが動かなかったり(動かし方が分からない?)するけど、だいたいはちゃんと動くし、見れる。

今更ではあるがVersionは2.88である。

まずは眺めてみようと思う。
眺めるって結構大事……だと私は思っています。
眺めるじゃないな。観察って言えばそれっぽいのか。
個人的にはどっちでもいいけど。


ソフトボディ

勉強ではないけど、今日(仕事中に)考えていたこと。

Bulletの(引いてはLightWaveの)ソフトボディって、外側のサーフェイスしか作らないし、外側のポイントでしか計算ができない。
でも実際の柔らかい物体は、当然ながら中身が詰まっている。

ソフトボディが現実的な挙動からちょっと外れているのは、ここが原因なんだろうなぁと、ぼんやり考えていました。

そしてネットで多層ソフトボディという手法を知る。
要するに疑似的に「中身」を作っているんだな、と私は理解しました。

柔らかい物体に指が食い込むとか、そんな挙動を、私はLightWaveで再現してみたい。

BulletのHelloWorld

LightWave(以下LW)の物理演算機能を勉強しています。
LWの物理演算はBulletを使用している訳で、まずはBulletの中身を調べてみたりします。


HelloWorld?

とりあえず公開されているソースコードをダウンロードしてみる。
クイックスタートやユーザーマニュアルを読んでみて……まぁよく分からんので、とりあえずHelloWorld.cppとかいう、何か最初にやるっぽいやつをビルドしてみる。
HelloWorld.exeとかいう実行ファイルが出来たらしいが、これが何やねんと。

ひとまずコマンドプロンプトから実行してみると、何やら座標らしきものが出力される。
この時点で何となくピンときたので、出力された座標をエクセルに持ってきて、グラフを書いてみる。

20180909_01.png

明らかに何かが自由落下している感じの座標。

それから少しコードを読み込んで、どうやらこのHelloWorldというコードは、立方体の上に球が落ちてくるという現象の、立方体と球の座標を出力しているらしいことを知る。

立方体の大きさは100、Y方向(鉛直方向)座標位置は-56で固定。
球の大きさは1、Y方向の初期位置は10。

これをLWで再現してみる。


LWでやってみる

20180909_02.gif
※クリックして画像を開くと(多分)動きます。

タイムステップというかフレームレートの関係性がよく分からなかったけど、まぁこういう感じなんでしょう。

この程度ならちゃっちゃと出来ます。
逆に言えば今はこの程度しか出来ないです。

衝突の判定とかのクラスを読み込むの面倒そうだけど、理解しなきゃならんのだろうなぁ……。


※2018/09/10追記
タイムステップについて補足。
後で確認したらHello WorldとLWでちゃんと時間軸が一致していました(当たり前と言えば当たり前)。
Hello Worldでは60fps
LWのデフォルトでは30fps
という差があったので微妙に混乱していました。