
TouchDesigner + 10自由度 Mems IMUセンサ でCG制御
DFROBOT様より、提供頂いた10自由度 Mems IMUセンサモジュールでTouchDesignerの3Dオブジェクトを動かしてみました!
10自由度 Mems IMUセンサの詳細は以下を
TouchDesignerの詳細は以下を参照ください。
目次
モーションセンサ
このモジュールには
- ADXL345:3軸加速度センサ
- ITG3200:3軸ジャイロ
- HMC5883L:3軸地磁気センサ
- BMP085:気圧センサ
が搭載されています。3+3+3+1で自由度10のセンサです。モジュールのインターフェースはI2C。
構成
部品
- 10自由度Mems IMUセンサ
- Arduino UNO
Arduinoプログラム
以下でダウンロードできるライブラリとサンプルコードを元に作成いたしました。
https://www.dfrobot.com/wiki/index.php/10_DOF_Sensor_(SKU:SEN0140)
センサから姿勢角 yaw pitch roll取得してシリアル出力します。
TouchDesignerプログラム
TouchDesignerを起動し、新規作成 ([File] – [New])で いざプログラミング!
画面ダブルクリックで 以下のオペレータ選択画面が開きます。各タグ内から使用するオペレータを選択・配置します。
以下が全体結線図です。一つずつ説明記載いたします。
- Arduino連携しシリアルデータ取得
DATタブからSerialオペレータを選択・配置してArduinoからのシリアルデータを取得します。オペレータを選択しプロパティを開く (ショートカット p)
Port:PCに接続したArduinoのポートを選択 - シリアルデータを分割
DATタブからConvertオペレータを選択・配置してSerialオペレータと結線します。1行でyaw pitch rollの3データが送られているので、Tabでデータを3列に分割します。
Tab(\t)でデータ分割 - シリアルデータの選択
DATタブからSelectオペレータを選択・配置してConvertオペレータと結線して最新のシリアルデータのみを取得するようにします。3つ配置してyaw pitch rollの最新データをそれぞれ取得します。
Select Rows:by Indexを選択
Start Row Index, End Row Index:1を選択して最新のデータ行を取得
Select Cols:by Indexを選択
Start Col Index, End Col Index:それぞれ0, 1, 2を選択してyaw pitch rollを取得 - 最新シリアルデータをCHOPデータに変換
CHOPタブからDAT toオペレータを選択・配置してDAT値のシリアルデータをCHOP用の値に変換します。yaw pitch roll用に3つ配置します。
DATにそれぞれのSelectオペレータをドラッグ
First Column is:Valuesを選択 - 3DCGを配置してyaw pitch rollデータを入力
COMPタブからGeometry、Camera、LightオペレータをTOPタブからRenderオペレータを選択・配置します。それぞれ配置すると自動的に配線されRenderオペレータ右下の青丸クリックでCGが表示されます。
Geometryオペレータとyaw pitch rollデータを接続してCGを動かします。
Geometryオペレータのプロパティ
Rotate:xにroll、yにyaw、zにpitchのDAT toオペレータをそれぞれドラッグ
(ドラッグ前にDAT toオペレータの右下の”+”をクリックしてViewモードにする必要あり)
Scale:x, y, zを0.5に設定
動作
TouchDesignerで簡単に物理センサと3DCGの連動が出来ました。
マジ簡単!いろいろ応用できそうだね♪