これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 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(), ),]);Geometry( [ Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0]), Autd3( origin=(Autd3.DEVICE_WIDTH, 0.0, 0.0), rotation=(1.0, 0.0, 0.0, 0.0), ), ])new Geometry(new[]{ new Autd3(Vector3.Zero, Quaternion.Identity), new Autd3( new Vector3(Autd3.DeviceWidth, 0.0f, 0.0f), Quaternion.Identity ),});ここで第1引数はグローバル座標におけるデバイスの位置を, 第2引数はデバイスの回転を表す.
なお Autd3::DEVICE_WIDTH はデバイスの (基板外形を含めた) 横幅である.
モデルを読み込み中…
グローバル座標の設定
Section titled “グローバル座標の設定”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()),]);Geometry( [ Autd3( origin=(-Autd3.DEVICE_WIDTH, 0.0, 0.0), rotation=(1.0, 0.0, 0.0, 0.0), ), Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0]), ])new Geometry(new[]{ new Autd3( new Vector3(-Autd3.DeviceWidth, 0.0f, 0.0f), Quaternion.Identity ), new Autd3(Vector3.Zero, Quaternion.Identity),});モデルを読み込み中…
デバイスの回転は 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), ),]);Geometry( [ Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0]), Autd3( origin=(0.0, 0.0, Autd3.DEVICE_WIDTH), rotation=Rotation.from_euler("y", 90.0, degrees=True), ), ])new Geometry(new[]{ new Autd3(Vector3.Zero, Quaternion.Identity), new Autd3( new Vector3(0.0f, 0.0f, Autd3.DeviceWidth), Quaternion.CreateFromAxisAngle(Vector3.UnitY, MathF.PI / 2.0f) ),});モデルを読み込み中…