DMX の概要

Unreal Engine で、ライブ イベントや恒久的デジタル インスタレーション向けに使用できる DMX プラグインの概要を示します。

DMX の使用方法については、Epic のスタッフもこの機能に関するコンテンツをコミュニティ ポータルに追加していますので、こちら を参照してください。

DMX とは何か

DMX は、「Digital Multiplex」の略であり、デジタル通信ネットワークの標準として、ライブ イベント スペースでステージのライティングやエフェクトを単純なものから複雑なものまでコントロールするためによく使用されます。本来、調光器をコントロールするための標準方式として考えられ、DMX512 の前は、互換性のない、専用プロトコルをそれぞれに使用していました。すぐにコントローラー (ライティング コンソールなど) を、フォグ マシンや高機能のライトなど特別なエフェクト デバイスや調光器にリンクするための主要な方式になりました。

DMX の利用は劇場内部に留まらず、建築でのライティングにまで拡張され、クリスマスのイルミネーションや電子掲示板まで多岐にわたります。DMX は現在、劇場や会場での人気を反映して、ほとんどすべてのものをコントロールするために使用できます。DMX は、業界の多様なデバイス (ライティング フィクスチャー、レーザー、スモーク発生、可動装置など) をコントロールするため、業界全体で使用されています。

バーチャル プロダクションのコンテキストでは、DMX は勢いを増しつつあり、2 つの方法で利用されています。1 つ目として、ライティング デスクを使用して Unreal でイベントをコントロールおよびトリガーするのに使用されています。2 つ目として、DMX に対応するライティング フィクスチャーやデバイスの大規模なセットを駆動するため、たとえば、生成されたイメージやピクセルが使用されるピクセル マッピング ツールという手段が、フィクスチャーの RGB 値を駆動するために使用されます。最後に、その他の強調すべき重要なユース ケースとして、DMX を活用したショーや、UE 内部のプロジェクトおよびバーチャル プロダクション設定では、プレビズが高品質になります。

プロトコル

Epic は、Art-Net および sACN の 2 つの業界バリアントをサポートすることで DMX の機能を追加しました。

Art-Net と sACN は DMX データを Ethernet (IP) 上でまとめて送信できる、ネットワーク プロトコルです。Art-Net では単一のネットワーク ケーブルで 32,768 ユニバースに送信できます。古いプロトコルですが、多くの装備や装置でサポートされています。sACN (streaming architecture for control networks) は現在よく使われているもので、単一のネットワーク ケーブルで DMX データを 63,999 ユニバースで実行できます。

DMX データ

DMX は、1 つの場所 (ソース) から異なる場所 (宛先) に送信される、デジタル情報のパッケージと考えられます。各パッケージは、受信装置で受け取り、読み取られる特定の情報を、ソースでまとめたものです。各パケットの構造は厳密に規定されています。ハードウェア レベルでの仕組みについては、ESTA 標準 (英語) を確認してください。ここで関心があるのは、含まれるデータだけです。各パッケージには 512 バイトの配列、それぞれに 0 から 255 の値が含まれます。

DMX data structure

各バイトは一般的に「チャンネル」と呼ばれます。送信されたパッケージは 512 のチャンネルから構成され、一般的に「ユニバース」と呼ばれます。

Unreal Engine を利用した DMX

Unreal Engine を利用すると、インターフェース デバイスを使用して Ethernet 経由で DMX を使用し、フィクスチャーを直接コントロールできます。UE は単一のソースとして機能することができ、Art-Net または sACN プロトコルを使用して DMX に、さらにそこからインスタレーションを構成するデイジーチェーン接続されたフィクスチャーにデータを送信します。また、フィクスチャーから送信される DMX メッセージを直接受信および解釈します。

UE を使用してライティング コンソールとやりとりすることもできます。接続されている DMX フィクスチャーに対してライティング コンソールから送信される DMX の命令を解釈および渡すことも、UE でレンダリングされたシーンに関する DMX データをライティング コンソールに送信することも可能です。

Fixtures networked to a computer acting as a DMX console

ここでは、Unreal Engine は、DMX データのソースとして機能するコンピュータ上で動作することになります。

イメージ ソースを表示するには、ここをクリックしてください。

今回のバージョンのエンジンでは、USB インターフェースのサポートが実装されていません。

