TouchDesignerでPangolin CHOPとムービングレーザーを使用する方法まとめ



この記事は[TouchDesigner Advent Calendar 2024](https://qiita.com/advent-calendar/2024/touchdesigner)の17日目の記事です！

もくじ

- はじめに
- pangolin chopとは
- レーザー用のアニメーション制作の方法
- レーザー用アニメーション制作の注意点
- 緊急事態の為のkillスイッチ対策
- まとめ

# はじめに

某案件でムービングレーザーを使い倒したので備忘録的にレーザーのことをしたためておこうと思います。

今回使用したムービングレーザーのスペックはこちら

出力 : 5W
接続：ILDA接続
スキャン速度 : 30kpp
スキャン角度 : 20度
色 : RGB
[ja.aliexpress.com](https://ja.aliexpress.com/item/1005006748083002.html?gatewayAdapt=glo2jpn)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/be02c166-27b5-4ade-f90f-ace480e126c7.png)


レーザーはILDAでコントロールするものとDMXでコントロールするものの二種類あるのですが、今回はレーザーをILDAで制御するものでやりました。

ムービングする部分はDMXでやっています。
レーザーの細かな説明をすると長くなるのでスペックをわかりやすく言うとスキャン速度が大きければ大きいほど出せる絵の細かさが上がります。
スキャン角度が大きいものは出せるサイズが大きくなります。
使用する場面によって切り替えるとよいと思います。

今回はアニメーションを別DCCツールで制作し、alembicにしたものをPangolin chopを使用してBEYONDと呼ばれるレーザーのソフトウェアを介して出力するまでにstudyした内容のまとめになります。

# Pangolin CHOPとは

まずレーザーなのにLaser CHOPじゃねーのかよと思ったそこのあなた。

実はTDでレーザーを出力するには二種類の方法があります。
Laser CHOPを使用する場合はHelios Laser DAC等を使用したりしてみてください。
今回はpangolin社のBEYONDというレーザーを出力するソフトを介す関係でPangolin CHOPを使用してレーザーを出していきます。
Pangolin CHOPはその名の通りPangolinのレーザーソフトにTDからアニメーションを送る為のCHOPになります。

![](https://storage.googleapis.com/zenn-user-upload/d936b438a402-20241210.png)


全項目は使用しなかったので使った項目だけ説明しておきます。

### Active

BEYOND側に出力するかどうかをON/OFFで切り替えます。

### Source

SourceにSOPかCHOPを入れることでレーザーを出すことができます。簡単ですね。

### Zone

BEYOND側で設定したどのzoneに出力するのかをTD側から指定できます。

BEYOND側でレーザーごとにzoneを分けたり、すべてのレーザーで一つのzoneの領域を区分けして指定したりすることで様々なパターンで出すことができます。

### Percent

あまりいじることはないですが、Percent(勝手にへにょり値と呼んでいる)で元のSOPまたはCHOPにどれだけ準じた軌道でレーザーを照射するかが調整できます。

あとにも記述しますが、レーザーで波形などではなく任意のアニメーションを出そうとするとスキャン速度によってチカチカして見れたものではなくなってしまうので、そこをpercentで形を崩す(へにょらせる)ことでチカチカを緩和させることができるようになります。

形が崩れてはしまうので、使用するかどうかはアニメーションの種類にもよると思います。

### Vertex Repeat
各ポイントを何回繰り返して描画するかを決めることができます。本来の使い方じゃないかもしれませんが、ポイントの順番がおかしいつなぎ方をしていないか確認するために使用してました。

### Blackout

レーザーのactiveを別の数値から制御しているけど絵は何も出したくない！というときに使用します。

そしてこちらが何度も連呼しているBEYONDというソフトウェアになります。

### BEYOND
https://pangolin.com/collections/beyond-software?srsltid=AfmBOop-XZl1xjB3Z1301dkSV8mZ3QsSxk1E6Iy6kkgzPYxXmiE99-ha

![](https://storage.googleapis.com/zenn-user-upload/561335e16b04-20241210.png)


UIはこんな感じです。

標準で何パターンものアニメーションが入っていてにぎやかしで出すだけなら標準のものでも楽しめそうです。
右上のレーザー出力開始ボタンを押せばレーザーが出力されます。
今回はただ出力をさせるためだけに使用するので中身のテストパターンやタイムラインなどは一切使用しません。
このBEYONDのソフト内でシーケンスを組むことも可能なのでガッチガチに組んだものを再生する場合はそれでもいいかもしれません。



# レーザー用のアニメーション制作の方法

でははじめていきます。

SOPとCHOPどちらかで出力できるのでどちらも説明していきます。

### SOPで出す

まずは適当にTDで置いたSOPをつなげてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/8c1cbac0-b14e-6d90-199b-77138c30f1c4.png)


pangolin CHOPのSourceの項目に出したいSOPを入れるだけでBEYONDの方にレーザーが出力されます。

色を付けてみたかったのでPoint SOPでadd colorして赤くしてみました。

![](https://storage.googleapis.com/zenn-user-upload/7fd3420eacf9-20241210.png)


BEYOND側にきていますね。

ここでTipsなんですが、中華産の安いムービングレーザーは向いている方向の中心とレーザーの投射位置の中心がずれている為メジャーで計りながらキャリブレーションしていく必要があります。

TD側で修正するとレーザーが入れ替わった時にわからなくなりそうだったのでBEYOND側で調整を入れました。これでどんな絵でも中心から出力されるようになりました。


![IMG_4072.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/ca10b171-6ce3-c506-1feb-e4d1996c9b76.jpeg)


こんな感じに出ています。きれいな丸ですね。

### CHOPで出す

Pangolin CHOPはCHOPからでもBEYOND側に出力することができます。

![](https://storage.googleapis.com/zenn-user-upload/cf3cb2b312ec-20241210.png)


SOPと違いxyzだけでなく、rgbとidのアトリビュートを追加します。




![](https://storage.googleapis.com/zenn-user-upload/c9d9e2e66065-20241210.png)
![IMG_4071.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/7de01fda-6610-0e25-880c-8d5d1f683d82.jpeg)



SOPの時と同じように出力ができました。

idはpointごとに持たせることができます。idが同じpointが線としてつながった状態で描画されます。

Primitivesごとに色を変えたい場合などは分けたいpointごとにidの番号を分けて別のrgbの値をアトリビュートとして持たせるといいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/fd769645-d319-9185-edcb-cca06353ecb4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/86325fd2-8175-2946-08a9-42bb4abbaa09.png)
具体的にはPoint SOPでCustom Attributeを使用しidのアトリビュートを追加して線をつなげたいオブジェクトごとに番号を変えればつながらないオブジェクトをCHOPで出すことができます。
SOPアウトすれば最終的にマージしたものをそのまま出せるのでSOPで行けるならSOPのままの方が楽です。
使い分けてみてください。
アトリビュートの名前が違うと出力されないのでxyz,rgb,idでそろえましょう。

![laser3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/09a5bdf0-8ab0-cf4b-e649-c639d0ba489a.gif)


# レーザー用アニメーション制作の注意点

![](https://storage.googleapis.com/zenn-user-upload/a4ce27c8abdc-20241210.png)


この上記で試していたSOPのサークルは40points 1Primitivesなので肉眼だと全く違和感なく円状に見えます。増えるとどうなるかやってみましょう。


![laser.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/5940e9c2-e233-5432-be5f-9f5e0d59464e.gif)



チカチカしてます。Point数を3000pointにしました。
注意点として出すオブジェクトのPoint数やPrimitive数が増えれば増えるほどレーザーがちらついて見えるようになります。
ここにスキャン速度が関わってきます。


![laser2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950389/3e4d89b5-6788-d035-52d8-bce2f35b5c44.gif)



今回のレーザーは30kppでアニメーションを出したところ500point未満にするとちらつきが気にならなくなりました。
500points以下でもPrimitive数が多かったりPointの順番がバラバラで四方に散ったりしているとちらつくようになります。
最短の一筆書きで最初と最後のPointの位置が近いとちらつきを抑えることができます。

まとめると

- Point数とPrimitive数を極力抑える
- スキャン速度によってPoint数の上限が変わるのでkppを気にする
- Pointの順番を整理し、最短の一筆書きを意識する

これを意識してアニメーションを作ればきれいに出力することができると思います。

某案件では別のDCCツールでポイント数などを調整してもらい、制作したアニメーションをAlembicで書き出し、SOPとして読み込んで再生しました。

長いAlembicとかになるとその分重くなるので軽量化が大切になってきます。
多分高くていいレーザーを使えばここまでシビアではないのかもしれません。使わせてください。

# 緊急事態の為のkillスイッチ対策

ここからはちょっと別ベクトルの話になります。

レーザーはまじで危険です。
人の目に入ったら失明するし物が燃える可能性もあります。
ということを意識したうえで触ってください。

詳しくはこちら↓
[Q&A / LASA - Laser Art and Science Association](https://www.lasa-info.jp/about_laser/1/)

ということで、危ないにもかかわらずムービングレーザーとかいう激アツデバイスを使ったので安全のためにやったことも書いておきます。

## Killスイッチの設置

ムービングレーザー側で使用しないDMXのチャンネルに値を常に送り続けてTDが少しでも変な挙動をしてFPSが落ちた瞬間にレーザーの電源ごとおちるkillスイッチを設置しました。別のエンジニアの方にやってもらったパートなので詳しくわかってませんが外部デバイスで電源の制御をしてました。

## 物理Killスイッチの設置

物理スイッチでも上記と同じように電源が落ちるようにしました。こちらも別のエンジニアの方に、、、。

## 可動域の指定

ムービングという動き回る代物なのでDMXで送っている値が想定の値を超えていた場合に強制的に出力をOFFにするようにしました。
シーケンスで値まで指定しているので送る値がおかしくなることはないはずですが念には念をいれて導入。

### 所感

これくらいガチガチにやらないと常設のコンテンツとして運用していくことは厳しいだろうなと感じました。目に入っても大丈夫なレーザーなどもありますが、その分出力が弱いので使う場面でレーザーの選定基準を変えていく必要があると思います。


# まとめ

レーザーは正しく使えばとても楽しいツールということが分かったので他にもいろいろレーザー使ったイベントなど企画しようと思います！またお知らせします！

某案件では５台のレーザーをTD内のオブジェクトのLook atの方向を向くように制御したのでその時に大変だったレーザーのDMX連携の話なども余裕があれば記事にしたいと思います。興味あれば見てください！

ここまでお読みいただきありがとうございました！レーザーの作品作ったら是非教えてください！