視線追従うまく動きません

こんにちは。
チュートリアルの記事に従って(http://docs.live2d.com/cubism-sdk-tutorials/lookat/)視線追従実現したいですがうまくいきません、キャラが左上向いてマウスドラックしても視線動きませんでした。どこが間違えたのか検査しても発見できませんので、ご教示いただけれ助かります。




プラットフォーム:unity2017.3.0f3
OS:windows10
live2D バージョン:3.1.02

よろしくお願いいたします。ありがとうございます。
Tagged:

コメント

  • こちらでもチュートリアルをみながら試してみました。

    おそらく、CenterにしているnoselineがCubism SDKが
    期待しているものと違うのではないかと思います。

    弊社ではCanvasを一つ生成して、それをCenterに設定しました。
    これで僅かに顔が動くようになりました。

    次に、PARAM_ANGLE_X/PARAM_ANGLE_Yの
    Cubism Look ParameterのFacterを30から300に変えると
    より大きく顔が動くようになりました。

    次に、PARAM_EYE_BALL_X/PARAM_EYE_BALL_Yの
    Cubism Look ParameterのFacterを1から10に変えると
    より目が動くようになりました。

    これでもまだ見ている点が合っていない感じです。
    パラメータを調整すれば合うのかもしれませんが、
    座標系が異なっているような気がしないでもないです。

    解決には至らず申し訳ありませんが、
    何か力になればと思います。
  • @ふふまる様

    2点ご確認いただければとおもいます。

    CubismLookControllerのCenterにnoselineというオブジェクトを指定しているようにお見受けしましたが
    hierarchyウインドウ上の階層、Transformのpositionをお教えいただいてよろしいでしょうか?

    またCubismLookTarget のGetPositionのメソッドの計算式がサンプルと正しいかご確認いただけますでしょうか?
    *2が抜けると報告と似たような挙動を示す場合がありそうです。

    よろしくお願いいたします。
  • edited 02/02
    @ganessa 様  @k_komine
    ご解答ありがとうございます。出来ればCubism Look ParameterのFacter値を変更せずに解決したいです。(Facterの値はモデルと同じく顔のXYは-30~30ので30、そして目玉のXYは-1~1ので1)

    hierarchyではnoselineのpositionは以下となります:


    そして以下は該当unityプロジェクトとなります:
    http://firestorage.jp/download/c3b377d9f226efddae1516e857c337f85312bb8a

    現状ではキャラが左向きは一定程度で可能でしたが、右と上下は無理の様子になります、どこが間違ってるのか手掛かりありませんでした。

    ご多忙のところ恐れ入ります、よろしくお願いいたします。
  • @ふふまる様

    プロジェクトファイル拝見させていただきました。
    CubismLookControllerでの演算では見えている点ではなくTrasformの位置情報をもとにするため
    MeshオブジェクトをCenterに指定しても、MeshのTrasformはXY上原点のままなので、
    想定通りの動作になりません。

    もし動く鼻の位置にこだわって制御したい場合は
    Live2DSDKのSampleにありますRaycastingをご参考にしていただければと思います。

    単純に大体の顔の位置を中央にして制御する場合は、
    Hierarchy上のSence(該当プロジェクトでは1という表記になっていました)を選択した状態で
    GameObject>Create Empty で空のGameObjectを作成していただき、
    大体の顔の位置に合わせた後にHierarchy上でモデルの子オブジェクトに挿入することによって
    相対位置にTrasformの情報が書き換えられるので
    そのオブジェクトをCenterに指定していただくと想定通りの動作にできます。

    よろしくお願いいたします。
  • @k_komine 様
    ご指示のとうり正常に顔を動かせました。本当にありがとうございます。
    要するに、「キャラの顔や視線を追従させたい場合、顔の中心ではなく、ゲーム画面の中心をlook controllerのcenterとして指定する」という認識で正確なのでしょうか。
    お忙しいところお返事頂いて誠にありがとうございます。
  • @ふふまる様

    視線追従の制御部分、CubismLookController.LastUpDate()の中の171行目

    GoalPosition = transform.InverseTransformPoint(target.GetPosition()) - Center.localPosition;

    とあり、位置情報をもとに制御をおこなう仕組みでありますが
    target.GetPosition()ではマウスから疑似的に位置情報を算出する簡易的な方法をとっております。
    つまり、チュートリアル()でのCenterのTransform指定は画面の中央を(0,0)とした-1~1範囲の割合を表記する形になります。

    よろしくお願いいたします。

  • k_komine 様
    勉強になりました。ご返答ありがとうございました。
Sign In or Register to comment.