モノクロタイム

I'm from the future!

【Unity4】重力加速度。【Vuforia】

こんにちは。れいじです。

 

さて、今回は前のエントリ(【Unity4】ビキビキに割れまくるスカートをどうにかした話。【MMD】 - モノクロタイム)でも少し触れた、重力加速度に関するお話です。

MMDのモデルはいつもより多めに重力をかけてやらないと裾破綻が激しいっていう、アレ。実はMMDモデルに限った話じゃなかったよ…

 

ImageTargetを使うと簡単にARアプリが作れますが、正直ARカメラだけのアプリって存在しませんよね。まず使い方だとかメニューだとかを作ると思います。

Unityで吐き出したコードにインターフェース追加して…っていうのはかなり至難の業だと思うのですが、やっている人いるのかなあ。とにかく私にはそういうこと出来ないので、シーン切り替えを用いてメニューから何からUnityで作ってます。

で、そのARカメラを用いないシーンでもARで用いるオブジェクトを表示したい。

この時、プロジェクト全体の設定として、Y軸方向に-800の重力をかけていました(前エントリ参照)

 

ただオブジェクトを表示するだけのシーンを作ります。

f:id:yomoyamareiji:20130831122420p:plain

 

動かしてみる。

f:id:yomoyamareiji:20130831115044p:plain

ギャアアアアアーーーーーーーーーーー。

重力のかけ過ぎで、各パーツが下に引っ張られて伸びてます。

 

※解説

ImageTargetの場合、ImageTargetプレファブの中にARで表示したいオブジェクトを入れますね。このとき、オブジェクトの大きさはImageTargetの大きさ(ローカルの大きさって言えばいいのかな?)を基準として縮小されてしまいます。

 

1.ImageTargetとARカメラを追加

f:id:yomoyamareiji:20130831123305p:plain

 

2.ImageTargetの中にオブジェクトを入れる

f:id:yomoyamareiji:20130831123329p:plain

大きさは変わっていないのに、大きさがぐっと小さくなっているのがわかると思います。動かしてみればわかると思いますが、この時点だとまだスカートと髪が破綻します。

 

3.ImageTargetに対してモデルが小さすぎるので、サイズを大きくする

f:id:yomoyamareiji:20130831123744p:plain

大きくするとスカートと髪の破綻が消えました。

確認のため、この大きさのままもう一度オブジェクトをImageTargetの外に出してみます。

f:id:yomoyamareiji:20130831124121p:plain

つまり、ImageTargetの中のオブジェクトの大きさは、グローバルな大きさ(?)の尺度からするとかなり大きいオブジェクトということになります。

そして、そのオブジェクトにかかる重力もオブジェクトの大きさに依存するので、大きいオブジェクトはより重力をかけた方がパーツが安定しています。

 

1枚めの画像で裾や髪が破綻していたのは、かなり大きいオブジェクトを基準にした重力をかけていたので、小さいサイズのオブジェクトでは破綻してしまった、というわけですね。

特別詰まったわけではないけれど、モデルの大きさが変わるっていうのは頭の片隅に置いておかないと後で苦労しそうな気がするなあ。

 

というか最近Vuforia周りで調べ物をすると、見尽くした記事と私のブログの記事しか出てこないので、是非Vuforia使ってください。そして私に教えてくださいお願いします。

ImageTargetをトリガーにして音楽鳴らしたりボタン表示したりってできないんですか!とか調べてたら「GUI使わずにVirtualButtonでやれ」って答えが出てきました。というかVirtualButton自体情報が少なすぎる…

 

 

〜おまけ〜

重力をスクリプトで動的に変えてみます。

 

 

 Vector3の値は左からX軸方向、Y軸方向、Z軸方向になっています。

このコードではY軸方向に-9.81の重力をかけろ、ということですね。

これでシーン別に重力加速度を変えることが出来ましたー。