この記事でのバージョン
Unity 2019.4.17f1
はじめに
Unityで3Dモデルを表示しようと思った時に基本的には
アニメーションをする場合はSkinnedMeshRenderer、しない場合はMeshRendererを使います。
これらのRendererはMeshとMaterialが共通で使えますし、
SkinnedMeshRendererはMeshRendererに比べて結構重いので、アニメーション出来るモデルでも、
アニメーションの必要がない場合はMeshRendererを使うという事がよくあります。
しかし、当然MeshRendererはアニメーションが出来ないので、
「好きなポーズで固定したままMeshRendererで表示する」みたいな事は出来ません。
と言う事で今回は、SkinnedMeshRendererのポーズを固定したままMeshRendererに変換する方法です!
なお、記事中では以下のアセットを使っています。
Animals - Simon the Raccoon | Characters | Unity Asset Store |
SkinnedMeshBaker
今回はSkinnedMeshRendererのポーズを固定した状態のMeshを保存出来る
SkinnedMeshBakerというアセット(?)を使っていきます。
ちなみにライセンスはCC0(いかなる権利も保有しない)なので、誰でも安心して使うことができます。
導入はzipをダウンロードして、
解凍した後、中に入ってるSkinnedMeshBaker.unitypackageを
ダブルクリックかUnityのProjectにドラック&ドロップしてImportするだけ。
使い方も簡単で、Animationウィンドウでアニメーションを固定したいポーズの所で止めて、
そのオブジェクトをHierarchy上で右クリックし、BakeSkinnedMeshPoseを選ぶだけ。
こうすると保存完了のウィンドウが表示され、
指定したポーズのMeshとそれを使ったPrefabがProject上に保存され、
かつHierarchy上にそのPrefabが配置されます。
後は保存されたMeshをMesh Rendererで使うだけ。(保存されたPrefabをそのまま使えばOK)
なお、MaterialはSkinnedMeshRendererで使っていたのと同じのを使う感じです。
余談ですがMeshを結合したい場合は「Mesh Baker」というアセットが
Meshを削減したい場合は「Mesh Simplify」というアセットがオススメです。