ForceSeatMIをプロジェクトに組み込むには、以下の手順に従ってください。
  1. Unity 3Dプロジェクトを作成
  2. プロジェクトのAssetsディレクトリ内にForceSeatMIディレクトリを作成します。
  3. 以下のファイルをForceSeatMIディレクトリにコピーしてください(参考として、当社のUnity 3Dサンプルをご確認いただけます)。
    • ForceSeatMI.cs
    • ForceSeatMI_Common.cs
    • ForceSeatMI_Positioning.cs
    • ForceSeatMI_Status.cs
    • ForceSeatMI_TactileTranscuders.cs
    • ForceSeatMI_Telemetry.cs
    • ForceSeatMi_UnityAeroplane.cs
    • ForceSeatMi_UnityVehicle.cs
ForceSeatMI APIは、ForceSeatPMソフトウェアの一部としてインストールされるDLLを使用します。お使いのコンピューターにForceSeatPMがインストールされていることを確認してください。

アプリケーション:位置制御

例:
  • TableLogPos_Unityは、抽象(論理、パーセント)単位での位置決めを示します。
  • TablePhyPos_Unityは、実世界の単位(逆運動学)での位置決めを示します。
両方の例で、ForceSeatPMの組み込みプロファイルSDK – Positioningを使用してください。 位置決めアプリケーションでは、生のForceSeatMI APIを使用する必要があります。一般的な操作手順は次のとおりです。
  1. ForceSeatMIをインポート
    using MotionSystems;
  2. クラス内にAPIオブジェクト変数を作成します:
    private  ForceSeatMI m_fsmi;
  3. Startメソッドで初期化します:
    m_fsmi  = new  ForceSeatMI();
  4. すべてが読み込まれている場合は、次を呼び出します:
    if (m_fsmi.IsLoaded())
    {
      m_fsmi.BeginMotionControl();
    }
  5. SIMは、以下のいずれかの関数を使用して一定間隔で位置決めデータを送信する必要があります:
    m_fsmi.SendTopTablePosLog(...);
    m_fsmi.SendTopTablePosPhy(...);
    m_fsmi.SendTopTableMatrixPhy(...);
  6. シミュレーション終了時に次を呼び出します:
    if (m_fsmi.IsLoaded())
    {
      m_fsmi.EndMotionControl();
      m_fsmi.Dispose();
    }
Unity Editor Pos

コード

以下のコードはTableLogPos_Unityの例からのものです。
// FSMI api
private  ForceSeatMI m_fsmi;
 
// プラットフォームに送信される論理座標での位置
private  FSMI_TopTablePositionLogical m_platformPosition  = new  FSMI_TopTablePositionLogical();
 
void  Start  ()
{
  // ForceSeatPMのインストールディレクトリからForceSeatMIライブラリを読み込みます
  // ForceSeatMI - BEGIN
  m_fsmi  = new  ForceSeatMI();
 
  if (m_fsmi.IsLoaded())
  {
    // プラットフォームのコンポーネントを検索
  m_shaft  =  GameObject.Find("Shaft");
  m_board  =  GameObject.Find("Board");
 
  SaveOriginPosition();
  SaveOriginRotation();
 
    // データ構造をクリアし、正しいサイズを設定して準備します
  m_platformPosition.mask = 0;
  m_platformPosition.structSize = (byte)Marshal.SizeOf(m_platformPosition);
 
  m_platformPosition.state =  FSMI_State.NO_PAUSE;
 
    // デモアプリケーションで変更可能なフィールドを設定します
  m_platformPosition.mask =  FSMI_POS_BIT.STATE |  FSMI_POS_BIT.POSITION;
 
  m_fsmi.BeginMotionControl();
 
  SendDataToPlatform();
    // ForceSeatMI - END
  }
  else
  {
  Debug.LogError("ForceSeatMIライブラリが見つかりません。ForceSeatPMをインストールしてください。");
  }
}
 
void  OnDestroy()
{
  // ForceSeatMI - BEGIN
  if (m_fsmi.IsLoaded())
  {
  m_fsmi.EndMotionControl();
  m_fsmi.Dispose();
  }
  // ForceSeatMI - END
}
 
