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

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

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

Live2Dモデルを原寸大で表示したい

お世話になります。
Cubism 4 SDK for Native R1のD3D11のサンプルを触りながら勉強中です。
掲題の件ですが、このサンプルだとウィンドウのサイズに合わせてモデルの大きさが変化するのですが、
これをウィンドウの大きさにかかわらず、原寸大(モデラーで吐き出したときのサイズ)のまま表示したいです。
自分でGetClientSize()で取得するサイズを固定化するなど試してみたのですが、原寸大よりも小さく表示されるなど、
うまくいかないため、どのように修正すれば原寸大のまま表示できるかを教えて頂きたいです。

よろしくお願いします。

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

コメント

  • クライアント領域とバックバッファサイズを1600x900で固定し、1600x900のLive2Dモデルを表示したところ、添付の画像のようにモデルが縮小されて表示されます。
    緑色で表示されているのがテスト用に作成した1600x900のモデルです。
    どこの設定が悪いのかまだよくわかっていません。


  • gama55 様

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

    モデルの大きさを原寸大にて表示する方法について回答します。
    Cubism SDKで表示するモデルのtransform情報は行列を取り扱っているため、CubismMatrix44またはそれを継承したクラスで制御が可能です。
    ウィンドウの大きさにかかわらず、原寸大で表示するためには
    モデルを管理するクラスであるCubismUserModelを継承したクラス(サンプルですとLAppModelが該当します)に _modelMatrix がございますので、この _modelMatrix をScale(1.0, 1.0)にすることで原寸大の表示が可能となります。
    これをモデルのセットアップ時などに適用してください。
    詳しくは以下のマニュアルをご確認ください。
    【モデルの表示位置、拡大・縮小率の操作】
    https://docs.live2d.com/cubism-sdk-manual/layout/

    お手数をおかけいたしますが、ご確認を何卒宜しくお願い申し上げます。
  • Tak(Staff) 様

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

    _modelMatrix->Scale(1.0f, 1.0f);
    を設定して試してみましたが、ウィンドウサイズに合わせてモデルの大きさが変わってしまうようです(ベースのサイズ?には変化がありました)
    他に変更すべき場所はあるでしょうか?

    よろしくお願いします。
  • LAppDefine.cppのRenderTargetWidth、RenderTargetHeight
    LAppLive2DManager.cppのOnUpdate()内のwindowWidth、windowHeight
    上記を固定する(テストで1600x900を設定)ことで、ウィンドウサイズが変わってもモデルのサイズが変わらなくなりました。
    現在、添付画像のようにハルモデルが表示されていますが、原寸大ではないようです。
    ハルモデルをCubism Viewerで確認するとキャンバスサイズが2400x4500となっているので、もっと大きく表示されていないとおかしいです。

    ハルモデルはSDK内のResourcesフォルダ内に同梱されていたものです。
    また、_modelMatrix->Scale(1.0f, 1.0f);の設定もしてあります。


  • gama55 様

    ご確認いただき誠にありがとうございます。
    Live2Dスタッフの Takと申します。

    内容を確認し調査したところ、ウィンドウサイズによってモデルのサイズも変化してしまう動作につきましては、
    LAppLive2DManager.cppのOnUpdate()内のwindowWidth、windowHeight
    上記を固定する(テストで1600x900を設定)ことで、ウィンドウサイズが変わってもモデルのサイズが変わらなくなりました。

    こちらの対応で問題ないと考えられます。

    しかし、こちらからご案内いたしました、モデルのサイズを原寸大で表示させる実装
    _modelMatrix->Scale(1.0f, 1.0f);
    をしても原寸大で表示されない現象につきましては、案内した手前大変申し訳ございませんが、改めて確認したところ原寸大のサイズにならず、不具合の可能性も含め現在調査中でございます。
    こちらにつきましては追ってご連絡差し上げたいと思いますので、勝手なお願いではございますがお時間をくださいますよう宜しくお願いいたします。
  • Tak(Staff) 様

    回答&調査して頂きありがとうございます。
    原寸大の調査の件了解しました。

    よろしくお願いします。
  • 編集済: 7月 2020
    gama55 様

    お待たせしております。
    Live2Dスタッフの Takと申します。

    ご連絡が遅くなり大変申し訳ございません。
    モデルのサイズを原寸大で表示できない現象について調査したところ、 modelMatrix.Scale() の扱いについて、提示したマニュアルの記載文に原寸大と捉えられる表現となっていることに加え、ウィンドウとmatrixの扱いに不具合があることが判明し、現在修正作業中でございます。
    また、 modelMatrix.Scale(1.0f, 1.0f); は原寸大になる仕様ではなく、ウィンドウ内に収まるような横サイズ= scaleが1といった仕様となります。これについては、モデルが原寸大になるようなscaleを算出する必要があります。
    取り急ぎご連絡いたします。
    こちらからご案内した仕様が間違いであり且つ不具合があることが判明し、
    gama55 様やこの機能をご利用になるユーザ様にはご不便をおかけし大変申し訳ございませんが、
    完了まで今しばらくお待ちいただきますようお願いいたします。
  • Tak(Staff) 様

    回答&調査して頂きありがとうございます。
    不具合修正の件了解しました。

    これらの不具合はいつぐらいに修正完了予定でしょうか?
    よろしければ教えて頂きたいです。

    よろしくお願いします。
  • 編集済: 7月 2020
    (2020/07/08 17:30 添付ファイルに不足がありましたので、こちらのコメントにて再度正しいファイルの添付をご案内しております。)

    gama55 様

    お待たせしております。
    Live2Dスタッフの Takと申します。

    本件不具合の修正につきまして、DirectX11サンプルでの修正が暫定的に完了となりましたのでご連絡いたします。

    ウィンドウとmatrixの扱いに不具合がある
    はじめにこちらの件について、このコメントに修正差分を添付いたしましたので、適用をお願いいたします。
    この修正は他レンダラのサンプルコードに同様の修正を適用後、Live2D Github及びSDKパッケージに適用される予定となります。
    内容につきましては以下となります。
    ・scale算出などに使用するサイズ基準の統一
    ・LAppLive2DManagerにてviewMatrixを適用

    モデルのサイズを原寸大で表示できない現象
    こちらにつきましては、先の修正差分を適用し、こちらのディスカッションでご案内しているモデルの実pixelサイズを取得できるようにした上で、LAppModel::SetupModel() などで以下の処理を追加することで原寸大での表示が可能になります。
        float scale = _modelMatrix->GetScaleX() * _model->GetCanvasPixelHeight() / RenderTargetHeight;
        _modelMatrix->Scale(scale, scale);

    当該調査と修正にお時間を頂いた上、修正までの手順が多くなってしまい大変申し訳ございませんが、上記をお試しいただき動作のご確認をお願いいたします。
  • Tak(Staff) 様

    修正差分ファイルありがとうございます。
    ご提示の方法で試してみたのですが、原寸大にならないようです。
    添付した画像のように修正前より大きくはなっていますが、原寸大より小さいです。
    下記の「手順」で行いましたが何か間違っているでしょうか?

    ■手順
    ・Cubism4 SDK for Native R1のD3D11サンプルに、修正差分ファイル(CubismNativeSamples_20200708)を適用
    ・LAppLive2DManager.cppの147行目に「windowWidth = 1900;」、148行目に「windowHeight = 1000;」を追加(モデルサイズ固定用)
    ・LAppModel.cppの248行目に下記を追加
    //---------------------------
    Live2D::Cubism::Core::csmVector2 tmpSizeInPixels;
    Live2D::Cubism::Core::csmVector2 tmpOriginInPixels;
    float tmpPixelsPerUnit;
    Live2D::Cubism::Core::csmReadCanvasInfo(_model->GetModel(), &tmpSizeInPixels, &tmpOriginInPixels, &tmpPixelsPerUnit);
    float scale = _modelMatrix->GetScaleX() * tmpSizeInPixels.Y / RenderTargetHeight;
    _modelMatrix->Scale(scale, scale);
    //---------------------------

    よろしくお願いします。


  • gama55 様

    お世話になっております。
    Live2Dスタッフの Takと申します。

    大変失礼いたしました。
    内容確認したところ、更新すべきファイルに抜けがございました。
    こちらファイルを追加しこのコメントに貼付いたしましたので、ご確認をお願いいたします。
    ※追加したファイル以外に更新はございません。

    内容としては以下の修正として含まれるものとなります。
    ・scale算出などに使用するサイズ基準の統一

    また、過去のコメントに添付したzipファイルは削除いたします。

    こちらの手違いでお手数をおかけし大変申し訳ございません。
    よろしくお願いいたします。
  • Tak(Staff) 様

    対応ありがとうございます。
    追加されたファイルを適用したところ、原寸大で表示されるようになりました。
    ありがとうございます。
コメントするにはサインインまたは登録して下さい。