本質を簡単に説明してください:
- 記事には骨格アニメーションはありません(最初の文では、著者は「これは本当の骨のアニメーションではありません」と述べています)
- 10フレームアニメーションのデータはポイントの配列です
- ポイント自体、著者は、カーソルからカーソルを合わせて座標を書き出すことで、人の歩容を記録から収集します。 彼は、時間をかけて均等に分配された10個のフレームを使用しました。
- クリップを再生する過程で、補間を使用してアニメーションが平滑化されます
- 記事の最後で、著者は実験を続けることを提案しています。
- 補間のあるフレームの代わりに時間ベースのアニメーションを使用する
- 独自のアクション(ジャンプ、実行など)を記録し、アクション間のスムーズな移行を試みます
- 影を追加する
- スケルトンを追加して、ラグドールを人生のように死にかけます
- フォーラムの購読解除
このメソッドに私を惹きつけたもの:
- 3Dモデリングに深く入り込まない能力-3Dモデラーに任せましょう
- 3Dをフラッシュに移行する問題を掘り下げる機会はありません-私にとって小さなプロジェクトの場合、これは役に立ちません
- キャラクターのさまざまなアクションを取得する非常に簡単な方法
*面白い場合は、新しい動き、キャラクターをハブに追加する方法を詳しく書き留めます。
次:
私が最初にしたことは、アニメーションを時間ベースに変換することです(ここでは何も複雑ではありません)。
public function update(time:Number):void { render(currentFrame); currentFrame+=(actionArray.length*time/actionLoopTime); currentFrame = int(currentFrame*100)/100; if(currentFrame>actionFrameNumber) { currentFrame-=actionFrameNumber; } }
しかし、その後、メソッドに没頭する過程で、画面上のNPCキャラクターの群衆を多様化する少なくとも1つの魅力的な(私にとって)機会があることに気付きました。 結局のところ、必要な方法でキーフレームの最初の「スケルトン」をわずかに変形し、図形やキャラクターのオプションを無限に取得するだけで十分です。
例(コードはMain.handleGUIChangeのソースコードで見ることができます-ここに本質を示します):
- 足と腕を短くする( scale * point.y; scale * point.z; )-ノームを取得する
- 腕と脚を伸ばします( scale * point.y; scale * point.z; )-Uncle Styopaを取得します
- 腰と腰を締めます( scale * point.x; )-男性的な女性を取得します
- 狭い肩と広い腰( scale * point.x; )- 男らしさを得る
- 体を傾け、膝を曲げる-ダッキングソルジャー
- 体を傾け、膝を曲げ、関節を震わせます-老人
- 腕、足の波の振幅を変更する-新しい気分を得る
これはすべて、キーフレームの1つのシーケンスのみに基づいています(!)
膝の上に組み立てられた実例がここにあります
サンプルコードはこちら
備考:
- 使用されたオーサラルアニメーション(Jochen Diehl)
- 私の例の仕事の勾配は事前に組み立てられています-これは数学と特に回転行列で何も理解していないためです。 ある親切な人が、利用可能なデータ(デフォルトの角度、現在の角度、スライダーからのデータ)に基づいて結果の回転行列を正しく計算する方法を教えてくれたら、すぐに作業コードを変更し、図を変更するための他のオプションを追加します
PS:まあ-結果の行列を「勾配」で計算する際の誤差は、度ではなくラジアンを行列に代入することでした。 ドキュメントをよく読んでください!
修正してリロードします。