private void  SendDataToPlatform()
{
  // パラメータを論理単位に変換
  // ForceSeatMI - BEGIN
  m_platformPosition.state =  FSMI_State.NO_PAUSE;
  m_platformPosition.roll = (short)Mathf.Clamp(m_roll  /  DRAWING_ROLL_MAX  *  PLATFORM_POSITION_LOGIC_MAX, PLATFORM_POSITION_LOGIC_MIN, PLATFORM_POSITION_LOGIC_MAX);
  m_platformPosition.pitch = (short)Mathf.Clamp(m_pitch  /  DRAWING_PITCH_MAX  *  PLATFORM_POSITION_LOGIC_MAX, PLATFORM_POSITION_LOGIC_MIN, PLATFORM_POSITION_LOGIC_MAX);
  m_platformPosition.heave = (short)Mathf.Clamp(m_heave  /  DRAWING_HEAVE_MAX  *  PLATFORM_POSITION_LOGIC_MAX, PLATFORM_POSITION_LOGIC_MIN, PLATFORM_POSITION_LOGIC_MAX);
 
  // データをプラットフォームへ送信
  m_fsmi.SendTopTablePosLog(ref  m_platformPosition);
  // ForceSeatMI - END
}

アプリケーション:車両シミュレーション

例: Telemetry_Veh_Unity(ForceSeatPMの組み込みプロファイルSDK – Vehicle Telemetryを使用) 車両シミュレーションアプリケーションでは、ForceSeatMI_UnityVehicleヘルパーインターフェースを使用できます。一般的な操作手順は次のとおりです。
  1. クラス内にAPIオブジェクト変数を作成します:
    private  ForceSeatMI_UnityVehicle m_Api;
  2. Startメソッドで初期化します:
    m_Api  = new  ForceSeatMI_UnityVehicle();
  3. 次を呼び出します:
    m_Api.Begin();
  4. SIMは、次の関数を使用して一定間隔でテレメトリデータを送信する必要があります:
      m_Api.Tick(...);
  5. シミュレーション終了時に次を呼び出します:
    m_Api.End();
Unity Editor Veh

コード

以下のコードはTelemetry_Veh_Unityの例からのものです。
private void  Start()
{
  m_Rigidbody  =  GetComponent();
 
  // ForceSeatMI - BEGIN
  m_Api  = new  ForceSeatMI_UnityVehicle();
  m_Api.Begin();
  // ForceSeatMI - END
}
 
private void  OnDestroy()
{
  // ForceSeatMI - BEGIN
  m_Api.End();
  // ForceSeatMI - END
}
 
private void  Move(float  steering,  float  accel,  float  footbrake,  float  handbrake)
{
  ...
 
  // ForceSeatMI - BEGIN
  m_Api.Tick(m_Rigidbody, Time.deltaTime,  false,  0,  0, m_CurrentGearNumber);
  // ForceSeatMI - END
}

アプリケーション:フライトシミュレーション

例: Telemetry_Fly_Unity(ForceSeatPMの組み込みプロファイルSDK – Plane Telemetryを使用) フライトシミュレーションアプリケーションでは、ForceSeatMi_UnityAeroplaneヘルパーインターフェースを使用できます。一般的な操作手順は次のとおりです。
  1. クラス内にAPIオブジェクト変数を作成します:
    private  ForceSeatMi_UnityAeroplane m_Api;
  2. Startメソッドで初期化します:
    m_Api  = new  ForceSeatMi_UnityAeroplane();
  3. 次を呼び出します:
    m_Api.Begin();
  4. SIMは、次の関数を使用して一定間隔でテレメトリデータを送信する必要があります:
      m_Api.Tick(...);
  5. シミュレーション終了時に次を呼び出します:
    m_Api.End();
Unity Editor Fly

コード

以下のコードはTelemetry_Fly_Unityの例からのものです。
private void  Start()
{
  m_Rigidbody  =  GetComponent();
  m_OriginalDrag  =  m_Rigidbody.drag;
  m_OriginalAngularDrag  =  m_Rigidbody.angularDrag;
 
  // ForceSeatMI - BEGIN
  m_Api  = new  ForceSeatMI_UnityAeroplane();
  m_Api.Begin();
  // ForceSeatMI - END
}
 
private void  OnDestroy()
{
  // ForceSeatMI - BEGIN
  m_Api.End();
  // ForceSeatMI - END
}
 
private void  FixedUpdate()
{
  ...
 
  // ForceSeatMI - BEGIN
  m_Api.Tick(m_Rigidbody, Time.deltaTime,  false);
  // ForceSeatMI - END
}
Sign up to our newsletter
Always be the first to know about new products, updates and company news
  • このフィールドは入力チェック用です。変更しないでください。