コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.

複数デバイス

AUTD3 は複数のデバイスをデイジーチェーン接続して大きな一つのアレイを構成できる. SDK は複数台を接続しても透過的に扱えるように設計されている.

複数台を使用する場合は Geometry::new の引数に, 接続したデバイスの順で Autd3 を指定する. 以下では 2 台を接続する場合の手順を示す.

例えば 1 台目を左, 2 台目を右に並べて接続し, グローバル座標を 1 台目のローカル座標と 同じようにとるとすると, コードは以下の通りになる.

Geometry::new(vec![
Autd3::new(Point3::origin(), UnitQuaternion::identity()),
Autd3::new(
Point3::new(Autd3::DEVICE_WIDTH, 0.0, 0.0),
UnitQuaternion::identity(),
),
]);

ここで第1引数はグローバル座標におけるデバイスの位置を, 第2引数はデバイスの回転を表す. なお Autd3::DEVICE_WIDTH はデバイスの (基板外形を含めた) 横幅である.

モデルを読み込み中…
2 台を +x 方向に DEVICE_WIDTH ずらして並べた配置

SDK で使用するグローバル座標の原点や向きは, ユーザーが自由に設定できる. 例えば グローバル座標を 2 台目のローカル座標と同じようにとると, 1 台目を -x 方向へずらした 次のコードになる.

Geometry::new(vec![
Autd3::new(
Point3::new(-Autd3::DEVICE_WIDTH, 0.0, 0.0),
UnitQuaternion::identity(),
),
Autd3::new(Point3::origin(), UnitQuaternion::identity()),
]);
モデルを読み込み中…
グローバル座標を 2 台目のローカル座標に合わせた配置

デバイスの回転は Autd3::new の第 2 引数 (UnitQuaternion) で指定する. 例えば 2 台目を +z 方向に置き, y 軸まわりに 90° 回転させると次のようになる.

Geometry::new(vec![
Autd3::new(Point3::origin(), UnitQuaternion::identity()),
Autd3::new(
Point3::new(0.0, 0.0, Autd3::DEVICE_WIDTH),
UnitQuaternion::from_axis_angle(&Vector3::y_axis(), FRAC_PI_2),
),
]);
モデルを読み込み中…
2 台目を +z へ置き, y 軸まわりに 90° 回転させた配置