MRが楽しい

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

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

さて今回は技術調査枠です。
Blenderで自作したhololensモデルをUnityに取り込んで使ってみます。
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com

なるべくシンプルなものを利用したいので今回は法線マップ適用前のモデルを利用します。
Blenderのプロジェクトを開き、ファイル -> エクスポート -> fbx を選択し、FBX形式でファイルを出力します。
f:id:bluebirdofoz:20170729185401j:plain

今回利用するのは見た目のポリゴンのみなので、「メッシュ」を選択してエクスポートします。
f:id:bluebirdofoz:20170729185433j:plain

そしてエクスポートした.fbxファイルをUnityに取り込みます。
f:id:bluebirdofoz:20170729185446j:plain

さて、パッと見たところ以下の3つの問題が発生しました。
1.テクスチャが取り込まれておらず、見た目が真っ白になる。
2.position, rotation, scale といったTransformコンポーネントのデフォルト値が 1 でない。
  (後、Unity世界の 1 = 1m 比だと実物のhololensよりメチャでかい)
3.ゴーグル部分の透過が行われていない。

これらの問題について一つづつ解決していきます。
今回は1つ目「テクスチャが取り込まれておらず、見た目が真っ白になる」の解決です。

こちらについてはMMDモデルの.fbxファイル取り込み時に発生していました。
.fbxファイルにはテクスチャファイルは含まれていません。別途、参照先にテクスチャを用意してやる必要があります。

Unity上での解決方法は2つあります。
まず一つの解決方法は後からテクスチャを配置する方法です。フォルダを作成し、プロジェクトにテクスチャをインポートします。
f:id:bluebirdofoz:20170729185557j:plain

画像ファイルなら自動的に、画像として関連付けてインポートされます。
テクスチャの参照先として一覧に表示されるようになるため、以下の手順でマテリアルに設定できます。
 1.hololens の取り込んだオブジェクトをクリックする。
 2.MeshRenderer から Albedo の ◎ ボタンを選択する。
 3.表示された SelectTexture ダイアログから取り込んだテクスチャを選択する。
f:id:bluebirdofoz:20170729185750j:plain
以上でテクスチャの設定が行えます。

別のもう一つの解決方法は取り込み時にテクスチャを設定する方法です。
動きを確認するため、一旦取り込んだ.fbxファイルを削除します。先ほど取り込んだテクスチャファイルは削除しないでください。
f:id:bluebirdofoz:20170729185741j:plain

さて、.fbxファイルにはテクスチャファイルは含まれませんが、テクスチャファイルへの参照設定は含まれています。
テキストファイルで.fbxファイルを開くと"hololens_circle_texture.png"という文字が見つかりました。
最初の.fbxファイル取り込み時は、参照先にこのファイルが見つからなかったため、テクスチャが表示されていなかった訳です。

今はUnityプロジェクトに取り込んだテクスチャが画像ファイルの一覧として参照先に設定されています。
この状態で.fbxファイルを改めて取り込みます。
f:id:bluebirdofoz:20170729185805j:plain

今度は.fbxファイルの取り込み時点でテクスチャが貼られました。
二つの解決方法どちらでもUnity内の成果オブジェクトとして違いはありません。(厳密には手順上インスタンスへの設定か否か等の違いがありますが)
ただ.fbxファイルはテクスチャの参照設定だけを保持しているということは覚えておきましょう。
テクスチャが貼られていないという事象は別の3Dツールへの.fbxファイルの持ち込み時にも発生しうるため、焦らずに済むようになります。


次回は「position, rotation, scale といったTransformコンポーネントのデフォルト値が 1 でない」の問題の解決にトライします。
bluebirdofoz.hatenablog.com