3D配信における照明制御

※本記事は2024年12月20日にカバー公式noteにて公開された記事を再掲載したものです。

こんにちは。
皆様は3Dライブはお好きでしょうか?
カバー株式会社クリエイティブ制作本部でタレントさんが3Dライブで活躍して頂くための内製アプリの開発に携わっているTです。

主にステージの演出とシステムの繋ぎ込み部分、および照明制御をメインで担当しておりまして、直近だと2023→2024カウントダウンライブで初披露した新アリーナや、ReGLOSSお披露目で初出しされたhololive DEV_IS専用のアリーナをメインで担当させて頂きました。

今回は弊社の照明制御について事例を紹介します。

弊社で扱う照明制御の変遷

DEV_ISアリーナやルミナスアリーナのステージは大量の照明灯体を扱う上で、ひとつひとつを操作するのは困難なことが従来のアリーナ時代からの問題であり、当時の現場環境ではMidi制御を行っていました。

当時の照明の制御は、基本的には事前に仕込んだAnimationによる決まった動きとなっており、AnimationのスピードとColor制御のみは現場で変更できるようになっていました。しかし、その他の現場からの要望への対応に時間が掛かることが問題となっていました

とあるステージを実装する場合に基本的には照明の動きはアニメーションであり、3D背景チームが企画ディレクターの指示を受けて作成します。

ただ、現場でのカメラワークの調整の結果、実装されたステージに対して、例えば別のアニメーションが欲しいという差し込みの要望があったとして、アニメーションの修正が発生する場合がありました。

この場合、リテイク部分を修正した3D背景チームからアップされたデータを、Unityエンジニアが実装物としてステージを書き出して、動作確認を都度行う必要がありました。このような修正の回数をどうにか減らしたく、現場で自由に動かせる照明が必要になりました。

現場の要望を満たす照明・演出の制御を実現するために、現実のライブや舞台照明等で使われているシステム( DMXおよびArtnet )を導入することで解決しました。

DMX・Artnetとは

新たに導入された通信規格、「DMX」は大雑把に言えばリアルライブで使用される照明灯体を制御するための通信規格になります。DMXをイーサーネット上で伝送する規格として「Artnet」があり、弊社のシステムはArtnet(DMX)を利用してステージの照明の制御を行っています。

DMXの中身としては、512チャンネル(以降 512chと表記 )までのデータで1chあたり8bit( 0 – 255 )をまとめたものになっています。端的に言えば、256段階のパラメータを512個扱っているイメージですね。
前述した内容と被りますが、DMXは512ch( 1ch = 8bit )のみしか送れず、それらを束ねてUniverseという単位でまとめて送る手段がArtnetという伝送プロトコルになります。

UniverseおよびDMXの内部

3年前までは、Midi制御で64chほどしか使用できなかったところ、実装後の現在ではスタジオでのライブ1曲あたり8 Universe程使用しているので、512ch × 8 Universe = 4096chに増えました。

以前の64倍のパラメータ数のリアルタイム制御を実現しました!

Fixture

続いて、弊社で使用しているムービングライトとして使用される照明灯体の機能およびFixtureについて解説します。
弊社のムービングライトに関して、あらかじめ照明デザイナーによる機能の選定および1灯体あたり何ch使用して、どのパラメータを持つかを決めて頂き、これらまとめたものをFixtureと呼びます。

DEV_ISアリーナで使用しているムービングライトは1灯体あたり18chを基準としてFixtureが設計されているのですが、今回はそのうちの1〜 9chまでの各モジュールを紹介します。

Color

おなじみのRed,Green,Blueの3つのパラメータで上限は0-255( 1-3chを使用 )
基本的に根元の光源とシャフト部分のMaterialに対しての色の変更用で実装されています。

Dimmer

Colorに乗算されたFloat型のパラメータで上限はステージによって照明チームの依頼に応じて変更しています。

2ch分を使用しており、4ch目は上位8bit、5ch目は下位8bitで管理していて、0 – 65,535の幅でパラメータの変更が実現でき、8bit ( 0 – 255 )に比べて滑らかに照明の明るさを表現することができます。

注意点として、上位下位8bitそれぞれの出力は照明ソフト側が握っており、デバッグの際には照明ソフトを導入する必要があるので、外的要因による依存度が高い実装になります。

Pan

灯体のX軸の回転になります。
Dimmer同様に2ch分を使用していて、6 – 7chを管理しています。

Tilt

灯体のY軸の回転になります。
Pan同様に2ch分を使用していて、8 – 9chを管理しています。

MovingLightの1-9chまでのFixture

現状、上記のような各パラメータをモジュールとして実装して組み替え・追加を行っています。直近のDEV_ISアリーナを使用したライブでは、指定したテクスチャに対してシャフトの形を変更するGoboという機能が追加されました。

Gobo機能による新規表現

Universe単位で独立して灯体を使用したい場合、Universeは512chをまとめて管理しているので、512ch / 18ch(1灯体当たりのFixture) ≒ 28 灯体がアサインできることになっています。

Universeに対して限界まで当灯体をアサインした場合の図

照明灯体とシステムの繋ぎ込み

Unity側ではどういった形で実装されているかを見ていきます。
具体的な説明は割愛しますが、キーボードやMidi、Artnetの入力などをまとめた外部デバイス入力機能によってギミック制御・照明制御の制御を行っています。

例えば、とあるエフェクトを出す場合には、内製のアプリケーションではUIでの操作が基本になるのですが、UIを開かなくともショートカットとしてキーボードの特定のキーを押した場合にエフェクトを操作できる機能があります。

この【キーボードの特定のキー】部分が前述した外部デバイス入力になっており、DMXのUniverse/ChannelやMidiデバイスとの接続を切り替えられる仕様になっており、スタジオ現場では好きなデバイスに繋げて操作可能になっております。

【エフェクトを出す】というギミックを外部デバイス入力に繋ぐ場合

ただし、照明灯体(ムービングライト)の場合は、DMX(Artnet)にのみ対応した仕様となっておりまして、各Universe/Channelの通知を受けて変更されるのではなく、全てのUniverse/Channelを参照してパラメータの変更を灯体側が判定する実装となっております。

ムービングライトの場合

理由としては、Universe/Channelの通知を個別で送信した場合に、想定以上に通知が多くなって高負荷になってしまったからです。複数台のPCとネットワーク上で同期する内製アプリの都合から、DMXの生データを各PCごとに取得・管理しているモジュールとしてパブリックなクラスとして実装することで負荷の問題を解決しています。

また、仕様を変更したメリットとして、照明がUniverse/Channelのアサインを自由に変更でき、またFixtureの任意のパラメータに対して16bit対応のような特殊なパラメータを扱えるようになりました。

まとめ

内製のアプリの一端に過ぎないものですが、DMX・Artnetに関してご紹介しました。

昨今ではリアルライブに寄せた演出も含めて需要が高まっていると感じており、一夜のライブをどれだけ盛り上げることができるのか、よりユニークな表現ができるかにおいて、照明はその一画を担う技術・表現となっています。

弊社における照明表現に関しては、照明の描画負荷、大量の灯体のセットアップ・管理、リアルの照明灯体で使われている機能の新規追加、まだまだ改良の余地を残しており、今後も開発を進めていくので、どう照明演出が進化していくのかも含めて注目いただけると幸いです!

さて、弊社では、テクニカルアーティスト、およびECS等の大量のオブジェクトの管理、照明技術に知見のあるエンジニアを募集しておりますので、興味がある方はぜひお問い合わせいただけると幸いです。

以上、ここまでお付き合いいただきありがとうございました。
また、次のライブでお会いしましょう!