結局大学でやってた授業が役に立つ日がきちまった

kataho2006-05-12

バカにしててごめんなさい。ちゃんと出席しておけばよかったです。ものすごく後悔してます。まぁこれからは3Dの時代ですよやっぱりね。
後ろと前の2種類のビットマップアニメを描けとかはやっぱり無理がありすぎましたね。例の韓国の会社くらいなものですよ、そんなものを次々とつくっていけるのは。3Dにすれば敵の種類を増やすのとかも楽ちんになるのじゃないかと思っているので(実際どうなんでしょうかね)メタセコのファイルを直読みするルーチンとメタセコにボーンアニメをくっつけるソフトであるところのmikotoファイルを読み込んでmikotoがやってるスフィリカルデフォームとかいうのを再現してやって3Dの資源をのっけていく準備は万端です。
mikotoのエミュレートは本当にきつかった。なにやら公開とか開発も止まっているようだし、ファイルのクォータニオンが一体何を表すのか、そこの解析からやらなくてはならなかったし。
あとIKくっつけて間接を操作できるようにしたらまんまmikotoになっちゃうくらいのところまできました。なんかmikoto自体動作不安定なのでもしも作業に支障をきたすなら自分でエディタをつくるかもしれない。mikoto。開発もとまってるしアプリケーション自体も微妙なのにもかかわらず、それでも惹かれるのはやっぱりボーン構造もスキンへの影響度もメタセコイアの方でいじれるというすごく胡散臭い(いい意味で)仕様なんだよね。
…なんか久しぶりに日記かいたのでものすごく支離滅裂になってるな。

3Dモデルのアニメーションというのは、アニメーションキーと呼ばれる、ある時間に間接がどの方向にどの角度まがってるかという細切れになったスナップショットの一つ一つの間を実行時に補間して表示して再現している。直でモーションキャプチャしたようなのは違うのだろうけれど、人間が3Dモデルの手足をひねってくっつけるモーションとかデータ量を少なくリファインしたものはこういうデータだ。なので補間の仕方によって同一のデータを使っていても微妙に動きそのものから受ける印象がかわってくる。よくあるのがギクシャクとキーがある時間にぴったり止まって別の回転を始めるロボットみたいな動きをするものだが、単なる線形補間(Slerp)を使っているからこのようになってしまう。xファイルを出来合いのDirectXのinterpolatorを使って再生するとこういうふうな補間しかできないのかな?そういえばそもそもxファイルのアニメデータはマトリクスではいってたような気がするが、調べてないからわからない。というかDirectXのボーンアニメ周辺のインターフェイスがあまりに意味不明で心許ない感じだったので独自実装したのであった。もうちょいと動きを滑らかにする補間方法にSquadというのがある。予めキーの先を見て制御点をつくったり、実際の補間処理にはSlerpを3回呼ばなくてはならなかったりと、結構重そうな印象。そこで風呂に入っていたときに思いついたのが例のロジスティック曲線 id:kataho:20060318 を利用する方法だ。結局のところ、人間の動作を補間するのならゆっくり動作がはじまってゆっくりと目的の位置にたどり着くだけでそれなりの見栄えになるんじゃないだろうかと考えたのだ。結果どうなのかはデモをつくったのでいじってみて自分の目で御確認ください。
http://az1049.hp.infoseek.co.jp/misc/animdemo.zip