DMX フィクスチャー

DMX フィクスチャーは、受信したデータに基づいて、コマンドを受信し実行するデバイスです。つまりライトのオン、オフやデバイスの 90 度回転を実行します。単にオン/オフするだけの標準のステージ ライトから複数の軸での回転やライティング フィルタを備えた高機能のライトまで、多様な DMX フィクスチャーがあります。

各フィクスチャーには、ハードウェア レベルで事前定義された一連の属性/コマンドがあります。これらの属性は Modes というさまざまな機能グループにまとめられます。多くのフィクスチャーは、フィクスチャーが応答する利用可能な属性のパターンを、複数のモードとして事前に定義でき、特定の機能を有効化または無効化することができます。

フィクスチャー メーカーにより、ユーザーが異なるモード オプションを利用できます。広範なユースケースに対応するように多くの機能があり、そこからユーザーが一番重要なものを選択できます。最も簡単で最小のチャンネル カウント モード、複雑で巨大なチャンネル モード、これらの間のモードがあります。プロフェッショナルのライティング プラクティスでは、多くの場合、機能とコントロールのしやすさのバランスで中間モードが選択され、DMX チャンネル カウントの使用を抑えます。

各モードには属性セットが含まれます。属性は、受信した DMX データにどのように応答するのかをハードウェアに指示するものです多くの場合、特定フィクスチャーのすべての属性は、そのデバイスとともに提供されるフィクスチャーのマニュアルに説明があります。

DMX light fixtures

詳細については、「DMX フィクスチャー」のドキュメントを参照してください。

シグナル通信

次に UE とフィクスチャーが、DMX を利用して互いにどのように通信するのかを考えます。UE は 1 つまたは多数のユニバースを駆動でき、長い距離で、デイジーチェーン接続された複数のフィクスチャーがそれぞれにあります。ユニバースは、アドレスの付いたフィクスチャーのグループを識別するものとして考えられます。適切なフィクスチャーにデータを送信するために、正しいユニバースに送信する必要もあります。

UE に DMX パケットを分配するコマンドを入力すると、UE は適切なユニバースを特定し、データのパケットを、受信して解釈する各フィクスチャーが接続されたネットワークに送信します。各フィクスチャーは同じデータ パケットを受信し、そのフィクスチャーに対して意味があるデータをパケットが含む場合、内部コマンドを実行します。データを読み取ったら、同じ処理を繰り返すために、チェーンの次のフィクスチャーに渡します。フィクスチャーが適切な情報を確実に受信するには、正しいアドレスの正しいデータをリッスンする必要があります。つまりフィクスチャーのアドレス設定、「パッチング」の概念を導入する必要があります。詳細は次のセクションで説明します。

次にシグナル階層とデータ利用の概要を示します。

The logical organization of a DMX network

名称

説明

ユニバース

各ユニバースには、デイジーチェーン接続された、それぞれ最大 512 バイトのフィクスチャーを含めることができます。

フィクスチャー

各フィクスチャーには、ユニバース内部で 1 つまたは複数のアドレスを割り当てることができます。

開始アドレス

フィクスチャーの開始アドレスは、受信した DMX データ パケットをフィクスチャーがどのように解釈するのかを決定します (バイト配列の単一インデックス)

属性

各フィクスチャーには現在のモードで定義された一連の属性が含まれます。属性数 (チャンネル) を開始アドレス (「フィクスチャー パッチング」以下のサンプル図を参照) に加えたアドレスまでを占めるものです。

フィクスチャー パッチング

フィクスチャー パッチングの概念は、対象のフィクスチャーが適切なデータを受信するために、通信チェーンでのフィクスチャーの位置を仮想的に決定するために必要なものです。UE は DMX を利用して複数のフィクスチャーで読み取られる、すべて揃ったデータ パケットを送信するので、重要なのは、パケットでの正確なバイト位置の読み取りと解釈、および無視が必要な位置を特定することです。

これを実行するには、各フィクスチャーをユニバースの特定の開始アドレスに割り当てます。開始アドレスは 1 から 512 (DMX パケットの値の最大数) までのいずれかです。フィクスチャーを特定の開始アドレスに割り当てることで、割り当て開始アドレスから、開始アドレスに加えて現在のモードでフィクスチャーが含む属性数のアドレスの範囲を利用します。

