10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unreal Engine (UE)Advent Calendar 2021

Day 10

Unreal EngineでDMX照明機材動かす最初の一歩

Last updated at Posted at 2021-12-10

#目次
1.前書き
2.そもそもDMXとは
3.UE4 DMXプラグイン
4.ブループリントで制御


#1.前書き
"Unreal Engine DMX"とかでググると、Unreal Engine内の照明を動かすドキュメントが沢山出てきます。
まあ確かに、バーチャルライブとかでよく使われてますよね。
ですが、自分は現実世界の照明機材をUnreal Engineと結び付けて動かしてメディアアートとかのそういう方向性のものを作る機会があったので、その経験を踏まえ、今回の記事では現実のDMX照明機材をUnreal Engineで動かすことにフォーカスをあてて書きます!

仮に読者の想定としては、Unreal Engineを元々やっていて、照明の制御に手を伸ばしてみたいという方を想定しています。
照明屋からUnreal Engineに入る人にも参考になる部分もあると思いますが、UE4の基本的な部分の説明は省きます!

ただ、予め断っとくと、業界の人間とかでも全然なくて、ただの一般大学生です。間違ってる部分もあると若干あるかもしれないので、怒らないでください。
でも、実際Unreal Engineで現実のDMX機材を動かす記事がなかなかなくて、英語の動画を見たりしながら実装したので、初心者記事でも日本語のドキュメントを残しとくことは価値が多少はあるかなと思うので、書いてみます。

#2.そもそもDMXとは
DMXに関して、深い説明は下のリンク等を見ることをおすすめします!
Unreal Engine の公式ドキュメント
Sound House さん

ここでは簡易的に説明します。
既にご存じの方は飛ばしてください。

DMXとはプロトコル(通信規格)です。
何のプロトコルかというと、照明等の機材を制御するためのプロトコルです。
DMX規格を大きく括って考えれば、コンサートやライブ、舞台等においては照明制御のデファクトスタンダードと言えるでしょう。

次にどのようにDMX規格で実際の照明を制御するかを理解しましょう。
image.png
上の画像は自分の持っている、"BETOPPER LPC015" という照明機材です。Amazonのリンク

裏はこんな感じです。
S__9338913.jpg

このようなDMX照明機材とPCを繋ぎ、Unreal Engineで制御するためには、
PCからの信号をEthernetでLANを通じて照明機材に送ります。
その際、Art-Net DMX Converter というような機材が必要になります。(Art-Netに関しては 2.そもそもDMXとは の後半で解説します。)
Aliexpress
S__9338909.jpg
スイッチングハブ等を用いて、Art-Net DMX ConverterとPCを同じローカルネットワークになるようにします。
S__9338912.jpg
そしてArt-Net DMX ConverterのDMX出力端子を照明機材につなぎます。
S__9338911.jpg

DMX端子間をつなぐケーブルは、DMX XLRケーブルを用います。
インピーダンス等が異なるので、音響機材に使われるものとは異なるDMX専用のケーブルを用意すると良いです。
image.png

複数の照明機材をつなぐ際は、以下のように、DMX out → DMX IN → DMX OUTというように数珠繋ぎのように繋ぎます。
また、照明機材には大概いくつかのモードがあり、それをDMXモードにします。
S__9338908.jpg

簡易的なステージ等であれば、XLRケーブルで配線することも多いようですが、より高速で信頼性の高いEthernetネットワークで信号を送るプロトコルである、Art-NetやsACNという通信規格が使用されるケースも多いようです。
Art-Netの詳細
sACNの詳細
UE4で現実世界の照明を動かそうと考えた際、Art-NetかsACNを採用することになります。
ただし、相当大規模なプロジェクトでない限り、どちらを使用しても大差はないと自分は捉えています。
Art-Netのほうを自分は使います。

Ethernetネットワークを使用するので、インターネットに繋げてVPNなどを使用すれば遠隔地からオペレーションをすることも可能になります。

また、照明機材によってはEthernet端子があるものもあるので、そういう場合はDMXに変換することなく、Ethernetケーブルのみで各機材をつなげることもできます。

#3. UE4 DMXプラグイン
基本的にはUnreal Engine 公式のDMXクイックスタートに従います。

DMX × Unreal Engine の記事を書いといて、これを言うのもなんですが、UE4.27だと下のスクショのようにIPとかの設定するControllerが開けないというか、編集がどうもやり方がわかりません。誰か教えてほしい...
image.png
なので今回はUE4.26を使います。
UE5.0でも同じ感じでできます。

