【6月】製作コンテンツ
はじめに
4月からスタートしたコンテンツ製作の第3弾。
「1年後には手元に12種類のコンテンツがある」を目標に月ごとの制作物を紹介します。
早くも3回目となり、目標数の4分の1の作品が完成した。
6月製作コンテンツ紹介
自主制作第3弾は、声で操作するゴルフ「HoleinVoice」です。
マイクへ入力された音量をベースにコントロールしてステージ奥のゴールを目指します。
操作は声(音)のみ!
音量で飛距離、矢印の向きで飛ぶ方向が決まります。音の入力時間でも挙動がかわるので慎重に進めなければなりません。
ステージ以外はすべて湖、
落としてしまうと前回打った場所からやり直しに。。
出来る限り少ない打数での踏破を目指します!
今回の経緯
今回も前回とは違うアプローチを目指して模索。
その結果、今回は音(声)を使うこととしました。
前回のコンテンツで楽曲を扱ったこともあり、知識の流用も狙いました。
今回はこちらの動画を参考にさせて頂きました。
今制作の課題
マイク入力は「audio capture」で実装可能だが、音で完結出来るコンテンツの構想に悩んだ。
動作コントロール
UE5では特定のプラグインを導入しないと音声認識には対応してない為、今作の動作トリガーを音量のみにする必要があった。
理想としては言語によって動作をコントロールすることだが、実装するには有料のプラグインが必要だったので断念。
今回は音量のみの入力でコンテンツを完結させる必要があり、コンテンツのベースとしてゴルフを採用した。
結果、音声で飛距離をコントロールし、飛ばす方向は音発したタイミングで制御することにした。
ローカルマルチプレイ
今回初の試みとして、簡易的なローカルマルチプレイを実装。
初期状態からボールを2つ置き、交代で処理を出来るようにした。
音の入力が終わったタイミングで切り替え、もともと操作していたボールへの入力がおこなわれないよう調整した。
後は色を変えて見た目の差を付けるだけだ。
また今回の肝となるオーディオキャプチャーのシステムを薄く紹介。
[On Audio Envelope Value] の [Envelope Value] からマイクに入力された音量の数値が常に出力されている。
基本的にUE上で取得出来る数値はとても小さいので、最初に×1000をしてかから扱っている。(元の数字は0.002~0.05くらい)
リアルタイムに音を取得している為、必ずノイズが入ってしまう。
ブランチノードを使って「1」以下の数値を強制定期に「0」に置き換えている。
「ブランチノード」とは、数値や英字をユーザーが決めた定義に対して「True」か「False」かで別々の処理を実行出来る。
いわゆるトリガーが定義出来るスイッチの役割である。
アンリアルエンジンでは、ユーザーで変数を定義し、作った変数に対して新たな数値を上書きすることが出来る。
上記図の「Voice level」の初期値は「0」、マイクから送られてくる数値をまず1000倍にして、その数値が「branch」で定義している「1」より小さい数値なら「Voice level」に「0」を代入。「1」より大きい数値の場合は、その数値を10倍した数値を「Voice level」に代入している。
別の処理から「Voice level」の数値を常に読み込めば、特定のパラーメターを変化させることが出来る。
裏話・小話
今回は入力が音のみとシンプルだった為に構想にとても苦しんだ。
2度構想し作成するも撃沈、月末に向けて駆け足の作成となった
今回用に小型のスタンドマイクを購入、今後コンテンツに合わせた備品が必要となってくる可能性が高い。。
おわりに
3回目となると基礎的な部分に関しては時間を使わず構築出来るようになってきた。その分欲が出て後半駆け足になってしまう。。
今まで作ったコンテンツも合間を見つけてブラッシュアップしていきたい。
記事が3つになったことで、
記事の最下部のリンクで「前」にも「次」にも飛べるのがちょっと嬉しい。