質問は基本的に1スレッドにつき1つの内容でお願いします。

お問い合わせの際は下記の情報を明記をお願いいたします。

▼ソフトウェアに関するご質問の場合

・【問題が発生したソフトウェア名とバージョン】(例:Cubism Editor 3.1.02、Euclid Editor 1.2.0 など)
・【ご利用のPC環境】例:Windows10、macOS HighSierra など
・【機種名】:MacBookPro 2017 など
・【グラフィックボード】例:GeForce GTX 950M など
・【メモリ】例:8GB
・【原画(イラスト)を制作したソフトウェア】例:Photoshop , CLIP STUDIO , SAI など
・【問い合わせ内容がわかるスクリーンショットまたは動画】例:パーツの表示状態など、お問い合わせ内容がわかる画像をご用意ください

---------------------------

▼SDKに関するご質問の場合

・現象の再現を行い検証させていただきますので、再現する最小のプロジェクトのご提供か、再現するまでの手順
・使用したSDKのバージョン

UnityでLive2Dモデルを表示した際の拡縮率は?

チュートリアルに従って、Unity上にLive2Dモデルを表示できたのですが、実寸より小さく表示されます。
どの程度縮小されているのでしょうか?(どの程度拡大すれば実寸どおりのサイズになるのでしょうか?)

コメント

  • 返事が遅れてすみません。
    とりあえず確認しますが、従ったチュートリアルというのは、プロジェクト作成チュートリアルのことでしょうか?
  • 返信ありがとうございます。

    説明が足りなくてすみません。
    以下のページに記載されている手順を参考にしました。
    http://sites.cybernoids.jp/cubism/home/special/20140327/session2

    上記ページの中で

    1.6 再生ボタンを押してシーンを再生
     おそらく小さいく表示されるので、「Miku」のScale を(5, 5, 1)にする。

    と記載されており、その記載のとおり小さく表示されるのでScaleでサイズを調整しておりますが、そもそも、なぜ作成時より小さく表示されるのか?(Live2Dの仕様なのか? Unityの仕様なのか?)、Scaleの値をどの値に設定したら実寸どおりの表示サイズとなるのか?
    というのを教えて頂けないかという質問でした。

    Unity勉強中なので見当違いの質問かもしれませんが...
  • なんとなくわかってきた気がします。
    以下のコードで、Live2Dのモデルの座標系をUnityの表示領域の座標系に変換しており、この行列の設定次第で表示サイズが変わってくるようですね...

    //表示位置と大きさの指定
    Matrix4x4 m1 = Matrix4x4.Ortho( 0, 900, 900, 0, -0.5f, 0.5f );
    Matrix4x4 m2 = transform.localToWorldMatrix;
    Matrix4x4 m3 = m2 * m1;
    live2DModel.setMatrix( m3 );

    この記述から推測すると、
    Live2Dのモデルの座標系は左上が(0,0)で右下が(幅,高さ)となっていると思わますが、あってるんでしょうか?
  • やはり上記の箇所がよくわからないのですが、
    Matrix4x4 m1 = Matrix4x4.Ortho( 0, 900, 900, 0, -0.5f, 0.5f );
    に指定する left, right, top, bottom の値はそれぞれどのような値を設定したら良いのでしょうか?

    そもそもLive2D関係無くUnityに関するものかもしれませんが、Unityの関数リファレンス等を参照してもいまいちピンと来ませんでした。
    ここで設定する値が、Unity上でLive2Dモデルが表示されるサイズにどのように関わってくるのか、ご存知であればヒントでも教えて頂きたいです。

    よろしくお願い致します。
  • 8月 2014 編集されました
    私も気になったため、色々と試してみました。

    Live2Dの座標系は左上を(0,0)の原点とし、右下が(幅,高さ)で間違いないと思います。
    Matrix4x4.Ortho(...)のbotomとtopの値が逆になっているのは
    unityの座標系とLive2Dの座標系で上下が逆なため、ここで修正しているようです。

    サイズについてですが、Live2Dのキャンパスサイズがそのまま
    表示スプライトのサイズとなっているようです。
    (キャンパスが256*256なら、Unity単位で原点(0,0)から(256,256)のスプライトになります。)

    なので、Matrix4x4 m1 = Matrix4x4.Ortho( 0, 256, 256, 0, -0.5f, 0.5f );
    にすれば256*256のキャンパスサイズが丁度Unity単位での2*2のサイズになるはずです。
    *修正
     変換後のスプライトサイズが1*1になるとしていましたが
     -1~1にクリッピングされるため2*2の間違いでした。

    Matrix4x4.Orthoで得られる行列は平行投影変換行列で
    簡単に言うとOrthoで指定した短形領域を上下左右-1~1の正方形にする変換行列です。

    ちなみに、この辺りの行列変換をいい感じにしてくれるクラスとして
    L2DModelMatrixというクラスが用意されているようです。
    GitHubGist

    *私も行列は得意ではないので、間違えていたらごめんなさい。


    naotarosnaka72Tod (Staff)necogane
  • 詳細に調査していただきありがとうございます!!
    大変助かります。
  • 以下のページが参考になりそうだったので、メモ。

    "プロジェクト作成チュートリアル - Live2D Cubism Documents":http://sites.cybernoids.jp/cubism/sdk_tutorial/platform-setting/directx/createproject

    "モデルのローカル座標について - Live2D Cubism Documents":http://sites.cybernoids.jp/cubism/sdk_tutorial/live2d_library/load_to_display/display_model/local
コメントするにはサインインまたは登録して下さい。