■ノウハウ公開
こういう技術的な話は秘密にした方がいいのか、公開した方が良いのか、という問題はある。ただ、「こういう技術使ったゲームが一杯やりたい/見たい」という気持ちの方が強いのと、「知ったところで作ることができるかは別」という話になるので、ミームとして広がることを優先。
というか、しばらくしたら似たようなの出るかと思ったけど、意外と出なさそうだしって感じで。
その前に、打ち付けモーション自体はアニメーションのノウハウとして昔からあるし、ゲームで表現したのもうち(ミナーヴァ)が最初ではないので、まあいいかなーと。
ミナーヴァのあの動きをよく見れば、すぐ分かる内容。
■打ち付けモーフアニメ
まず、この造語は「肉や豆腐を打ち付けたときに見られる波打ち」をイメージしたモーションとして書いている。要するにピストン時の受け側の尻や体の動きを示す。
その大体の動きを簡潔にすると下図となる。
1.立ち絵とかパーツとかなんでもOK
2.まず進行方向へ加速度運動(厳密には初速度+戻し加速)
3.当たった=速度が0になった頃合いで横に広がる
4.戻す
本来は図の右下のように歪ませるのが理想。AE/Live2D/3D/SpriteManager/Spine…などなど、技術があればもっと厳密にしても良い。
ただ、中途半端にAE/Spineで作ると、難易度が跳ね上がる上に「極めて上手く作らないと」逆に微妙になる危険性もある。
そういう意味では、いにしえのFlashアニメで見られた打ち付けモーションは参考になる。
例はミナーヴァのPVでやってるので、それを見てもらえれば分かる。(動画の1:00あたりから)
■打ち付けモーフアニメのモデル式
3Dであれ、2Dであれ、人間であれ異種間であれ、動きを分解すると基本はこの動きとなる。下図は模式図。
この「速度曲線」はアニメーションの基礎としても存在しており、AE/Live2D/3Dにも応用できる。
上:単なる二次関数ではなく、初速度で一気に上げて、ゆっくり加速度で戻すイメージ。
プログラムは図の式そのままで行ける。
AEや3D(Blender/Unityなど)でも、速度曲線を弄る箇所がある。
下:直線的。最近はUnityなどでも曲線近似してくれることが多いが、デフォルトそのままではメリハリが減って残念モーションとなる。
ポイント:
・等速運動させない:なめらかにしすぎるとメリハリが無くなり、違和感が増す。あとエロくない
細かく言うと筋肉の仕組みなどに関わるが、えびも専門家ではないので割愛。
・最初は早く、戻しは遅く:これはAVや実際の動きをしてみれば分かるかと。
速度曲線(図のようなグラフ)が線対称な動き(ゆっくり加速してゆっくり戻る)とかもなんだかよろしくない。
■なぜ立ち絵で?
ところで、なぜ立ち絵モーションかというと…。
1.意識がリセットされず、臨場感が維持される。
CGなどはインパクトがすごいが、意識がいちいちリセットされてしまう。(差分による演出も効果はあるが。)
その場でエロが始まるというのは3Dゲーム(Skyrim+エロMOD)のように臨場感をアップさせる。
もちろんこれは個人の好みではあるが、意識リセット挟まない方が良いというのは大体当てはまると思う。
2.高度なアニメーション技術が無い場合にエロさ/臨場感を最大に引き立てる方法
技術の注力度よりも、実際にエロいか/臨場感があるかがユーザには重要。
(「血反吐吐いたけど、モーションがダメだった」というのは、別に許されたりしない。)
もちろん技術があれば、注力するほどにより良くなる(AE等)が、その領域はかなり高いレベルとなる。
手書きアニメやAEを駆使したアニメーションなどが、その良い例となる。
ちなみに、背景のないCGや、大きめの絵でのモーフモーション(ミナーヴァ)など、中庸的な方法はある。
今後ツールの発展と共にモーフアニメを使った作品は増えると思われる。
ぶっちゃけ、CGでアニメーションさせてもいい。立ち絵は個人的な好みと言える(そのまま行為に移れるわけだし)
CGをアニメーションさせる場合は、AEやLive2D、Spineなどのノウハウ・ハウツーの方が有用と思われる。
■実践編:動きのモデル化
上で書いたとおり、手書きアニメやAEはそれぞれ技術が必要。
下図のように、理想①まで用意するのは大変なので、②のように上下運動と左右幅変更に落とし込む。
逆に言えば、1つ1つを丁寧に作るならAEなどの方が向いているとも言える。得意分野と相談して作るのがよろし。
ちなみにAEやSpineなども、基本は上で書いたとおり速度曲線を弄ったりして調整している。
あっちはパーツ単位や領域単位で行うため、より詳細なモーション作りには必須。
■実践編:動きの分解
さきほど書いたとおり、縦運動と横幅変化を用いる。図のように、上下の動きと、左右(幅)の拡大縮小とに分けられる。
初速度+戻しの加速度という意味では、基本的な速度計算式と全く同じである。
上下:最初に書いたとおり、y(t+1)=y(t)+v(t), v(t)=v0-at でOK(プラスマイナスは座標系によって調整)
tは時間だが、ゲームならフレーム。
v0は初速度。大きめが理想。
-aは加速度。初速度と逆方向にかける
幅:これも倍率を同じように変化させればよい。すぐ破綻するので、1.2倍までで調整するのが良い。
zoom(t+1)=zoom(t)+deltaz(t), deltaz(t)=deltaz0-bt
tは上のy(t)のtと同じ。
変化の最大量が大体においてv(t)>deltaz(t)となるので、「実践編:タイミングの見極め」で述べるとおり、初速度を与えるのは若干後の方にずらす。
プログラムではdzと書いていたが、"dz"と書くと微分と紛らわしいのでdeltazとかにした。
戻りきったら0にしているが、徐々に収束するようにすればしばらくたゆんたゆんとさせることも理論上可能。
(振り子のような原理)
スライムや肉袋、乳房などの表現には使えるかも知れない。
■実践編:タイミングの見極め
もう一つ重要なのは、「横幅を膨らませるタイミング」となる。
ここら辺は大体で良いが、強いて言えば「頂点(速度0となる地点)に、横幅が最大となるタイミング」だろうか。(下図)
要するに「打ち付けた瞬間にヨコに広がる」ことを表現出来れば良い。
上下y(t)の頂点ちょっとすぎた辺りが左右拡大zoom(t)最大というのが理想だろうか。
破綻を防ぐため、拡大は最大値が小さい傾向になる。そのため、上の図くらいのタイミングが良くなる。
■応用編:横方向や斜めは?
横や斜めの時は、単純にその方向に揺らせばOK。サイズ変更はメッシュ変形が難しいなら縦横の拡大縮小でも十分それっぽくなる。
■応用編:パーツ分け
パーツはレイヤーに分けて、本体の値(y(t),zoom(t))にパーツ用の値(y2(t),zoom2(t)とか)を足す。この概念はSpineとか3Dのボーンの構造と同じ(=ヒエラルキー=子ボーンは親ボーンの動きに追随する)。
ミナーヴァなどは同一サイズでレイヤー分けしているが、手を加えれば小さい画像にして個別対処する方法もある。(そこまでやるならAEとかの方が…という気もするが)
■その他
・胸は大げさに動かす
おっぱい!は小さく動かしても分かりづらい。大げさに動かして良し。ただしやり過ぎると破綻するので、パーツ(レイヤー)の切り取り方、色の使い方は吟味すべし。
色の境目がオカシイと気になるので、アニメ塗りなどベタっぽい表現と相性が良い。
厚塗りなどの場合はAEなどのメッシュ変形が優位か。
・ゴールではなく一つの手法
完全無欠な方法というわけではなく、あくまで個人で出来る手法の一つ。もっと技術やリソースがあるなら、更に上のものを目指せるはず。
逆に、もっと効率が良く、かつエロい表現方法が有るかも知れない。これが到達点ではなく、さらに発展させるのがベターと言える。
こうして公開した情報はその瞬間から過去のもの(陳腐化したもの)になっていくため、これを礎により良いものとしてもらいたいところ。
・用途に合わせたツール選択
実際の所、これ自体は立ち絵切り替えだけより数倍大変なのは変わらない。筆者はACT/RPG/ARPGあたりは立ち絵レベルなら合いそうだと思うが、フルサイズCGのアニメモーションを入れるなら、RPGにはオーバースペックという感想もあった。
すなわち、フルサイズならADVや動画作品などとして、AEなどを駆使してがっつりやる方が良いというもの。
RPGなど、ゲーム部分の存在は必ずしも有効とは限らない考えと言える。
(当然多めの資源と時間があれば組み込んで、ハイクオリティ先駆者となる戦略もあり得る。)
また、ACTなどでキャラクタの絵自体をAEやSpriteStudioでメッシュモーフさせている場合もある。その場合は立ち絵も必ずしも必須では無いので、リソースとの兼ね合いは常に気にした方が良いと思う。
(インディーなので、やり遂げる自信があれば最高を目指すのは自由。)
0 件のコメント:
コメントを投稿