【UE5】独自のDMX Fixture Componentの作成

本記事は Unreal Engine (UE) Advent Calendar 2024 シリーズ4の25日目の記事です。

1. 前置き

DMXの基礎知識

独自のDMX Fixture Component」の作成方法や仕様について解説します。
まずは少しだけDMXについて解説します。

用語や基礎については、先日カバー株式会社様がとてもわかりやすい記事を上げてくださっていたのでこちらを参照ください。
note.cover-corp.com

また、以前勉強会にて私がDMXの基本について講演した資料も参考になるかと思います。

www.docswell.com

用語や仕組みを押さえられたところで、UE5のDMXの機能を少し解説します。

UE5では、DMXLibraryというアセットでDMX周りの設定を行います。
灯体の種類ごとに「Fixture Type」を用意し、「Mode」「Function」で灯体が持っている機能を定義し、各灯台BPに割り当てます。



UE5での仕組み

各灯体BPの中では、「Function」ごとに用意されたDMX Fixture Component」がぶら下がっており、割り当てられたチャンネルのDMX信号をそれぞれ受け取り、ライトのカラーや灯体の向きなど、様々な制御を行っています。

試しに「Dimmer_Component」の中身を見てみましょう。
「SetValuenoInterp」関数は「DMX Fixture Component」で定義されている関数で、設定したチャンネルの信号の値が流れてきます。
この例では、値をそのままライト等のマテリアルの「光の強さ」に当たるパラメータに流して、調光を再現しています。

このようにDMX信号を受け取った後の挙動は必ず「DMX Fixture Component」で実装されています。
そのため、既存のコンポーネントでは再現できないような独自の挙動を作る場合は、同じように「DMX Fixture Component」を継承して作成する必要があります。
独自の「DMX Fixture Component」の作成方法について見ていきましょう。

2. 独自の「DMX Fixture Component」の作成

独自の「DMX Fixture Component」を作成する場合、用意されているクラスは3つあります。

どのクラスも基本的に「InitializeComponent」関数で初期化処理を行い、各クラスの値受け取りイベントにて挙動の制御を行います。
それぞれ特徴をみていきます。

DMXFixtureComponentSingle

DMXチャンネルを1つ分受信できます。
エンジンのほとんどのDMXFixtureComponentはこのクラスを継承しています。
「SetValueNoInterp」関数で値を受け取れます。


DMXFixtureComponentDouble

DMXチャンネルを2つ分受信できます。
値を受け取る関数も2つに分かれています。


DMXFixtureComponentColor

カラー専用に用意されたコンポーネントです。
受信した値がLinearColorに変換されて流れてきます。
設定するDMXチャンネルはRGBAの4チャンネル分設定します。



3. 課題と宣伝

基本的には用意されているコンポーネントのみで事足りるのですが、カラーを除き2チャンネル分しか受け取れないという制限があります。

そこで制限無く可変長の配列で設定したチャンネルを受け取れるコンポーネントが含まれたDMX Extension」というプラグインをFabで公開しました。
以下のプラグインの中には他にもDMXを扱う際に便利なノードが含まれていますので、もし既存の機能だけでは実現できない場合などにチェックしてもらえたら嬉しいです。

www.fab.com


UE Version : 5.5.1