MRが楽しい

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

Blenderで作成した3DモデルをUnityに取り込む その5(.blendファイルでの取り込み)

本日は Blender と Unity の技術調査枠です。
Blenderで作成した3DモデルをUnityに取り込む方法をまとめます。
f:id:bluebirdofoz:20190220051605j:plain

取り込み方法

サンプルとして色付けを行った Shpere モデルの Blender プロジェクトを用意しました。
メニューから ファイル -> 保存 を選択し、.blend ファイルで上書き保存します。
f:id:bluebirdofoz:20190220051615j:plain

後は Unity を起動して、Assets フォルダ配下に .blend ファイルをドラッグするだけです。
f:id:bluebirdofoz:20190220051625j:plain

3Dモデルを Unity に取り込むことができました。
.blend ファイルを Hierarchy にドラッグしてシーンに配置できます。
f:id:bluebirdofoz:20190220051646j:plain
Blender と Unity の座標軸の違いから Transform の Rotation が X:-90,Y:0,Z:0 で取り込まれます。

.blendファイルを編集する

因みに .blend ファイルで読み込まれているので、ファイルを右クリックして[Open]を選択すると Blender でファイルを編集することができます。
f:id:bluebirdofoz:20190220051658j:plain

その場で3Dモデルを修正して、再び .blend ファイルを保存すると Unity 内の3Dモデルも修正されます。
f:id:bluebirdofoz:20190220051710j:plain
なかなか反映されない場合はファイルを右クリックして[Refresh]してみてください。

エラーが発生する場合

.blend ファイルを直接 Unity に読み込もうとした際、以下のエラーが発生することがあります。
このエラーが発生すると、Unity 内にモデルが表示されません。

Blender could not be found.

f:id:bluebirdofoz:20190220051722j:plain

これは .blend ファイルが Blender.exe に関連付けられていないときに発生するエラーです。
例えば、Blender を zip ファイルの解凍でインストールした場合などはこの問題が発生します。
Windows 10 環境であれば、以下の手順で関連付けを行います。

.blend ファイルを右クリックし、[プログラムから開く]を選択します。
ここで[別のプログラムを選択]をクリックします。
f:id:bluebirdofoz:20190220051831j:plain

ファイルを開く方法を選択するダイアログが表示されます。
.blend ファイルと Blender を関連付けるため、[常にこのアプリを使って .blend ファイルを開く]をチェックします。
f:id:bluebirdofoz:20190220051852j:plain

Blender がここで表示されるのであれば、Blender を選択します。
表示されていなければ[その他アプリ]の項目をクリックします。
(多くの場合は表示されないケースになると思います)
f:id:bluebirdofoz:20190220051904j:plain

その他のアプリ一覧が表示されます。
ここでも Blender が表示されなければ、最下部にある[このPCで別のアプリを探す]をクリックします。
f:id:bluebirdofoz:20190220051915j:plain

ファイルピッカーが表示されるので、PCで利用している Blenderblender.exe を選択します。
f:id:bluebirdofoz:20190220051926j:plain

すると .blend ファイルが blender.exe で開かれると同時に関連付けが行われます。
.blend ファイルのアイコンが blender.exe のアイコンに変わっていれば関連付けできています。
f:id:bluebirdofoz:20190220051936j:plain

Unity への読み込みに失敗した Assets 内の .blend ファイルを削除し、再度、.blend ファイルを読み込みなおしてみます。
f:id:bluebirdofoz:20190220052507j:plain
無事、読み込みが成功しました。

読み込み可能なデータ

以下のようなアーマチュア(ボーン構造)を持った複雑なキャラクタモデルも .blend ファイルで読み込み可能です。
f:id:bluebirdofoz:20190220052518j:plain

ただしテクスチャファイルなど .blend ファイルに含まれないものは参照が切れた状態で取り込まれてしまいます。
f:id:bluebirdofoz:20190220052528j:plain

別途、テクスチャファイルを Unity に取り込み、Unity 内で改めて参照を設定する必要があります。
次回記事で詳細な手順をまとめます。
f:id:bluebirdofoz:20190220052547j:plain
なお上記の通り、アーマチュアとメッシュは取り込みますが、一方でカメラやランプオブジェクトは取り込みません。

余談

タイトルに「その5」とある理由ですが、以前はわざわざ .fbx ファイルに変換しての読み込みを紹介していました。
bluebirdofoz.hatenablog.com
当時はまさか .blend ファイルで読み込めるとは露知らず。知っていると便利なのでまとめました。
内部的には FBX のエクスポータを利用しているだけとのことなので、最終的な動作に違いはないと思います。
docs.unity3d.com

マテリアルの設定についても現在は少し手順が異なっているようなので、次回は再びマテリアルの設定についてまとめます。

UVマップ編集を拡張するTexToolsアドオンを利用する(TexToolsアドオン)

本日は Blender の技術調査枠です。
UVマップ編集を拡張する TexTools アドオンを利用してみます。

アドオンのインストール

公式ページのダウンロードボタンをクリックします。
Blender_TexTools_1.3.0.zip がダウンロードできます。
renderhjs.net
f:id:bluebirdofoz:20190219093553j:plain

ダウンロードした Blender_TexTools_1.3.0.zip を任意のフォルダに置きます。
Blender を起動し、メニューから ファイル -> ユーザー設定 を開きます。
f:id:bluebirdofoz:20190219093629j:plain

Blenderユーザー設定ダイアログが開くので、[アドオン]タブを選択します。
[サポートレベル]の[コミュニティ]を選択し、[ファイルからアドオンをインストール]ボタンをクリックします。
f:id:bluebirdofoz:20190219093643j:plain

ファイル選択画面が開くので、先ほどダウンロードした Blender_TexTools_1.3.0.zip を選択します。
[ファイルからアドオンをインストール]ボタンをクリックします。
f:id:bluebirdofoz:20190219093655j:plain

すると、アドオンの一覧に戻り、TexTools が表示されます。
チェックボックスにチェックを入れて、[ユーザー設定の保存]ボタンをクリックします。
f:id:bluebirdofoz:20190219093710j:plain

ユーザー設定ダイアログを閉じ、[UV/画像エディター]を開きます。
ツールシェルフを開き、[TexTools]タブが追加されていればインストールは完了です。
f:id:bluebirdofoz:20190219093721j:plain

TexToolsの機能

TexToolsが提供する機能は公式ページに分かりやすくまとまっています。
renderhjs.net

最初は UV Layout に関する機能を幾つか覚えておくだけで作業効率は上がると思います。
以下は利用の一例です。

Align

選択した頂点を上下左右の位置を合わせます。
上を選んだ場合は選択した頂点中、最も上に位置する頂点に垂直方向の位置が合わせられます。
f:id:bluebirdofoz:20190219093743j:plain

Rectify

選択した面または頂点を矩形分布に揃えます。
f:id:bluebirdofoz:20190219093754j:plain

Texel Density

オブジェクト毎のテクセル密度を指定できます。複数のオブジェクトがある場合のみ利用可能です。
同じ値を設定すれば凡そ同じ密度でテクスチャが見えるようになります。
テクセル密度はテクスチャから1メートルあたりに見えるピクセル数を表す値です。
f:id:bluebirdofoz:20190219093806j:plain

HoloLens特化のホロ恋子モデルを作成する その37(UV展開のシーム付けと左右ミラー)

本日はホロ恋子モデル2の作成枠です。
ホロ恋子モデルのUV展開を実施していきます。
f:id:bluebirdofoz:20190218093451j:plain

そのまま展開した場合

キャラクタモデルのメッシュオブジェクトは複雑な構造をしているため、そのままUV展開して綺麗に展開できることは稀です。
試しにヘッドマウントディスプレイ部分を選択して、[UV展開]してみました。
f:id:bluebirdofoz:20190218093503j:plain
UVマップが潰れてしまっているのが分かります。
これは[UV展開]が立体の繋がりをそのまま平面に落とし込もうとするためです。
こういった立体を平面に展開するには、何処に展開図の切れ目を入れるかを指定する必要があります。

シーム付け

