Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://kouhakuishi.blog.fc2.com/tb.php/5-cd7ad06a

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

『Mesh Baker 2』を使ってUnityちゃんのドローコールを18にした時の作業の流れ

meshbakertest01.png


先にライセンス表記を失礼します。

ユニティちゃんライセンス

本コンテンツは、『ユニティちゃんライセンス条項』に基づいて公開・配布されるものです。本コンテンツをご利用される場合は、ユニティ・テクノロジーズ・ジャパン合同会社が定める『キャラクター利用のガイドライン』をお守りいただく必要があります。



先週、メッシュを結合するアセット『Mesh Baker 2』を使ってUnityちゃんのスキンメッシュを結合して、ドローコール数を「42」から「18」まで減らしたのですが、今更ながらその時の作業の流れを記述します。

ただ、自分は「ドローコールが減ったばんじゃーい」で終わらせてしまったので、どこかしらでUnityちゃんに不具合を引き起こすことをしている可能性もありますのでご了承ください。

■環境
・Unity( ver4.3.4f1 )
・Unityちゃん( ver1.0.1 )
・MeshBaker2( ver2.11.8 )

まず、MeshBakerでメッシュを結合する手始めとして、メニューから「GameObject」→「Create Other」→「Mesh Baker」→「Mesh And Material Baker」を選択します。すると、ヒエラルキーに「MeshBaker0」というオブジェクトが配置されます。
meshbakertest03.png

*ちなみに、メッシュを結合した結果、頂点数がUnityが扱える1メッシュ上限の64000を超えてしまう場合はその上の「Multi-mesh And Material Baker」を選択します。

このMeshBaker0というオブジェクトのインスペクター上で結合作業を行います。
ここでの作業は2段階に分かれています。「マテリアルの結合」と「メッシュの結合」です。

最初に、結合するメッシュを選択するために以下のことをします。インスペクターの「MB2_Texture Baker」というコンポーネントを見てください。「Object To Be Combined」に配列で結合するメッシュを登録するのですが、ドラッグ&ドロップで一つ一つメッシュを登録するのも良いですが、面倒な場合は「Open Tools For Adding Objects」というボタンを押してください。ツールウィンドウが立ち上がるので、そこの「Add Selected Meshes To Bakers」以下を見て「Target to add object to」にMeshBaker0オブジェクトがリンクしてあるのを確認します。次に結合するメッシュが含まれている親ルートオブジェクトを選択します(今回の場合は「unitychan」→「mesh_root」を選択)。「Add Selected Meshes」ボタンを押します。すると選択したオブジェクトのルート下にあるメッシュ(のあるオブジェクト)を自動で選択してくれます。
meshbakertest05.png

meshbakertest06.png

*ちなみに、選んでほしくないメッシュがあるなら、そのオブジェクトのアクティブを「false」にすれば選ばれないようです。

メッシュが選択されたら、「Object To Be Combined」の下の「Create Empty Assets For Combined Material」ボタンを押します。「Material Bake Result」アセットを名前を付けて保存するように促されるので、適当な場所に適当な名前で保存し(今回は「CombinedMesh」という名前にしました)、次の作業に移ります。

結合するメッシュに使用されているシェーダーが1種類なら、そのまま「Bake Materials Into Combined Material」ボタンを押してマテリアルの結合を行てしまって良いのですが、選択したUnityちゃんのメッシュには複数のシェーダーが使われているので、シェーダー別にマテリアルを結合します。
「Multiple Combined Materials」にチェックを入れて、その下に現れた「Build Source To Combined Mapping From Objects To Be Combined」ボタンを押すと、シェーダー別にマテリアルを自動生成してくれます。
しかし、再び「Bake Materials Into Combined Material」ボタンを押して結合しようとしても、エラーが出て結合できないと思います。エラーログには「同じマテリアルがリストにあんぞコラ!(意訳)」とあり、よく見てみると「submesh:2」と「submesh:4」に同じシェーダーが使われてしまっているので、右上の「-」ボタンを押して「submesh:4」をリストから取り除きます。
meshbakertest07b.png

改めてマテリアル結合ボタンを押すと、今度はログに「Report」という結果表示が出て、結合に成功しているはずです。

最後にメッシュの結合を行います。「MB2_Mesh Baker」というコンポーネントを見てください。
「Material Bake Result」に今までのマテリアル設定の結果が入ったアセットがリンクされていると思います。「Renderer」の設定を「meshRenderer」から「skinnedMeshRenderer」に変更します。他の設定はデフォルトのままにしました。
meshbakertest11.png

すべての設定を終えて「Bake」ボタンを押すと結合されたメッシュがヒエラルキーに生成されます。
meshbakertest12.png

「unitychan」の「mesh_root」オブジェクトのアクティブを「false」にして「Statistics」を表示すると、ドローコール数が「18」まで減量されているはずです。

*AnimatorにAnimatorControllerをリンクしているのにアニメーションが動作しないときは、Animatorの「Culling Mode」を「Based On Renderers」から「Always Animate」に変更すると良いようです。

以上が自分の行った『Mesh Baker 2』での一連の作業の流れです。
顔回りについては結合しませんでした。Unityちゃんの顔にはブレンドシェイプが使用されているようで、『Mesh Baker 2』は現在ブレンドシェイプに対応されていないためです。

*ちなみに、本家サイトの説明に「Mesh Baker cannot combine Blend Shapes at this time.(Mesh Bakerは現在ブレンドシェイプを結合できません)」とあるので、深読みすればいつか対応する予定なのかも?

スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://kouhakuishi.blog.fc2.com/tb.php/5-cd7ad06a

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

プロフィール

Author:ta28white
技術系ブログはじめました。

最新コメント

最新トラックバック

月別アーカイブ

twitter

検索フォーム

ブロとも申請フォーム

この人とブロともになる

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。