以下の例を参照してください。

Address ranges in an example universe.

Fixture 2 現在のモード = 8ChannelMode (8 個の属性を含む)

  1. 赤 (アドレス 8)

  2. 緑 (アドレス 9)

  3. 青 (アドレス 10)

  4. ストロボ (アドレス 11)

  5. パン (アドレス 12)

  6. ティルト (アドレス 13)

  7. マクロ (アドレス 15)

開始アドレス = 8

アドレス範囲 = 8 ~ 15

この例で、パンするには、アドレス 12 でリッスンした 1 バイト値 (0 から 255) により、定義した回転範囲内でフィクスチャーがパンする量をコントロールします。

属性の分解能

最もよく使用される属性は、シングルバイトの入力範囲 (0 から 255) で動作しますが、移動やライティングを精密にコントロールするために高い分解能が必要になることもあります。この場合は、属性は 1 バイトではなく、複数バイトの入力範囲を利用します。複数バイトの組み合わせで、特定の属性をコントロールするために大きな値を使用できます。次に属性で利用できるシグナル タイプを示します。

  1. 8 ビット属性 - 最小:0、最大:255 - 1 アドレスを占有

  2. 16 ビット属性 - 最小:0、最大:65,536 - 2 アドレスを占有

  3. 24 ビット属性 - 最小:0、最大:16,777,215 - 3 アドレスを占有

  4. 32 ビット属性 - 最小:0、最大:4,294,967,296 - 4 アドレスを占有

8 ビットを超える属性が必要な場合、その属性はユニバースで複数のアドレスを占有します。分解能により、連続した複数のアドレスを占有できます。前のリストで属性が占めるアドレスの数を確認できます。

ネットワークでの DMX 通信

過去数年間で、DMX データを送信するためのネットワーク通信方法は、ますます一般的になり重要になっています。ショーが大規模になり、フィクスチャーの数が増加するにつれて、多くのフィクスチャーを高速かつ効率的に、しかも信頼性を確保しつつ、アドレス設定することが非常に重要になっています。

DMX の構造を活用しながら、チャンネルの制限を乗り越えるために、Ethernet を利用したプロトコルが開発されました。これらのプロトコルでは、複数の DMX ユニバースから単一の Cat5 ケーブルでデータを送信できます。UE の DMX プラグインは、最も広く利用されている Art-Net と sACN という 2 つの Ethernet プロトコルをサポートしています。

Art-Net

Art-Net はライセンス料無料の通信プロトコルで、DMX512、つまり UDP 上でライティング コントロール プロトコルと Remote Device Management (RDM) プロトコルを伝送するために使用されます。「ノード」 (高機能のライティング装置) と「サーバー」 (ライティング デスクやライティング コントロール ソフトウェア (ここでは UE) が動作する一般のコンピュータ) 間の通信に使用されます。

Art-Net プロトコルの詳細については、Art-Net サイト (英語) を確認してください。

sACN

Streaming Architecture for Control Networks (sACN) は、ネットワーク上で DMX ユニバース データを効率的に送信するために ESTA により開発された、標準プロトコルです。多くの点で Art-Net と比較されるものです。メリットの 1 つは、簡単な構成で利用できるマルチキャスト オプションです。sACN は多数の RGB LED をコントロールするためによく使用されるプロトコルです。

プロトコルの統合

Unreal Engine の DMX プラグインでは、DMX データを sACN および Art-Net プロトコル バリアントを通じて送受信するためのクロスプラットフォーム サポートが含まれます。Art-Net と sACN はともに UDP ネットワーク プロトコルなので、Unreal Engine のすでにあるネットワーク メッセージング機能が、Unreal Engine アーキテクチャの上に構築された各プロトコルで利用できます。

このプラグインでは、Art-Net プロトコルの最新バージョン、Art-Net 4 が統合されています。Art-Net 4 には理論的に 32,768 ユニバース (32 キロバース) つまりポートアドレスがあります。一方 Art-Net 3 のユニバースの制限は 256 です。

Art-Net 4 プロトコルの完全な仕様については、ここから公式ドキュメントを確認してください。

sACN プロトコルの公開ドキュメントについては、このリンクを参照してください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル