UnityでLive2Dの複数のモデルを表示させ(モデルA、Bとします)、
それぞれのパーツを指定した順番によって手前から表示させたいと考えています。
手前から、
モデルAの左腕→モデルBの胴→モデルAの右腕→モデルBの左腕…
というようなイメージです。
現在着手中のプロジェクトでは複数モデル間の手前、奥は基本的に
transform.positionのz座標にて制御しています。
それを今回のような状況でのみ、2モデルのz座標を全く同じにして、
パーツそれぞれの奥行きによって重なり合いを制御したいです。
できそうな方法として以下の2つを考えています。
【手段 1 】:Cubism Editor側の「描画順」項目を変更する
上記運用例でいうと
モデルAの左腕を「600」、モデルBの胴を「500」、モデルAの右腕を「400」…という
ようにメッシュそれぞれの描画順によって、複数モデル間のパーツの手前、奥を
制御するやり方ですが、こちらは試したところうまくいきませんでした。
Unity側でのカメラかなにかの設定が原因なのかもしれません。
もしCubismEditor側で設定する描画順が複数モデル間でも
共有していて、それをUnity上でも使用できるなら個人的には
この手法が一番望ましいです。このあたりの仕様についてお教え願いたいです。
【手段 2 】:CubismEditor側で作成される「パーツ」に紐づいたメッシュを
取得して、それらのメッシュの「LocalOrder」をUnity側で変更する
CubismEditor側で一番手前に表示したいメッシュ群をまとめて
パーツフォルダに入れ、それをUnity側にてモデル出現時に「手前パーツ」フォルダに
入っているメッシュのCubismRendererを取得してそこのLocalOrderを
全部変更していく手法です。
指定パーツの検索は CubismModel.Parts.FindById()で
行えるみたいなのですが、ここからこれに紐づいたメッシュを取得していく方法が
わかりません。
以上手段1、手段2についての不明点についてご教授いただけますと
大変助かります。
また、他に実現できそうな手段がある場合そちらをお教えいただけると
とても嬉しいです。何卒よろしくお願いいたします。