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

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

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

CubismSDKとARkit(iOS)での問題について

こんにちは
CubismSDK2.1とiOSのARkitを仕様してVtuber向けのアプリを開発しております。
お客様より顔の傾きに応じて、カラダの傾きも追従してほしいとの依頼があったため、パラメータPARAM_ANGLE_ZとともにPARAM_BODY_ANGLE_Zの値も変更したのですが、この動きでは顔の傾きに対して
カラダが傾くスピードが早いと指摘されたので、カラダの傾くスピードをもう少しゆっくりできないかと思っております。
様々なドキュメント類を確認しましたが、解決に至っておりません。
お力添えをいただければ幸いです。
現在のアプリでの動きがわかるよう動画を撮影しましたので、ご覧くださいませ。
https://drive.google.com/open?id=1yau_ofFEhkxCIwFQEOAAudht6ZdvHcmw
以上、よろしくお願いいたします。

コメント

  • @daisuke_hanano

    「カラダが傾くスピード」とは、顔の傾きに対する体の変化量のことでしょうか?
    それとも顔が傾くタイミングから遅延させる時間のことでしょうか?
  • 編集済: 10月 2018
    @y_a_s_(Dev Staff)

    「カラダが傾くスピード」とは、顔の傾きに対する体の変化量のことでしょうか?
    →こちらの方なのですが、iOSのホロライブというアプリをご覧になるとわかりやすいと言われています。
    PARAM_BODY_ANGLE_Zの値を例えば0→10にした時に10に達するまでの時間をゆっくりにしたいということです。
    今の動きだと顔の向きとほぼリアルタイムに体が傾くのでホロライブとは程遠いと指摘された次第です。
    以上、よろしくお願いいたします。
  • @y_a_s_(Dev Staff)
    本件、いかがでしょうか。
    いつぐらいのご回答になりそうでしょうか。
  • @daisuke_hanano

    回答が遅れてしまい申し訳ありません。

    顔の傾きの値を直接パラメータに設定するのではなく、取得した値にイージングをかけてから設定すれば、同様な動作になるかと思われます。

    Cubism2 SDKでは、付属のフレームワークの「L2DTargetPoint」というクラスで簡易的なイージングを行っておりますので、こちらを利用していただくことでも実装することができます。
    L2DTargetPointは、SDK同梱のサンプルプロジェクト「SampleApp1」のLAppModel::update()で扱っておりますので、詳細につきましてはこちらをご参照ください。
  • @y_a_s_(Dev Staff)
    ご回答ありがとうございます。
    今のARkitを使用したプログラムには流用できなかったので、顔が傾くタイミングから体を傾ける時間を遅延させるにはどうすればよろしいでしょうか。

    ご教示のほどよろしくお願いいたします。
  • 編集済: 10月 2018
    @daisuke_hanano
    誠に申し訳ありませんが、サードパーティとの連携や、設定する値の加工方法につきましてはお答えいたしかねます。

    L2DTargetPointの使い方ですが、パラメータへ適用する値は取得できていると思われますので、
    値をL2DTargetPoint::set()の第1引数に渡し、L2DTargetPoint::update()を呼ぶとイージングした値が計算されます。
    L2DTargetPoint::set()の第2引数は0を設定してください。
    イージングされた値は、L2DTargetPoint::getX()で取得できます。
    取得される値は-1~+1となっておりますので、パラメータの最大値に合うよう乗算してください。
    この値を適用する場合、ALivev2DModel::setParamFloat()ではなく、ALivev2DModel::addToParamFloat()を使用すると、より自然な動きになるかと思われます。

    L2DTargetPointを使用しない場合、検索していただければイージングの計算式を解説しているページを見つけられますので、そちらを参照してください。
    https://www.google.co.jp/search?q=イージング+計算式&oq=イージング+計算式&aqs=chrome..69i57j69i61.8180j0j7&sourceid=chrome&ie=UTF-8
コメントするにはサインインまたは登録して下さい。