前回記事の続きです。
bluebirdofoz.hatenablog.com
今回解決するのは検出された問題の2点目です。
次は「position, rotation, scale といったTransformコンポーネントのデフォルト値が 1 でない」を解決します。
少し調べたところ、位置情報のリセット方法について下記の情報を発見しました。
tumo-blendermemo.blogspot.jp
早速試してみましょう。移動・回転・拡大縮小の全てを適用します。
結果、トランスフォームの値が全て 0 または 1 に初期化されました。
再びFBX形式でエクスポートしてUnityに取り込んでみると……。
Transformの値が全て初期化されています。この設定が対応付いていたようですね。
さて Transform の値は初期化されましたが、現状の hololens のモデルはUnity世界比で大きいという問題があります。
ユニティちゃんを取り込んで比較してみました。
デカ過ぎです。あまりに hololensが大きくてカメラ映像で見ると遠近感が狂います。
hololensとユニティちゃんの大きさを、頭にセットできる適切なサイズ比としたいところです。
さてこのとき、大きさの基準を何にするかという問題があります。
今回、基準とすべきはUnityの距離単位 Unit です。
unitter.net
これによると、1Unit = 1メートルとのことです。
これまでも 1 = 1m という話は何度かしましたが、この基準を使っていたという事ですね。
サイズ比が分かりやすいよう。デフォルトで作成すると 1 × 1 × 1 の大きさで生成される Cube オブジェクトを並べてみました。
これと比較するとユニティちゃんは約 1.5 ほどの大きさです。
ユニティちゃんが凡そ人と同じ大きさとすると、1.5m ほどであり、このUnit基準を元に大きさが決められていると分かります。
であれば、hololens側の大きさを調整してUnit基準に合わせるべきです。
早速、Blenderを開きます。……と、ここで気付きました。
この「寸法」という値は何でしょう。先ほどのユニティちゃん比を鑑みるとメートル基準の大きさっぽいですが……。
調べてみたところ、Blenderはこの寸法の単位について、基準の大きさを決められるようです。
blender3d.isopro91.com
プロジェクトの単位設定を確認したところ、デフォルトでは「長さ:なし」「単位倍率:1.000」になっていました。
しかし、現状のサイズ比をみると、何となく、そのままでも Unity と基準が同じメートル法な気がします。
試しにメートル法と仮定して寸法の値を変更してみます。
hololensの実サイズは……と調べてみましたが公式なサイズ情報が見つかりませんでした。
www.microsoft.com
仕方ないので定規で実物を計りました。19cm × 28cm × 8cm くらいでしょうか。形が流線型で図るの難しい。
凡そ「寸法」が X: 0.19, Y: 0.28, Z: 0.08 に近づくよう大きさを変更します。
各値を直接変更してしまうと、モデルが歪んでしまうので全体のサイズ調整で近しい大きさにします。
改めて「拡大縮小」を適用してFBX形式でエクスポート、Unityに取り込みます。
おお。それっぽい大きさ比です。Transformの値も問題ありません。
試しに位置合わせを行い、ユニティちゃんに被せてみました。
ぴったりです。Transformの問題と大きさの問題について解決しました。
次回は「ゴーグル部分の透過が行われていない」の問題の解決にトライします。
bluebirdofoz.hatenablog.com