【macOS 11.0 Big Surへの対応状況について】
現在公開中のCubism Editorは、以下のバージョンではmacOS 11.0 Big Surには対応しておりません。
・Cubism Editor 4.0.07 beta 以前のバージョン
上記バージョンでは正常に動作できない可能性がありますので、OSのアップグレードをお控えいただくか、【Cubism Editor 4.0.07 正式版】をご利用いただきますようお願いいたします。
関連するお問い合わせにつきましては、この文章をもって代えさせていただきます。
Cubism SDKにつきましては、現在公開中の製品全てにおいてmacOS 11.0 Big Surには対応しておりません。
現在対応検討中となりますが、対応バージョンや時期につきましては改めてお知らせいたします。

またApple Sillicon版のmacにつきましても、全てのCubism 製品において対応しておりませんのでこちらも合わせてご了承ください。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

Cubism SDK for Unityで、ポーズのフェードをオフにするには

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

何も表示していない状態から、「腕Bなどの専用パーツを持つモーションを表示」しようとすると
「基本ポーズのパーツが一瞬表示されて、腕Bがフェードインしてくる」という状態になってしまいます。
ポーズ関連のフェードを強制的にオフにした状態で、モーションを開始したいのですが、そういうことは可能でしょうか。

live2d.frameworkのL2DPose.csのコードの中身を見たのですが

public void updateParam(ALive2DModel model) 内で

// 設定から時間を変更すると、経過時間がマイナスになることがあるので、経過時間0として対応。
if (deltaTimeSec < 0) deltaTimeSec = 0;

for (int i = 0; i < partsGroupList.Count; i++)
{
normalizePartsOpacityGroup(model, partsGroupList[i], deltaTimeSec);
copyOpacityOtherParts(model, partsGroupList[i]);
}

で、となっているので、このdeltaTimeSecを大きな値にする(フェード時間を強制的に終わらせる)ようなメソッドを追加すれば一応できはするのですが、
正式な手段があれば教えていただけると助かります。


コメント

  • 追記になります。
    deltaTimeSecを大きな値にしても、
    最初の1フレームは、基本パーツが表示されてしまうようです。

    コードを追ってみたところ、
    public void normalizePartsOpacityGroup の
    visiblePartsは、2フレーム以降は1になっているのですが、最初の1フレームだけ0になってしまう状態です。


    やりたいことは「指定したモーションで表示を開始する」ということです。

    Live2Dは補間をあちこちでしているため、全体を把握できていないのですが、
    普通にやろうとすると、基本モーションや基本ポーズとの間で、補間やフェードが入ってしまっているため、それを無効化しようとしています。
    そういったことは設計的に無理があるのでしょうか。

  • @rodostw さん

    以下のsetPartsOpacityとsetParamFloat部分を修正すると、一瞬表示される事がなくなるかと思います。

    L2DPose.csの89行目あたり
    public void initParam(ALive2DModel model)
    {
        if (model == null) return;
    
        for (int i = 0; i < partsGroupList.Count; i++)
        {
    
            L2DPartsParam[] partsGroup = partsGroupList[i];
            for (int j = 0; j < partsGroup.Length; j++)
            {
                partsGroup[j].initIndex(model);
    
                int partsIndex = partsGroup[j].partsIndex;
                int paramIndex = partsGroup[j].paramIndex;
                if (partsIndex < 0) continue;// 存在しないパーツです
    
                bool v = (model.getParamFloat(paramIndex) != 0);
    //            model.setPartsOpacity(partsIndex, (v ? 1.0f : 0.0f));
    //            model.setParamFloat(paramIndex, (v ? 1.0f : 0.0f));
                model.setPartsOpacity(partsIndex, 0.5f);
                model.setParamFloat(paramIndex, 0.0f);
            }
        }
    
    1)デフォルトの場合


    2)setPartsOpacity = 0.0f, setParamFloat = 0.0fの場合、逆に一瞬だけ腕が消えます


    3)setPartsOpacity = 0.5f, setParamFloat = 0.0fの場合がベストかと

  • ありがとうございます!
    参考にさせていただいて、調整をかけてみます。
コメントするにはサインインまたは登録して下さい。