この記事では、音声波形の動画の映像から、スクリプトを用いない立体的な音声波形の作る方法を記しています。3つのソフトウェアを使いますけど、難しいことはしないのでがんばりましょう!
全体的な流れ
音声波形動画を作成→ポリゴンを割った立方体をBlenderで作成→シェーダーの作成→unity上で実装
※1.動画編集ソフトはAViUtlを使用
※2.Blenderは日本語対応したもの使用
サンプル
記事で紹介しているUnityプロジェクトのダウンロードはこちらからできます。
STYLY_Examplesの中の「rittaionseihakei」というフォルダが今回使用するものです。
STYLY_Unity_Examples
AviUtlで音声波形の動画を作成
(AviUtlでもなく音声波形の動画がつくことができれば大丈夫です。)この時、X264がインストールされていることを確認してください。
音声ファイルと音声波形を挿入
プロジェクトを作成し、画面サイズを指定(ここは動画サイズを抑えるため240×240にしています。)。 その後、音声ファイルをシーンにドラッグ&ドロップします。次に拡張編集上で右クリックからメディアオブジェクトの追加から音声波形を挿入します。
音声波形が画面の大きさに合うように拡大率と波形の高さを変更します。
動画をエクスポート
x.264から画質を低減してエクスポートします。
Blenderで立体音声波形用の音声波形のオブジェクトを作成
立体的に波形を見るために、キューブのポリゴンを割っていきます。
まず初めに、Shift+aからメッシュを選択し、立方体を作成します。
UV展開
オブジェクトモードから編集モードに変更し、aで全体を選択したのち、ctrl+eからシームを付けるを選択します。
UV Editing画面を開き、uでUV展開を行います。
UV展開後にlで面選択し、ツール→UVツール→島を梱包で面を広げます。
細分割曲面modifier
Default画面に戻り、modifiersの細分割曲面modifierを選択します。シンプルを適用後、ビューを6まで引き上げmodifierを適用してポリゴンを割ります。(波形の形を見るために20000以上は割っています。)
Unityでシェーダを作成
shader forgeをインポートし(こちらから入手できます→https://github.com/FreyaHolmer/ShaderForge)、テクスチャの色によって頂点の位置が変化するシェーダを以下のように作成します。
サンプルプロジェクトにシェーダも同梱しているので、そちらを使用していただいても良いです。
立体音声波形を作成
いよいよunityのシーン上で立体音声波形を作成していきます。
下準備
作成した音声波形の動画と立方体のオブジェクトをインポートし、Unlit/Textureのシェーダーを適用したマテリアルを作成しておきます。
次に音声波形表示用のQuadをシーンに入れます。その後、QuadのAdd componentからVideo Playerを追加し、作成した動画をVideo Clipに適用します。
GameObjectを作成しAdd componentからAudio Sourceを選択します。GameObjectをQuadの子にした後、QuadのVideo PlayerのAudio SourceにGameObjectを追加します。(動画の音を聞こえるようにするため)
音声波形の動画がライティングの影響を受けないようにするために、Unlit/Textureのシェーダーを適用したマテリアルをQuadに適用します。
cameraを追加し、Quadが映るように移動させます。その後、Clear FlagsをSolid Colorに変更し、Backgroundの色を黒にします。(sky boxの色を拾わないようにするため)
立体音声波形用のRender Textureを作成
project内にRender Textureを作成して、カメラのTarget Textureにアタッチします。RenderTextureのサイズは720×720にします(サイズは小さすぎなければどの大きさでもいいです)。
立体音声波形を作成
立体音声波形用のマテリアルを作成しshader forgeで作成したシェーダを適用する。そのマテリアルを作成した立方体のオブジェクトに適用します。
その後、マテリアルのinsupecterにRender Textureを追加する。
大変だったかと思いますが、これにより映像の自由度、オブジェクトの自由度が確保されるので、様々な形の立体音声波形を作成できます。