★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。

新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
Live2D公式クリエイターズフォーラム

なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。

描画モードの設定について

いつもお世話になっております。

現在、UnityでLive2Dの手前に半透明込みのエフェクトを表示しようとしております。
マニュアルにある通り、L2D_RENDER_DRAW_MESHにて描画をしようとしておりますが、
setRenderModeでL2D_RENDER_DRAW_MESHに設定するとLive2Dの表示が消えてしまいます。

SDK付属のDrawMeshModeのプロジェクトを実行してもLive2Dが消えてしまい、
L2D_RENDER_DRAW_MESH_NOWに変更すると描画されるようになります。

上記、不具合についてどのような原因が考えられますでしょうか?
実行環境は下記の通りとなります。

Windows7 Professional
Unity ver4.5.5f1
Live2D Cubism SDK [2014/11/07] 2.0.01_1

コメント

  • Unityの仕様により、L2D_RENDER_DRAW_MESHの場合は、Live2DModelUnity.draw()の呼び出しタイミングをOnRenderObject()からUpdate()に変更する必要があります。
    以下のページの、「描画モードの設定方法」の3を参照してください。
    https://sites.google.com/a/cybernoids.jp/cubism2/sdk_tutorial/platform-setting/unity/csharp/render-mode
  • お世話になっております。

    ご返答ありがとうございます。

    記載漏れがあり、申し訳ございません。
    draw()のタイミングはOnRenderObject()からUpdate()に変更しています。

    下記がソースになります。
    Sceneはこのmain.csを空のゲームオブジェクトにアタッチし、Moc FIleにmiku.moc.bytesをセット。
    Textureにmiku.2048/texture_00.pngをセットした状態となっております。
    カメラのプロジェクションもOrthographicへ変更してあります。

    追加で提示すべきことがありましたら、ご指摘お願い致します。


    =============================================
    using UnityEngine;
    using System.Collections;
    using live2d; //Live2Dライブラリを使用

    public class main : MonoBehaviour {

    public TextAsset mocFile; // mocファイル
    public Texture2D texture; // テクスチャファイル
    private Live2DModelUnity live2DModel; //Live2Dモデルクラス

    void Start ()
    {
    //初期化(Live2Dを使用する前に必ず1度だけ呼び出す)
    Live2D.init();
    //モデルデータを読み込む
    live2DModel = Live2DModelUnity.loadModel ( mocFile.bytes );
    //テクスチャの関連付け
    live2DModel.setTexture( 0, texture );

    //描画モードを指定
    live2DModel.setRenderMode( Live2D.L2D_RENDER_DRAW_MESH );
    }

    // デフォルトでは DrawMeshNow でLive2Dモデルを描画するので OnRenderObject を使う
    void OnRenderObject ()
    {
    }

    void Update ()
    {
    //表示位置と大きさの指定
    Matrix4x4 m1 = Matrix4x4.Ortho( 0, 900, 900, 0, -0.5f, 0.5f );
    Matrix4x4 m2 = transform.localToWorldMatrix;
    Matrix4x4 m3 = m2 * m1;
    live2DModel.setMatrix( m3 );

    //経過時間で顔の角度Xを動かす
    float time = UtSystem.getUserTimeMSec() / 1000f;
    live2DModel.setParamFloat( "PARAM_ANGLE_X", 30 * Mathf.Sin( time ), 1);

    //頂点の更新
    live2DModel.update();

    //モデルの描画
    live2DModel.draw();
    }
    }

    y_a_s_(Dev Staff)
  • 確認したところ、最新バージョンのSDKのバグでした。
    一つ前の2.0.00_1では正常に表示されるますので、そちらのライブラリをお使いください。
    この不具合は次の更新時に修正させていただきます。
    報告ありがとうございました。
  • お世話になっております。

    ご返答ありがとうございます。
    SDK側の不具合の件、了解しました。
    ひとまず、2.0.00_1で開発を進めます。

    ご丁寧に対応いただき、ありがとうございました。
  • こちらこそお騒がせして申し訳ありません。
    近日中に修正版を公開いたします。
コメントするにはサインインまたは登録して下さい。