0

ビデオ ゲームのアニメーション ファイルをリバース エンジニアリングしていて、レンガの壁にぶつかりました。アニメーション セットは次のように構成されています。

各アニメーション セット:

  • アニメーション セット名: アタック
  • 骨の数: 22
  • 期間: 1.03333

続いて、セット内の各ボーンに対して:

  • 骨の名前: 骨盤
  • ボーン ID: 0
  • キー間隔: 0.0333333
  • キー: 31

そして、次のデータは 7 つのチャネル (Position[x,y,z]およびRotation quaternion[x,y,z,w])に分割されます。

Position[x,y,z] は、定数または元の値のいずれかであり、ここでは問題ありません。

しかし、Rotation quaternion[x,y,z,w] チャネルは、N セグメントと N 係数を持つスプラインとして解釈され、スプラインを 3D プログラムに打ち込めるデータに評価する方法を正確に理解するのに苦労しています。

各チャネルのスプラインが Y としてプロットされ、X が正規化された時間 (0 から 1) に等しいことを知っています。

このQ + A(多項式係数の評価)は、私が必要としているもののようです:

係数 a0、a1、a2、a3........an を持つ次数 n の多項式は次の関数です。

p(x)= a0+a1*x+a2*x^2+a3*x^3+.....+an*x^n

そしてPythonコードとして書かれています:

def poly(lst, x): 
  n, tmp = 0, 0
  for a in lst:
    tmp = tmp + (a * (x**n))
    n += 1

  return tmp

しかしlst、各セグメントの係数を とx = Duration / Keys.

最初のアニメーション セットの「Rot.x」チャネルとそのセグメントと係数は次のとおりです。

セグメント = 3

セグメント 1

  • 係数1: 0.0198117
  • 係数2: 0.00826611
  • 係数3: 0.0521381
  • Coeff4: -0.00210184

セグメント 2

  • Coeff1: -0.181324
  • 係数2: 1.09073
  • Coeff3: -1.77627
  • 係数4: 0.920407

セグメント 3

  • Coeff1: -0.0335189
  • 係数2: 0.265863
  • Coeff3: -0.359457
  • 係数4: 0.147228

私がこれを見ている方法は、各セグメントが持続時間の 1/3 (1.03333) であり、さらに各セグメントの係数がキーの数の 1/3 (31) で評価されることですが、上記のpoly(lst, x)関数を使用した出力為に

  • セグメント 1 = 0.019 ~ 4.90 ~ -7.15
  • セグメント 2 = -0.18 ~ 20985.41
  • セグメント 3 = -0.03 から 3296.11 まで

出力が高すぎるため、明らかに私は何か間違ったことをしています。

どんな助けでも大歓迎です!

4

0 に答える 0