[UV展開]時の切れ目を指定する機能を「シーム」と呼び、この設定を行う作業を「シーム付け」と呼びます。
「シーム」を設定したい辺を[編集モード]の[辺選択]モードで選択します。
f:id:bluebirdofoz:20190218093513j:plain

そのまま[Ctrl+Eキー]で[辺メニュー]を開き、[シームを付ける]を選択します。
f:id:bluebirdofoz:20190218093525j:plain

この状態で改めて[UV展開]してみると……何となく対応が分かる形状で展開されました。
f:id:bluebirdofoz:20190218093537j:plain

因みにシーム付けされた辺は編集モードで確認可能です。
プロパティシェルフの[メッシュ表示]パネルを開き、[シーム]の項目にチェックを入れます。
すると、[シーム]が付けられた辺は赤色で表示されます。
f:id:bluebirdofoz:20190218093549j:plain

左右別々のUV展開

ひとまずUVマップを展開できましたが、まだ問題があります。
モデルにはミラーモディファイアを利用しているため、左右で同じUVマップが利用されてしまっています。
f:id:bluebirdofoz:20190218093600j:plain

ミラーモディファイアの効果を考えれば当然の事ではありますが、このままでは左右非対称なテクスチャが作成できません。
やはり左右別々にUVマップを展開したいところです。

こういった場合はミラーモディファイアの「テクスチャ」機能を利用することで左右別々のUV展開が可能です。
[オブジェクトモード]で[モディファイアー]タブを開き、ミラーモディファイアのパネルを表示します。
[テクスチャ]という項目があるので、そこの[U]のチェックボックスをチェックします。
f:id:bluebirdofoz:20190218093612j:plain

するとミラーモディファイアのUVマップがテクスチャ中央で左右対称に展開されるようになります。
分かりやすくなるよう先ほど展開したUVマップを右半分の場所に寄せてみました。
f:id:bluebirdofoz:20190218093625j:plain
[UV/画像エディター]の表示パネルにある[モディファイアー]を有効にすると、ミラー側が参照するUVマッピングも確認できます。
画像では分かり辛いですが、左側に左半分のメッシュが参照するUVマップが表示されています。

因みにテクスチャの[V]のチェックボックスを利用すると、上下対称にUVマップが展開されます。

調整

後は[UV/画像エディター]上でUVマップを微調整します。
左右のUVマップが中央で綺麗に重なるように調整すれば、後々のテクスチャ作成で役立ちます。
f:id:bluebirdofoz:20190218093636j:plain

BlenderでVROIDモデル(VRMファイル)を読み込む(VRM_IMPORTERアドオン Blender 2.8版)

本日は VROID と Blender の技術調査枠です。
VROIDで出力したモデル(VRMファイル)を Blender で読み込むアドオンを試してみます。

VRM_IMPORTER は以下の GitHub で公開されています。
github.com

以下の記事で Blender 2.79版のインストール手順を紹介しました。
先日 Blender 2.8 Beta をインストールしたので、Blender 2.8 でのアドオンのインストール手順も記録します。

バージョンについて

VRMはまだまだアップデートが多く行われているフォーマットなので、本記事の手順はすぐに過去のものとなる可能性が高いです。
エラーが発生する場合は、利用中の各ツールのバージョンについて調べてみてください。

今回、私は以下のバージョン環境で作業を実施しました。
Blender:2.8 Beta
・VROID:0.5.4
VRM_IMPORTER:Blender2.8版_2019/02/17コミット版(バージョン 0.3)

アドオンのインストール

GitHubの[Clone or download]を開き、[Download ZIP]をクリックしてファイルをダウンロードします。
f:id:bluebirdofoz:20190217185422j:plain
github.com

ダウンロードした VRM_IMPORTER_for_Blender2_8-master.zip を任意のフォルダに置いておきます。
Blender 2.8 Beta を起動し、メニューから 編集 -> 設定 を開きます。
f:id:bluebirdofoz:20190217185433j:plain

Blender設定ダイアログが開くので、[アドオン]タブを選択します。
[テスト中]ボタンを選択し、[Install]ボタンをクリックします。
f:id:bluebirdofoz:20190217185444j:plain

