目次

レーザー プロジェクター

レーザー光線による照射を表現します。
照射データは、他のアプリケーション プログラムから UDP 経由でリアルタイムに供給します。




「-X」「-Y」はそれぞれ、横/縦を反転します。

「出力」は RGB 光の合計出力です。

「広がり」はビームの広がり角です(Beam Divergence)。



「ビーム径」「広がり」は明るさの表現のために使用します。
拡散光や光線の太さは変化しません。

実物のレーザープロジェクターのしくみとは異なる、擬似的な表現です。
実物では照射面までの距離によって輝点と図柄の大きさの比が変わりますが、ここでは一定です。

静止している輝点の照度は適切に示されません。

「構成」は、X/Y スキャナーの順序です。


「スキャナー番号」は、受信する照射データを指定します(0 〜 255)。

「色制御」は、輝度の制御に使用する信号を指定します。




以下、丸括弧で囲まれた設定は、制御用 DMX チャンネルです(装置の DMX チャンネルからの相対値)。
これらのうちいくつかは「0」にすることで「不使用」となります。




マルチキャストアドレス 224.0.199.62 でも受信できます。

照射データ プロトコル

(仕様は予告なく変更する場合があります。
 予めご了承ください)

照射データは UDP 経由で受信します。
デフォルトのポート番号は「51006」です。
値はビッグエンディアン(MSB first)です。

---------------------------------------------------------

#define	kLpStrmPakID		FCC('Y','L','P','S')
#define	kLpStrmTimeReso		(10000000)	// 100nS
#define	kLpStrmUdpPort		(51006)		// default

// big endian

struct	SLpStrmHdr
{
	uchar	mID[4];		// kLpStrmPakID
	uchar	mScanner;
	uchar	mSeq;		// packet sequence number
	uchar	mRsrv[2];	// 0
};

---------------------------------------------------------

各パケットは 8 バイトのヘッダーで始まります。
ヘッダーは 4 バイトの識別子「'Y','L','P','S'」で始まります。
最初のバイトは「 'Y' 」です。
「mScanner」はスキャナー番号です。
「mSeq」は各スキャナーのパケットごとに1づつ増加する識別番号です。
(欠如の検出ができます)
「mRsrv」は予約フィールドで、「0」にします。

ヘッダーの後に可変長のデータが続きます。
データには2種類あります。
  • ドット時間指定 1バイトの「0」の後に2バイト(符号なし 16bit)の「ドット時間」が続きます。 これは1ドットあたりの照射時間です。 単位は 100nS です。
  • ドットデータ 各ドットは8つの「チャンネル」(0〜7)で表されます。 1バイトの「0以外」の「チャンネル変化フラグ」の後に、2バイト(符号あり 16bit)の「チャンネル値」が1個以上続きます。 「チャンネル変化フラグ」は値の変化したチャンネルを示します。 下位ビット(0)から順に、チャンネル 0〜7 に対応します。 ビット値「1」の対応するチャンネル値が含まれます。 チャンネル値は、チャンネル 0 から 7 の順に現れます。 チャンネルと機能の対応
    チャンネル機能
    0X
    1Y
    2R
    3G
    4B
    5(予約)
    6(予約)
    7(予約)
各パケットの先頭で、全チャンネル値は「0」となります。 各パケットの先頭で、ドット時間指定が必要です。 (ドット時間指定のデフォルト値は規定しない) ドットデータの全チャンネルに変化がない場合、「ドット時間指定」と区別するため、チャンネル0 を含めます。