トップ Tsugiブログ アニメーションのためのサウンドデザイン 後編
アニメーションのためのサウンドデザイン 後編
2024/05/02

アニメーションのためのサウンドデザイン 後編

ブログ前編では、GameSynthにアニメーションカーブをインポートし、アニメーションカーブで1つまたは複数のサウンドパラメーターを制御すれば、モーションにぴったり一致する効果音の作成がいかに簡単かを解説しました。

前編ではGameSynthのParticlesモデルを使いましたが、後編ではパッチ環境であるModularモデルに焦点を当てていきます。130以上の合成、制御、ロジックモジュールを使えば、あらゆるサウンドを設計できるだけでなく、アニメーションカーブを使ってそれらの音の動きをコントロールする事もできます。


カーブを使って音をトリガー

ロジックモジュールは、カーブが特定の値に達した時にイベントをトリガーするのに役立ちます。これは、歩行サイクルやキャラクターのインタラクション、オブジェクトが何かにぶつかった時など、アニメーションに合わせてサウンドのタイミングを正確に測定したい場合に特に便利です。

たとえば、金属の箱が地面に落ちるアニメーションの場合、垂直位置に相当するカーブを使うと、箱が跳ねるときの衝突音をトリガーできます。

  • GameSynthにカーブをインポートし、それによって得られたAutomation Curveモジュールをパッチに追加し、それをCrossingsモジュールに接続します。
  • Crossingsモジュールは、入力信号が特定の値と交差する時にトリガーを発します。ここでは、高さが0.01まで低下するたびにトリガーするように設定します。これは、金属の箱が床に当たることを意味します。

トリガータイミングはカーブから発生するため、生成されるサウンドはアニメーションと完全に同期します。さらに、GameSynthパラメーターの一部にランダムな範囲が割り当てられている場合、(設定した制限内で)毎回わずかに異なる衝撃音が生成されます。これを従来のDAWで行おうとすると、(単一のパッチではない)複数の衝突音を作成したり、アニメーションに合わせてそれらを手動でタイムラインに挿入するといった手間がかかります。


モーションサウンドのカーブ処理

キャラクターの動きには、多くの場合、生データ(=カーブそのもの)よりもカーブの速度を算出して使う方が便利です。

たとえば、以下のパンチのアニメーションでは、キャラクターの前腕の位置カーブ(の速度)を使用して、動きに一致する風切り音を生成しています。

  • 今回は、2つのカーブを各腕それぞれ1つずつインポートしました。
  • パッチには2つの同一ブランチがあり、同じモジュールで構成されていますが、両腕の動きを音で区別するためにNoise Bandsモジュールのパラメーターを左右でわずかに変えています
  • Derivativesモジュールを使用することで、Automation Curveから速度を取得し、その速度でNoise Bandsの振幅とピッチをコントロールしています。
  • Rectifierは速度を正の値に維持するために使用しています。またその後Smoothモジュールを通過させることで、速度に少しの慣性を加えています。


通常アニメーションの作成では、正しい動きが決まるまでに多くの繰り返し作業が必要であり、プロジェクトの途中で要件が変更されることもあります。映像側で動きのタイミングや時間が変化すると、前に作ったサウンドが使えなくなってしまいます。

一方で、GameSynthはアニメーションカーブを使ってサウンド生成を操作するため、サウンドパッチ内のカーブを更新するだけで、新しいアニメーションと完全に一致する音が再合成されます。通常のサウンド編集のように、新たにサウンドを録音したり、既存のサウンドを編集し直すといった必要がありません。



もちろん、同じテクニックを2Dアニメーションにも適用できます。多くの場合、曲線は少なく単純なため、操作がさらに簡単になります。

以下のSprite Studioで作成された槍攻撃アニメーションでは、これまでの例と同様にカーブの速度を使用してモーションサウンドをデザインしています。ただし、曲線がピークに達した時の槍の衝突音を同期するためにカーブの生データも使用しています。

  • 動画では、肩の回転カーブから求めた速度によって、風切り音を生成しています。
  • 槍が振り下ろされる時(つまり、回転速度が負になる時)にのみ、金属の共鳴レイヤーを加えています。
  • 次に、カーブの生の値が最大値に達する時、Crossingsモジュールが衝撃音をトリガーします。
  • 最後に、体のY座標カーブの速度を使って、キャラクターがジャンプしている時にフォーリー音を発生させています。

GameSynth Tool APIを使ってみる

本ブログの冒頭で述べたように、アニメーションカーブをオートメーションデータに変換するほか、様々な機能をとり備えたもう一つの手段として、GameSynth Tool APIがあります。この機能のメリットの1つに、中間ファイルの保存とインポートが必要ないことが挙げられます。アニメーションカーブは、スクリプトをサポートするクリエイティブツールからワンクリックで転送でき、さらにお気に入りのツール用にご自身で独自のスクリプトを作成できます。

たとえば、BlenderプロジェクトやFBXファイルはバイナリデータであるため、インポーターを作成するのが困難です。APIを使うことで、BlenderとGameSynthの間でアニメーションデータを手軽にやりとりするためのPythonスクリプトを作成できるようになりました。

当社独自のBlenderアドオンには、Blender内で選択したFカーブをGameSynthにエクスポートするスクリプトが含まれています。以下は、4種類のアニメーションカーブを使用して、抽象的なBlenderオブジェクトのアニメーションの効果音をデザインした例です。

  • オブジェクトの動きに関しては、Derivativesモジュールを使用して回転カーブとDeform角度カーブから速度を抽出し、それらを使用してパッチ内のさまざまなブランチの振幅を制御しています。
  • Deform角度の生のカーブは、ピッチ、フィードバック、パンなどの他のサウンドパラメーターを調整するためにも使用しています。
  • 最後に、デフォーム(Displace)の強さに対応する4番目のカーブは、別途用意したブランチを操作することで、音にグリッチレイヤーを追加しています。


アニメーションカーブを使用してサウンド生成をコントロールすることで、複雑で抽象的なオブジェクトアニメーションの動きに合う効果音も手軽にデザインできます。こういった作業を従来のサウンドエディタで行うと、それぞれの音を個別に作成し、それら全てをモーションに同期させる必要があるため、非常に面倒な作業になるでしょう。

今回紹介したテクニックは、GameSynthでアニメーションカーブを使用する場合の基本をほぼ押さえています。独自のサウンド合成機能と組み合わせることで、現実的なモーションから抽象的なモーションまで、幅広い動きの音を簡単に生成できます。さらに、インスピレーションが必要な場合は、GameSynth リポジトリで手に入る1000以上のパッチの作例を使って、モーションカーブと連動した設計に組み替えていくのも便利です。



GameSynth




Copyright © Tsugi GK. All rights reserved.