Eclair
1
.can3 モーションファイルを修正するとき、モーションのすべてのキーフレームをつかんでストレッチできますか?
こんにちは。 いつもお世話になっております。
私のグラフィックワーカーと最近 unityゲームでの live2d キャラクター移植作業をしています。
しかし、unityでアニメーターコンポーネントを介してキャラクターモーションを再生すると、live2dエディタで見たときよりもモーションが少し早く再生されます。
(unityのFPSとlive2dモデルのFPSの両方を60に等しく設定しました。)
弓道策でモーションのすべてのフレームキーをつかみ、少し長くストレッチしたいです。
全体の動きの時間を少し増やすことです。
しかし、live2d エディタでフレームキーをストレッチできませんでした。
ctrl + Aキーを押してすべてのフレームキーを「選択」状態にした後、altを押してもctrlを押してもshiftを押してもストレッチは達成できませんでした。
いつもお世話になっておりますので、お知らせいただきありがとうございます。
暖かい2月になりますように。
いつも弊社製品をご愛顧くださり誠にありがとうございます。
>unityでアニメーターコンポーネントを介してキャラクターモーションを再生すると、live2dエディタで見たときよりもモーションが少し早く再生されます。
この点について詳しくお調べしたいため、以下のことを教えてください。
・お使いの環境を教えてください
【Cubism Editorのバージョン】(例:Cubism Editor 4.1.01 )
【OS名・バージョン】(例:Windows11、macOS BigSur 11.5 )
【機種名】(例:MacBookPro 2017 )
【CPU】(例:Core i7-9750H )
【グラフィックボード】(例:GeForce RTX 3070 )
【メモリ】(例:8GB )
【原画制作ソフトウェア】(例:Photoshop ver22.3 )
・モーションが少し早く再生される現象は、
公式サンプルモデルでも発生しますか?オリジナルのモデルでのみ発生しますか?
オリジナルのモデルでのみ発生する場合はデータを送ってください
・Viewer for OWとUnityそれぞれで再生した速度は同じになりますか?
それらを比較し、同時にキャプチャした動画を送ってください
データはこちらのページにアップロードしてください。
お手数をおかけし申し訳ありませんが、
何卒宜しくお願いいたします。
Eclair
3
こんにちは。 返信ありがとうございます。
モーションが早く再生される部分については、私たちの作品ワークのフェード部分に関する問題がありました。
この問題について私たちが不十分に解決した内容を送付いたします。
この問題は、Viewer for OWビューアでは発生せず、Unityでのみ発生する問題でした。
(fademotionlistの接続など抜かずに処理しましたが、当方の問題があるのか)
パーツが変わる瞬間に連結動作が出ず、フレームが切れて突然パーツが変わるように出ました。
当該問題の作業映像キャプチャ本には、当社の著作作品に関する内容が含まれており、アップロードできないことをご了承ください。
スクリーンショットのアニメーターステートから出入りするトランジションポイントはすべて
Has Exit Timeチェックがtrueでなければならない点が問題でした。
入って来る切替点のうち、Has Exit Timeチェックがfalseでなければならない切替点もあり(トリガー切替使用などで)
起動時にHas Exit Timeチェック処理をオン/オフすることでfade部分の接続処理を解決できました。
public class Edit_AnimatorTranslatorBase : MonoBehaviour
{
public AnimatorController controller;
private void Start()
{
AnimatorController k = controller as AnimatorController;
AnimatorControllerLayer[] layers = k.layers;
foreach (AnimatorControllerLayer i in layers)
{
AnimatorStateMachine q = i.stateMachine;
ChildAnimatorState[] statesRecursive = q.states;
for (int w = 0; w < statesRecursive.Length; w++)
{
for (int j = 0; j < statesRecursive[w].state.transitions.Length; j++)
{
if (statesRecursive[w].state.transitions[j].hasExitTime == false)
{
statesRecursive[w].state.transitions[j].hasExitTime = true;
statesRecursive[w].state.transitions[j].hasExitTime = false;
}
}
}
}
}
不十分な処理ですが、もし新たな必要と推測できる地点があるか返信いたします。
もしあなたが大丈夫なら、live2dプログラムでモーションのすべてのキーフレームをキャッチしてストレッチする方法を教えてください。
どうぞお世話になっておりますのでお知らせいただきありがとうございます。
@Eclair 様
Unityのアニメーションコントローラーでは、Transition Durationの値が0の場合、現在のアニメーションから次のアニメーションへ切り替わる際にブレンドされません。
詳細につきましてはUnity公式のドキュメントをご覧ください。
また、Cubismにはアニメーション間のブレンドを独自にカスタマイズしております。
もしCubismのブレンド機能を利用す場合は以下をご覧ください。
よろしくお願いいたします。
重ねて返信失礼いたします。
エディタ上でモーションのすべてのキーをまとめて伸ばす方法は、
アニメーションを編集時にタイムラインパレットをグラフエディタにした状態で
Ctrl+Aですべてのキーを選択すると赤いバウンディングボックスが出ます。
バウンディングボックスをつかんで変形すると調整が可能です。
お手数をおかけしますが、何卒宜しくお願いいたします。