MRが楽しい

MRやVRについて学習したことを書き残す

Blenderで作成した3DモデルをUnityに取り込む その2

前回記事の続きです。
bluebirdofoz.hatenablog.com

今回解決するのは検出された問題の2点目です。
次は「position, rotation, scale といったTransformコンポーネントのデフォルト値が 1 でない」を解決します。
f:id:bluebirdofoz:20170730014741j:plain

少し調べたところ、位置情報のリセット方法について下記の情報を発見しました。
tumo-blendermemo.blogspot.jp

早速試してみましょう。移動・回転・拡大縮小の全てを適用します。
f:id:bluebirdofoz:20170730015946j:plain

結果、トランスフォームの値が全て 0 または 1 に初期化されました。
f:id:bluebirdofoz:20170730015955j:plain

再びFBX形式でエクスポートしてUnityに取り込んでみると……。
f:id:bluebirdofoz:20170730020002j:plain
Transformの値が全て初期化されています。この設定が対応付いていたようですね。


さて Transform の値は初期化されましたが、現状の hololens のモデルはUnity世界比で大きいという問題があります。
ユニティちゃんを取り込んで比較してみました。
f:id:bluebirdofoz:20170730020011j:plain
デカ過ぎです。あまりに hololensが大きくてカメラ映像で見ると遠近感が狂います。
hololensとユニティちゃんの大きさを、頭にセットできる適切なサイズ比としたいところです。

さてこのとき、大きさの基準を何にするかという問題があります。
今回、基準とすべきはUnityの距離単位 Unit です。
unitter.net

これによると、1Unit = 1メートルとのことです。
これまでも 1 = 1m という話は何度かしましたが、この基準を使っていたという事ですね。

サイズ比が分かりやすいよう。デフォルトで作成すると 1 × 1 × 1 の大きさで生成される Cube オブジェクトを並べてみました。
f:id:bluebirdofoz:20170730020022j:plain
これと比較するとユニティちゃんは約 1.5 ほどの大きさです。
ユニティちゃんが凡そ人と同じ大きさとすると、1.5m ほどであり、このUnit基準を元に大きさが決められていると分かります。


であれば、hololens側の大きさを調整してUnit基準に合わせるべきです。
早速、Blenderを開きます。……と、ここで気付きました。
f:id:bluebirdofoz:20170730020034j:plain
この「寸法」という値は何でしょう。先ほどのユニティちゃん比を鑑みるとメートル基準の大きさっぽいですが……。

調べてみたところ、Blenderはこの寸法の単位について、基準の大きさを決められるようです。
blender3d.isopro91.com

プロジェクトの単位設定を確認したところ、デフォルトでは「長さ:なし」「単位倍率:1.000」になっていました。
f:id:bluebirdofoz:20170730020042j:plain
しかし、現状のサイズ比をみると、何となく、そのままでも Unity と基準が同じメートル法な気がします。

試しにメートル法と仮定して寸法の値を変更してみます。
hololensの実サイズは……と調べてみましたが公式なサイズ情報が見つかりませんでした。
www.microsoft.com
仕方ないので定規で実物を計りました。19cm × 28cm × 8cm くらいでしょうか。形が流線型で図るの難しい。

凡そ「寸法」が X: 0.19, Y: 0.28, Z: 0.08 に近づくよう大きさを変更します。
各値を直接変更してしまうと、モデルが歪んでしまうので全体のサイズ調整で近しい大きさにします。
f:id:bluebirdofoz:20170730020051j:plain

改めて「拡大縮小」を適用してFBX形式でエクスポート、Unityに取り込みます。
f:id:bluebirdofoz:20170730020102j:plain
おお。それっぽい大きさ比です。Transformの値も問題ありません。

試しに位置合わせを行い、ユニティちゃんに被せてみました。
f:id:bluebirdofoz:20170730020112j:plain
ぴったりです。Transformの問題と大きさの問題について解決しました。


次回は「ゴーグル部分の透過が行われていない」の問題の解決にトライします。
bluebirdofoz.hatenablog.com