ファイル選択画面が開くので、先ほどダウンロードした VRM_IMPORTER_for_Blender2_8-master.zip を選択します。
[ファイルからアドオンをインストール]ボタンをクリックします。
f:id:bluebirdofoz:20190217185457j:plain

すると、アドオンの一覧に戻り、VRM_IMPORTER が表示されます。
チェックボックスにチェックを入れて、[設定を保存]ボタンをクリックします。
f:id:bluebirdofoz:20190217185509j:plain

ユーザー設定ダイアログを閉じ、メニューから ファイル -> インポート を開きます。
[VRM(.vrm)]の項目が追加されていればインストールは完了です。
f:id:bluebirdofoz:20190217185600j:plain

VROIDモデル(VRMファイル)の読み込み

早速、VROIDモデル(VRMファイル)の読み込みを試してみます。
VROIDで任意のモデルを出力し、VRMファイルを作成します。
f:id:bluebirdofoz:20190217185614j:plain

VRM_IMPORTER はVRMファイル読み込みの際、同じディレクトリにテクスチャファイルを全て展開します。
Blenderがバイナリから直接画像ファイルを読み込めないため)
このため、読み込むVRMファイルはなるべく単独のディレクトリに保存しておくのが望ましいです。
f:id:bluebirdofoz:20190217185625j:plain

Blenderに戻り、ファイル -> インポート -> VRM(.vrm) を選択します。
ファイル選択画面で先ほど出力したVRMファイルを指定し、[import VRM]ボタンをクリックします。
f:id:bluebirdofoz:20190217185638j:plain

モデルが表示されれば読み込み成功です。
f:id:bluebirdofoz:20190217185649j:plain

シェーディングを[ルック開発]に切り替えればテクスチャ色が表示されます。
f:id:bluebirdofoz:20190217185658j:plain

開発環境構築手順 Blender 2.8編(Beta版)

本日は環境構築のまとめ枠です。
Blender 2.8 Betaのインストール手順を記録します。

2019/02/16現在、Blender 2.8 はBeta版になります。
特に 2.8 を選ぶ理由がない場合は、安定動作版の Blender 2.79 のインストールと利用を推奨します。

Blender 2.8 のダウンロードページは以下です。
www.blender.org

[Donload Blender 2.8 Beta]のボタンをクリックします。
f:id:bluebirdofoz:20190216092134j:plain

ダウンロードファイルの選択ページが開きます。
利用するOS環境に応じた項目を選択します。
今回、私は Windows 64bit 環境で利用するので[2.80 Beta Windows 64 bit]を選択しました。
f:id:bluebirdofoz:20190216092145j:plain

利用中のOS環境はWindows10の場合、以下の手順で確認できます。
pc-karuma.net

ダウンロードした blender-2.80-xxxx.zip ファイルを任意のディレクトリに解凍します。
f:id:bluebirdofoz:20190216092210j:plain

以上で Blender 2.8 のインストールは完了です。
展開したディレクトリの blender.exe を起動します。
f:id:bluebirdofoz:20190216092332j:plain

Blender 2.8 が起動します。
f:id:bluebirdofoz:20190216092340j:plain

日本語化手順

追加で、日本語化の方法について記録します。
Blender はインストール直後だと言語設定が英語になっています。
設定で日本語にすることが可能です。手順は以下の通りです。

Blender を起動し、Edit -> Preferences をクリックします。
f:id:bluebirdofoz:20190217192237j:plain

Preferences ダイアログが開くので System タブを選択します。
Translation のチェックボックスをチェックします。
f:id:bluebirdofoz:20190217192247j:plain

ToolTips(ツールチップ)/Interface(インターフェイス)/NewData(新規データ)の項目で、翻訳を行う範囲を設定できます。
Language の項目で japanese(日本語) を選択します。
または、OS環境を日本語に設定していれば、選択した項目が自動で日本語に翻訳されます。
NewData以外を選択しました。NewData(新規データ)を選択しないのは作成したオブジェクト名などが日本語化されると英語環境で文字化けを起こすためです。
f:id:bluebirdofoz:20190217192258j:plain

最後に「Save Preferences(設定を保存)」をクリックして設定を保存します。
f:id:bluebirdofoz:20190217192310j:plain
以上で日本語化は完了です。

頂点の移動時にメッシュとUVマップの対応をロックする(MagicUVアドオン)

本日は Blender の技術調査枠です。
UV操作に関する様々な機能を提供する MagicUV アドオンを利用してみます。
github.com

UVマップとの対応をロックしたい時

例えば以下のような既にUVマップを展開したメッシュオブジェクトを用意します。
f:id:bluebirdofoz:20190215091119j:plain

ある頂点を移動させると、UVマップは固定のため、メッシュとUVマップの対応が歪になってテクスチャが歪んでしまいます。
f:id:bluebirdofoz:20190215091132j:plain

見た目を維持するには、以下のようにUVマップを頂点の移動に合わせて補正する必要があります。
f:id:bluebirdofoz:20190215091143j:plain

これを自動で行う Magic UV の Texture Lock の機能を試してみます。

MagicUV のインストール

MagicUV アドオンは Blender 2.79 以降、標準アドオンになっており、アドオンの有効化のみで利用できます。
Blender を起動し、[ファイル] -> [ユーザ設定]でユーザ設定ダイアログを開きます。
f:id:bluebirdofoz:20190215091202j:plain

[アドオン]タブを開き、[Magic UV]で検索すると[Magic UV]のアドオンが表示されます。
チェックボックスにチェックを入れて「ユーザー設定の保存」をクリックします。
f:id:bluebirdofoz:20190215091212j:plain

[3Dビュー]を[編集モード]に切り替え、[Uキー]を押下して、UVマッピングウィンドウを表示します。
[Texture Lock]などの機能が追加されていればインストール完了です。
f:id:bluebirdofoz:20190215091227j:plain

TextureLockの使い方

[編集モード]で頂点を移動する前に、[Uキー]を押下してUVマッピングウィンドウを表示します。
[Texture Lock]->[開始]または[Texture Lock Start(Interactive mode)]を選択します。
f:id:bluebirdofoz:20190215091238j:plain

[開始]を選んだ場合

頂点を移動します。
このときのUVマップは今まで通り固定されたままです。
f:id:bluebirdofoz:20190215091250j:plain

[Uキー]を押下してUVマッピングウィンドウを表示します。
[Texture Lock]->[Stop]を選択します。
f:id:bluebirdofoz:20190215091301j:plain

するとUVマップが補正され、元の見た目を維持した形になります。
f:id:bluebirdofoz:20190215091311j:plain

[Texture Lock Start(Interactive mode)]を選んだ場合

頂点を移動すると、リアルタイムにUVマップが補正されます。
f:id:bluebirdofoz:20190215091321j:plain

こちらも編集終了後は[Texture Lock]->[Texture Lock Stop(Interactive mode)]で処理を終了させましょう。
f:id:bluebirdofoz:20190215091552j:plain

注意点

UV編集の内部処理が走っているためか、[Texture Lock Start(Interactive mode)]を利用したまま[Ctrl+Z]で作業を戻すとUVマップが歪んだ形になります。
f:id:bluebirdofoz:20190215091333j:plain

キチンと[Stop]で補正を止めて[Ctrl+Z]を利用すれば編集前の状態に戻ります。利用の際は注意が必要です。

他の機能について

MagicUV は他にも様々な機能があります。チュートリアルページは以下になります。
github.com

最新バージョンについて

MagicUV の最新バージョンは 6.0 です。
Blender 2.79 にデフォルトで含まれているバージョンは 4.4 になります。
操作UIが大きく変わっているのでチュートリアルを確認する際は適切なバージョンを確認します。

最新の MagicUV を利用したい場合は以下のページから取得できます。
github.com
f:id:bluebirdofoz:20190215091659j:plain

HoloLens特化のホロ恋子モデルを作成する その36(UV/画像エディターと3Dビュー)

本日はホロ恋子モデル2の作成枠です。
[UV/画像エディター]について幾つか使い方をまとめます。

動作が分かりやすくなるように前回作成したサンプルの平面オブジェクトを分割しておきます。
f:id:bluebirdofoz:20190214084629j:plain

「3Dビューのシェーディング」の「テクスチャ」

