新しいLive2D公式コミュニティ(日本向け)が公開されました!
ぜひご利用ください!
Live2D公式コミュニティ

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2023年夏ごろを目処に方針を決定する予定です。
(2022/12/27追記 2022年内を目処に閉鎖 から変更しております)
内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。

Live2D ヘルプ

Cubism Editorダウンロード / 動作環境
Cubism SDKダウンロード / 対応表
Cubism 製品利用ライセンス(SDK含)

Cubism 製品のライセンスについてのお問い合わせはこちら
nizima 及び nizima 製品についてのお問い合わせはこちら
【各最新OSの対応状況について】
Cubism Editorは 4.1.02 正式版以降でWindows 11 及び macOS Monterey に対応しております。ぜひ最新版をご利用ください。
※macOSをお使いの方でOSアップデートする際は必ずCubism Editorのライセンスを解除してください。
Cubism EditorをインストールしているmacOSをアップグレードしたい
Cubism SDKについては各SDKのREADMEまたはNOTICEをご確認ください。

【Mac各機種への対応状況について】
現在、Cubism EditorはApple M1チップ搭載機種には対応しておりません。
詳細は 動作環境 をご参照ください。
関連するお問い合わせへの対応はこの文章をもって代えさせていただきます。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

表情変化でArtMeshを表示非表示で値を変更すると透明度正しく変化しない

編集済: 6月 2017 Cubism SDK 2.1
こんな感じです。

パラメーターを見ての通り、1-0のみなのに半透明が残っています。

表情変化を基本はパラメーターでいじりつつ、
ある一定量を超えると、口を大きく開けた別のArtMeshの透明度をいじって表示する。
といった事をすると、透明度が消えたままだったり、半透明に残ったままの事象が発生します。
BODYは0だから完璧に消えてなければならず、HAIRは0なので消えなければならないですが、しっかり残っています。
これが重なると表示位置すらぶっ飛んだ感じになってしまいます。

リファレンスを見ると、unityでの透明度の描写は不安定というのを見ましたが、
とはいえ、発生が不安定だから気を付ける、では対策のしようがないです。

どういった条件で発生するのか、そもそもできない機能なのか、
透明度の再描画の指示をこちらで明示的に指示する別の方法があるなど、
なにか回避する方法はないのでしょうか。

コメント

  • @SakataHarumiRT さん

    この不具合ですが、Inspectorから不透明度を操作したタイミングと、SDKが設定された不透明度をモデルに適用するタイミングが入れ替わってしまうことが原因となっております。

    パーツの不透明度自体は、[モデル]/Parts以下のパーツごとに保持しており、
    Inspectorの拡張によってそれらを一括で操作できるようにしております。

    不透明度の値を更新したあと、SDKのフレームワークがその値からパーツの不透明度を
    更新するのが想定通りの動作なのですが、Inspectorのスライダーで値を変更した場合、
    UnityのGUIの仕様から、更新の順序が入れ替わってしまい、一つ前の不透明度の値が参照されてしまいます。
    そのため、スライダーをゆっくり動かしていれば誤差は小さいのですが、素早く値を変更した場合はその誤差が大きくなり、表示状態に齟齬が発生するのがこの不具合となります。

    回避方法としては、Inspector上での操作であれば、スライダーをゆっくり操作する、右側の数値入力欄に直接数値を入力する、という方法があります。
    ただし、0(=非表示状態)の場合は、負荷軽減のためにMeshRendererをDisableにしています。
    0で止まってしまった場合、スライダーを一度0に戻してからでないと不透明度が反映されませんのでご注意ください。

    現在はこの不具合の修正を検討しております。
    ご不便をおかけしますが、どうぞよろしくお願いいたします。
  • ありがとうございます。
    表示テストのため、inspectorで確認をおこなっていました。
    今度はC#上で制御テストしてみます。
    制御的には透明度をいじるよりdisabledさせたほうがよいでしょうか。
  • 編集済: 6月 2017
    @SakataHarumiRT さん

    フェードせずに切り替えるだけであればDisableの操作でも構いません。

    C#上での制御ですが、アップデート処理をUnityのメインスレッドで行う場合、
    OnRenderObject() よりも前のタイミングで操作すればフレームがずれることはありません。

    ちなみに、パーツの不透明度の値は、以下の変数となっているため、AnimationClipで制御することも可能です。
    [モデル]/Parts/[パーツID]/Opacity
  • いまいじってみましたが、cubism3のSDKを探るのに、前バージョンの検索結果が出てきて答えにたどり着いていません。

    =================================
    using Live2D.Cubism.Core;
    public class TestL2D : MonoBehaviour {

    [SerializeField]
    public CubismModel Model;
    bool test = false;

    void OnRenderObject()
    {
    if (!test)
    {
    CubismParameter[] para = Model.Parameters;
    Debug.LogFormat("para {0}", para[6]);
    Model.Parameters.SetValue(para[6], 2);
    test = true;
    }
    }
    }
    ==================================


    みたいなので、DebugLogはちゃんと狙いのパラメーター名が取得でき、ここ値が入ってくれればと思ったのですが、そうでもないようで…。不勉強で申し訳ありません。
    シンプルモデルにあった「live2DModel.setParamFloat("PARAM_ANGLE_X", (float)angle_x);」みたいな制御を望んでます。
    参考になるリファレンスはありませんか。それとも前バージョンに戻したほうがいいでしょうか。
  • @SakataHarumiRT さん

    Model.Parameters.SetValue(para[6], 2);
    という部分を以下のようにしてみてください。
    para[6].Value = 2;

    マニュアル、チュートリアルは現在整備中です。
    ご迷惑をおかけいたします。

    よろしくお願いいたします。
コメントするにはサインインまたは登録して下さい。