立体音声波形の作り方

この記事では、音声波形の動画の映像から、スクリプトを用いない立体的な音声波形の作る方法を記しています。3つのソフトウェアを使いますけど、難しいことはしないのでがんばりましょう!

全体的な流れ

音声波形動画を作成→ポリゴンを割った立方体をBlenderで作成→シェーダーの作成→unity上で実装

※1.動画編集ソフトはAViUtlを使用

※2.Blenderは日本語対応したもの使用

立体音声波形

立体音声波形

サンプル

記事で紹介しているUnityプロジェクトのダウンロードはこちらからできます。
STYLY_Examplesの中の「rittaionseihakei」というフォルダが今回使用するものです。
STYLY_Unity_Examples

AviUtlで音声波形の動画を作成

(AviUtlでもなく音声波形の動画がつくことができれば大丈夫です。)この時、X264がインストールされていることを確認してください。

音声ファイルと音声波形を挿入

プロジェクトを作成し、画面サイズを指定(ここは動画サイズを抑えるため240×240にしています。)。 その後、音声ファイルをシーンにドラッグ&ドロップします。次に拡張編集上で右クリックからメディアオブジェクトの追加から音声波形を挿入します。

aviutlでの音声波形作成動画1

aviutlでの音声波形作成動画1

音声波形が画面の大きさに合うように拡大率と波形の高さを変更します。

音声波形のサイズ調整

音声波形のサイズ調整

 

動画をエクスポート

x.264から画質を低減してエクスポートします。

Blenderで立体音声波形用の音声波形のオブジェクトを作成

立体的に波形を見るために、キューブのポリゴンを割っていきます。

まず初めに、Shift+aからメッシュを選択し、立方体を作成します。

blender キューブ作成

blender 立方体作成

UV展開

オブジェクトモードから編集モードに変更し、aで全体を選択したのち、ctrl+eからシームを付けるを選択します。

シーム付け

シーム付け

 

UV Editing画面を開き、uでUV展開を行います。

UV展開後にlで面選択し、ツール→UVツール→島を梱包で面を広げます。

UV展開と島の梱包

UV展開と島の梱包

 

細分割曲面modifier

Default画面に戻り、modifiersの細分割曲面modifierを選択します。シンプルを適用後、ビューを6まで引き上げmodifierを適用してポリゴンを割ります。(波形の形を見るために20000以上は割っています。)

細分割曲面でポリゴンを割る

細分割曲面でポリゴンを割る

ポリゴンが細分化されていることを確認できたら.FBXでエクスポートしてください。

Unityでシェーダを作成

shader forgeをインポートし(こちらから入手できます→https://github.com/FreyaHolmer/ShaderForge)、テクスチャの色によって頂点の位置が変化するシェーダを以下のように作成します。  

立体音声波形用のシェーダー

立体音声波形用のシェーダー

サンプルプロジェクトにシェーダも同梱しているので、そちらを使用していただいても良いです。

立体音声波形を作成

いよいよunityのシーン上で立体音声波形を作成していきます。

下準備

作成した音声波形の動画と立方体のオブジェクトをインポートし、Unlit/Textureのシェーダーを適用したマテリアルを作成しておきます。

次に音声波形表示用のQuadをシーンに入れます。その後、QuadのAdd componentからVideo Playerを追加し、作成した動画をVideo Clipに適用します。

QuadにVideo playerを追加

QuadにVideo playerを追加

GameObjectを作成しAdd componentからAudio Sourceを選択します。GameObjectをQuadの子にした後、QuadのVideo PlayerのAudio SourceにGameObjectを追加します。(動画の音を聞こえるようにするため)

audio sorceの追加

動画の音を聞こえるようにする

音声波形の動画がライティングの影響を受けないようにするために、Unlit/Textureのシェーダーを適用したマテリアルをQuadに適用します。

unlitシェーダーを適用

unlitシェーダーを適用

cameraを追加し、Quadが映るように移動させます。その後、Clear FlagsをSolid Colorに変更し、Backgroundの色を黒にします。(sky boxの色を拾わないようにするため)

cameraの設定

cameraの設定

立体音声波形用のRender Textureを作成

project内にRender Textureを作成して、カメラのTarget Textureにアタッチします。RenderTextureのサイズは720×720にします(サイズは小さすぎなければどの大きさでもいいです)。  

Render Textureをカメラに適用

Render Textureをカメラに適用

立体音声波形を作成

立体音声波形用のマテリアルを作成しshader forgeで作成したシェーダを適用する。そのマテリアルを作成した立方体のオブジェクトに適用します。

立体音声波形用のキューブに立体音声波形用のシェーダーを適用

 

その後、マテリアルのinsupecterにRender Textureを追加する。

マテリアルにRender Textureの適用

マテリアルにRender Textureの適用

以上により立体音声波形が出来上がります。お疲れさまでした。

大変だったかと思いますが、これにより映像の自由度、オブジェクトの自由度が確保されるので、様々な形の立体音声波形を作成できます。