個人的には、DMXプラグインを使用するよりも、Blankのプロジェクトを立ち上げたほうが、DMXLibrary の競合とかを防げてとっかかりやすいと思っています。

ではクイックスタートっぽくやってみます。
以下の手順でやっています。

① 新規プロジェクトを立ち上げる
② プラグインの追加
③ DMXライブラリを追加
④ DMXライブラリを開く
⑤ コントローラーの設定
⑥ 器具タイプ(Fixture Type)を追加
⑦ 器具パッチ(Fixture Patch)を追加
⑧ フェーダを動かす

① 新規プロジェクトを立ち上げる
② プラグインの追加
 - DMX Engine
 - DMX Protocol
を入れておけばとりあえず動きます。
Desktop Screenshot 2021.12.10 - 18.50.18.34.png
③ DMXライブラリを追加
Desktop Screenshot 2021.12.10 - 19.02.09.16.png

④ DMXライブラリを開く
Desktop Screenshot 2021.12.10 - 19.09.09.18_LI.jpg
DMX出力コンソールがない場合、上のスクショ内の赤く〇をした部分から開けます。

⑤ コントローラーの設定
image.png

  1. コントローラーを追加
    2, 追加したコントローラーのDMX信号の設定
    プロトコルはここではArt-Netを選択しておきます。
    通信方式は最低限Broadcastでも正しく設定できていれば動きますが、Unicastにする際に困らないよう、一応ここではUnicastでやります。
    Art-Net-DMX Converterの設定用ソフトを立ち上げ、ネットワーク上でSearchをかけると、ConverterのローカルIPを取得できます。
    image.png
    Unreal Engineで信号を送るPCが、同一LAN内のどのIPアドレスのノードに信号を送ればいいのかを支持したいので、そのConverterのローカルIPアドレス
    を Additional Unicast IPs に追加します。
    image.png

⑥ 器具タイプ(Fixture Type)を追加
image.png
Static、Modes、Functionを追加しましょう。
自分はセクション2で載せたBETOPPER LPC015の3チャンネルモードを使用しようと思うので、名前を割り当てつつ設定すると以下のようになります。
image.png

⑦ 器具パッチ(Fixture Patch)を追加
先ほど作成した機材を追加しましょう
image.png
開くと、ユニバース1上のチャンネルに勝手に割り当てられます。
image.png

複数機材を使うケースはこんな感じです。 例えば、以下のような時は ![S__9338908.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442991/144925a3-d33a-3504-cae1-a0b22bcdf8da.jpeg) 新しい照明機材の情報を追加して ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442991/37f46a76-810c-514d-e0f0-8ea4c380574f.png) チャンネルを割り当てます。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442991/1599f27c-bbf3-05ca-5197-4ae0fa0a5e62.png) こういう感じになりますね。

⑧ フェーダを動かす
まず、3チャンネル動かせるようにフェーダを追加してみましょう。
この際、アドレスの変更を忘れずに、それぞれのチャンネルに対応するアドレスを割り振りましょう。
image.png

S__9338924.jpg
光りました

~光らなかった場合~ 自分は、最初DMXテンプレートでプロジェクトを作成し、公式のDMXクイックスタートに従ってたところ、以下のようなエラーが発生しました。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442991/de66e1f9-2c11-63a2-cb6e-852445b9b1c0.png) DMXテンプレートのDMXライブラリと競合してしまっていました。 以降自分はDMXライブラリは1プロジェクトに1つにするようにしています。 同じ壁に当たる人も少なくないかなと思うので、書いときました。

#4. ブループリントで制御
公式 DMXブループリント拡張

① まずは、クラスはActorとかでブループリントを作成します。
image.png

② DMXコンポーネントを追加します。
作成したブループリントを開き、左上のコンポーネントを追加からDMXコンポーネントを追加します。
image.png

③ イベントグラフをいじります。
何かのイベントを発生させて、照明を変えたいとき、イベントグラフを右クリックしてDMXSubsystemというものを作成します。
そして、SendDMXRawノードを作成して繋ぎ、Universeを指定し、またMake MapノードからKeyとValueでチャンネルと送信する値(0~255)を指定ます。
image.png
このノードで大体のことはできる気はします。

④応用してこんなことができます。

モーションキャプチャとかと組み合わせれば、無人オペレーションできます。

でも、DMXで何かするとき、キーボードイベントとか、いくつかのイベントが何故か効かないんですけど、それの理由が正直よくわかんないんですよね...

まあ、でも、いずれにせよUE4 × DMXで現実の照明をプログラム書かないでインタラクティブに動かせるのはとても良いです。
誰かの何かの参考になったら嬉しいです。
以上です。ありがとうございました。

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?