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

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、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チュートリアル

Live2Dモデルの実キャンバスサイズを取得したい

編集済: 6月 2020 Cubism 4 SDK
お世話になります。
掲題の件ですが、CubismModel::GetCanvasWidth()、CubismModel::GetCanvasHeight()を使うと、モデルの縦横比は取得できますが、
実際のサイズが取得できません。
pixelsPerUnitが取得できれば求めることができるのですが、取得する関数などが見当たりませんでした。

もしかすると、moc3ファイルを書き出す際に、キャンバス幅、高さに実サイズ、pixelsPerUnitに1を入れて出力するのが正解なのかなと思ったのですが、どのようにして取得すればいいでしょうか?

よろしくお願いします。

■開発環境
Windows 10 pro 1909
Visual Studio Professional 2017
Cubism 4 SDK for Native R1
タグ付けされた:

コメント

  • Cubism 4 SDK for Native R1のD3D11のサンプルを使ってます。
  • Live2DCubismCore.hの「csmReadCanvasInfo」関数を使うことで取得することができました。

    失礼しました。

    ■参考
    https://docs.live2d.com/cubism-sdk-manual/cubism-core-api-reference/?locale=ja
  • 編集済: 6月 2020
    gama55 様

    お問い合わせいただき誠にありがとうございます。
    Live2Dスタッフの Takと申します。

    この度は製品のご利用にご不便をおかけし大変申し訳ありません。

    モデルの実キャンバスサイズを取得するAPIにつきまして、
    調査したところ、大変申し訳ありませんが gama55 様 にご提示いただいた CubismModel::GetCanvasWidth()、CubismModel::GetCanvasHeight() がモデルの実キャンバスサイズを取得するAPIとなりますが、
    現在リリースしているCubism SDK for Native R1では pixelsPerUnit で割った結果が出力されておりました。
    これにつきましては、想定しているAPIの仕様と外れた結果となりますので、今後のSDKパッケージの更新にて修正予定となります。

    なお、回避策につきましては、
    CubismModel::GetCanvasWidth() などで使用されている、Cubism Core APIの
    Core::csmReadCanvasInfo();
    の第二引数~第四引数にて取得される結果を返却するようなAPIを新しく実装することで、モデルの実キャンバスサイズや pixelsPerUnit が取得できるようになります。

    簡単に、以下のような実装になります。
    ただし、以降更新されるSDK製品版で必ずしも同じ実装にならないことをご了承ください。
    csmFloat32 CubismModel::GetCanvasPixelWidth() const
    {
        Core::csmVector2 tmpSizeInPixels;
        Core::csmVector2 tmpOriginInPixels;
        csmFloat32 tmpPixelsPerUnit;
        
        // 第2引数 -> _model の実キャンバスサイズが入る
        // 第3引数 -> _model のキャンバス中心座標が入る
        // 第4引数 -> _model の pixelsPerUnit が入る
        Core::csmReadCanvasInfo(_model, &tmpSizeInPixels, &tmpOriginInPixels, &tmpPixelsPerUnit);
    
        // モデルの実キャンバスサイズの横を返却する
        return tmpSizeInPixels.X;
    }
    上記実装を流用すると、実キャンバスサイズ、キャンバス中心座標、pixelsPerUnit が取得できるAPIが実装できますので、お試しください。
    お手数をおかけいたしますが、ご確認を何卒宜しくお願いいたします。
  • Tak(Staff) 様

    回答&調査して頂きありがとうございます。
    今後のSDK更新で修正の件了解しました。

    また、回避策も提示して頂きありがとうございます。
    助かります。
コメントするにはサインインまたは登録して下さい。