UVマッピングを行う際には「3Dビューのシェーディング」の「テクスチャ」が役立ちます。
試しに[3Dビューのシェーディング]のプルダウンから[テクスチャ]を選択してみます。
f:id:bluebirdofoz:20190214084639j:plain

すると、デフォルトではオブジェクトの見た目が真っ白になってしまいます。
これは[3Dビューのシェーディング]の[テクスチャ]での見た目は[UV/画像エディター]上のテクスチャを反映したものになるためです。
この状態では[UV/画像エディター]には何のテクスチャも設定されていないため、見た目に何も反映されていません。

確認のため、[UV/画像エディター]上に画像を作成してみます。
[UV/画像エディター]の[新規]ボタンをクリックします。
f:id:bluebirdofoz:20190214084650j:plain

[新規画像]ダイアログが開きます。
名前と画像サイズを任意に設定し、[生成された種類]に[カラーグリッド]を選択します。
入力を行ったら[OK]ボタンをクリックします。
f:id:bluebirdofoz:20190214084700j:plain

[UV/画像エディター]にカラーグリッドの画像が生成されます。
同時に3Dビューに[UV/画像エディター]のテクスチャが反映されたモデルが表示されます。
f:id:bluebirdofoz:20190214084710j:plain

この通り、[3Dビューのシェーディング]の[テクスチャ]での見た目は[UV/画像エディター]上のテクスチャを反映したものです。
このため、実際のマテリアルの見た目を表示する[3Dビューのシェーディング]の[マテリアル]の見た目とは異なる場合があります。
[3Dビューのシェーディング]の[テクスチャ]は[3Dビュー]と[UV/画像エディター]の対応を見るための、あくまで一時的な確認に利用します。
f:id:bluebirdofoz:20190214084722j:plain

Blenderでは[UV/画像エディター]で色の焼き込み(ベイク)を行ったり、[ペイント]で直接色を描き込んだりできます。
こういった場合に[テクスチャ]での確認が便利です。
ただし前述の通り、マテリアルの設定とは別物なので、後からキチンと作成したテクスチャをマテリアルとして設定する必要があります。
f:id:bluebirdofoz:20190214084731j:plain

[UV/画像エディター]のデフォルトのテクスチャ

Blenderでは[UV/画像エディター]で画像を新規作成する場合、以下の3つの[生成された種類]を選択することができます。
・カラーグリッド
・UVグリッド
・ブランク
f:id:bluebirdofoz:20190214084741j:plain

[ブランク]は設定した[カラー]の一枚画像が生成されます。
[ペイント]を行う際の元絵などに利用します。
f:id:bluebirdofoz:20190214084750j:plain

[カラーグリッド]は階調で色を配置した一枚画像が生成されます。
UVマップと3Dモデルの対応を確認する際に利用します。
f:id:bluebirdofoz:20190214084759j:plain

[UVグリッド]は細かな格子模様の一枚画像が生成されます。
メッシュに歪みがないか、UVマップの各所の展開サイズが不均等になっていないか確認する際に利用します。
f:id:bluebirdofoz:20190214084808j:plain

[UV/画像エディター]と[3Dビュー]の同期

これまでは[3Dビュー]側のメッシュを選択することで[UV/画像エディター]に対応するマップを表示していました。
この方法では[UV/画像エディター]から[3Dビュー]側に対応関係を確認できません。

[UV/画像エディター]と[3Dビュー]の同期を利用することで、逆向きに対応を取ることが可能になります。
[UV/画像エディター]にある[UVと編集モードでのメッシュの選択を同期]のアイコンをチェックして有効化します。
f:id:bluebirdofoz:20190214084818j:plain

すると[3Dビュー]のメッシュを選択していなくても[UV/画像エディター]で常に全ての対応マップが表示されるようになります。
f:id:bluebirdofoz:20190214084828j:plain

この状態で[UV/画像エディター]側のマップを選択すると、対応する[3Dビュー]のメッシュも選択状態になります。
メッシュと3Dマップの対応を見る際に便利です。
f:id:bluebirdofoz:20190214084837j:plain

次は実際にモデルのUVマップを展開します。シーム付けと左右ミラーについてです。
bluebirdofoz.hatenablog.com