【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チュートリアル

Live2D 2.1 DirectX(2.1.04.1) テクスチャのロード枚数が足りないときのReadエラーの回避について

model.jsonからテクスチャをロードする形を取っています
jsonに不足があり、mocが必要とするテクスチャよりもロード枚数が少ない状態で実行すると
live2d::ALive2DModelのdrawを実行したときにメモリーのRead違反エラーでソフトが落ちてしまいます。

ソフトが落ちるのを回避したいのですが、メモリーエラーなのでcatchが効きません。
それならばmocの必要とするテクスチャ枚数とjsonでのロード数が一致しないときはモデルのロードをキャンセルしようと考えているのですが、
mocが必要とするテクスチャ枚数の情報を得るAPIが見つかりませんでした。
generateModelTextureNoでいけるかと思いましたが別の値が入っていました。

一般開発であればjsonを精査するのが一番ですがユーザー側でファイルを入れ替えるためそうも行かないため
mocの必要とするテクスチャ枚数を把握する方法か、
draw時のエラーをキレイに押さえ込む方法を
ご教示いただけると幸いです。
よろしくお願いいたします。

開発環境
------------------------
win10 pro
microsft visual stadio community 2015
c++
DirectX9.0(June 2010)
SDK DirectX 2.1 2.1.04_1
------------------------

ファイルの入れ替え機能はLive2DDrawer for Aviutlで拡張性アプリケーション契約済みです。

コメント

  • @Ganeesya さん

    テクスチャの枚数を直接取得するAPIは用意しておりませんが、以下のやり方で間接的に取得することは出来ます。


    ModelContext* modelContext = live2DModel->getModelContext();

    // テクスチャの数をカウントするためのマップ。
    std::map<int, int> map;

    // 全ての描画オブジェクトの数。
    int drawDataCount = modelContext->getDrawDataCount();

    for (int i = 0; i < drawDataCount; i++)
    {
        // i番目の描画オブジェクト。
        DDTexture* ddt = (DDTexture*)(modelContext->getDrawData(i));

        // 描画オブジェクトが使用しているテクスチャ番号をkeyに設定。valueはダミー。
        map[ddt->getTextureNo()] = i;
    }

    // mocが使用するテクスチャの数。
    int textureCount = map.size();
  • 素早い回答ありがとうございます!

    早速組み込んで問題のあるファイルの読み込みがきちんと回避できるようになりました!
コメントするにはサインインまたは登録して下さい。