ログイン
カテゴリ
ディスカッション
アクティビティ
ヘルプ
人気記事...
ホーム
›
Cubism SDK 2.1
UnityでLive2Dモデルを表示した際の拡縮率は?
snaka72
July 2014
で
Cubism SDK 2.1
チュートリアルに従って、Unity上にLive2Dモデルを表示できたのですが、実寸より小さく表示されます。
どの程度縮小されているのでしょうか?(どの程度拡大すれば実寸どおりのサイズになるのでしょうか?)
0
コメント
y_a_s_(Dev Staff)
July 2014
返事が遅れてすみません。
とりあえず確認しますが、従ったチュートリアルというのは、プロジェクト作成チュートリアルのことでしょうか?
0
snaka72
July 2014
返信ありがとうございます。
説明が足りなくてすみません。
以下のページに記載されている手順を参考にしました。
http://sites.cybernoids.jp/cubism/home/special/20140327/session2
上記ページの中で
1.6 再生ボタンを押してシーンを再生
おそらく小さいく表示されるので、「Miku」のScale を(5, 5, 1)にする。
と記載されており、その記載のとおり小さく表示されるのでScaleでサイズを調整しておりますが、そもそも、なぜ作成時より小さく表示されるのか?(Live2Dの仕様なのか? Unityの仕様なのか?)、Scaleの値をどの値に設定したら実寸どおりの表示サイズとなるのか?
というのを教えて頂けないかという質問でした。
Unity勉強中なので見当違いの質問かもしれませんが...
0
snaka72
July 2014
なんとなくわかってきた気がします。
以下のコードで、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)で右下が(幅,高さ)となっていると思わますが、あってるんでしょうか?
0
snaka72
August 2014
やはり上記の箇所がよくわからないのですが、
Matrix4x4 m1 = Matrix4x4.Ortho( 0, 900, 900, 0, -0.5f, 0.5f );
に指定する left, right, top, bottom の値はそれぞれどのような値を設定したら良いのでしょうか?
そもそもLive2D関係無くUnityに関するものかもしれませんが、Unityの関数リファレンス等を参照してもいまいちピンと来ませんでした。
ここで設定する値が、Unity上でLive2Dモデルが表示されるサイズにどのように関わってくるのか、ご存知であればヒントでも教えて頂きたいです。
よろしくお願い致します。
0
W_Yamada
August 2014
編集済: August 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
*私も行列は得意ではないので、間違えていたらごめんなさい。
Ortho.jpg
33.7K
Reverse.jpg
33K
gap.jpg
37.7K
4
snaka72
August 2014
詳細に調査していただきありがとうございます!!
大変助かります。
0
snaka72
August 2014
以下のページが参考になりそうだったので、メモ。
"プロジェクト作成チュートリアル - 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
0
コメントするには
サインイン
または
登録
して下さい。
コメント
とりあえず確認しますが、従ったチュートリアルというのは、プロジェクト作成チュートリアルのことでしょうか?
説明が足りなくてすみません。
以下のページに記載されている手順を参考にしました。
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モデルが表示されるサイズにどのように関わってくるのか、ご存知であればヒントでも教えて頂きたいです。
よろしくお願い致します。
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
*私も行列は得意ではないので、間違えていたらごめんなさい。
大変助かります。
"プロジェクト作成チュートリアル - 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