Universal KATSDK (1.0系) 導入ガイド
C2シリーズ、Walkシリーズ、Loco系など全製品ラインを単一APIで扱うための、長期メンテナンス版SDKの仕様と実装手順です。
SDKダウンロード (公式)SDK概要とユニバーサル化の変更点
新しい「Universal / KATSDK」では、内部構造とインターフェイスを再設計し、旧個別SDKの機種依存APIを統合しました。
- Mini/Standardごとに別パッケージ
- 独自座標系や独自DLLの呼び出し
- 足裏接地などは独自フラグから自前判定
- HMDとトレッドミルの向きズレ補正は実装者依存
- 全機種対応の共通ネイティブライブラリ経由アクセス
TreadMillData/DeviceDataの共通データモデルExtraInfoC2に接地・スケーティング判定等を事前計算して格納Yaw Correctionとして差分補正角を標準提供
クイックスタート (Unity)
「C2CORE Unity SDK(Universal SDK系)」を前提に、OpenXR + XR Interaction Toolkit構成での最低限の導入パスを想定します。
推奨環境
- OS: Windows 10 / 11(UNITY_STANDALONE_WIN)
- Unity: 2020 LTS 以降(2021〜2022 LTS推奨、OpenXRサポート安定)
- ランタイム: KAT Gateway 最新版(センサー管理・キャリブレーション用)
-
SDKの入手とインポート
KATVR公式サイトのダウンロードページから最新のKAT Unity SDKを入手しインポート。
(KATSDKWarpper.dll,KATNativeSDK.cs,KATXRWalker.cs等が含まれます) -
プロジェクト設定(XR)
XR Plug-in ManagementでOpenXRを有効化し、XR Interaction Toolkitを導入してXR Originを配置します。
-
KATトレッドミルコンポーネントの追加
空のGameObject「KAT Treadmill」を作成し、
KATXRWalkerをアタッチ。XR OriginのTransformを参照設定します。 -
ネイティブSDK初期化の確認
再生前にKAT Gatewayを起動しデバイス接続を確認。プレイ時にコンソール等で
TreadMillDataの更新を確認します。
クイックスタート (Unreal Engine 5.x)
推奨環境
- OS: Windows 10 / 11
- UE: Unreal Engine 5.2〜5.4(VR/OpenXRテンプレート)
- ランタイム: KAT Gateway 最新版
-
プラグイン配置と有効化
ダウンロードしたKAT Unreal SDKをプロジェクトの
Plugins/KATSDKフォルダに配置し、Edit → Pluginsで有効化して再起動。 -
KATコンポーネントの追加
KATTreadmillComponentをレベルに配置し、プレイヤーのBlueprintに「KAT移動同期用」ノード(GetTreadmillData → AddMovementInput)を追加します。
主要APIリファレンス (Unity想定)
共通データ構造
| 構造体・クラス | 説明 | 主なフィールド |
|---|---|---|
| TreadMillData | 1フレーム分のトレッドミル状態 | Velocity, Pose, Sensors |
| DeviceData | 各センサ(H/L/R)の状態 | BatteryLevel, ButtonState, ConnectionStatus |
| ExtraInfoC2 | 歩行解析結果 (Walk C2専用拡張) | IsLeftFootOnGround, IsSkating, StepCount |
代表的な関数 (KATSDKクラス)
bool Initialize() |
ネイティブライブラリの初期化とデバイス検索 |
void Shutdown() |
セッション終了とリソース解放 |
bool IsDeviceConnected() |
トレッドミル本体とセンサーの接続確認 |
TreadMillData GetTreadMillData() |
最新フレームの速度・姿勢等を取得 |
float GetYawCorrection() |
HMD向きとトレッドミル向きの差分角度を取得 |
サンプルコード
Unity / C# (最小構成)
using UnityEngine;
public class SimpleKATWalker : MonoBehaviour
{
public Transform rigRoot; // XR Originのルート
public float speedScale = 1.0f;
void Start()
{
KATSDK.Initialize();
}
void Update()
{
if (!KATSDK.IsDeviceConnected()) return;
TreadMillData data = KATSDK.GetTreadMillData();
Vector3 move = new Vector3(data.velocity.x, 0f, data.velocity.z) * speedScale * Time.deltaTime;
rigRoot.position += move;
float yaw = KATSDK.GetYawCorrection();
rigRoot.rotation = Quaternion.Euler(0f, yaw, 0f);
}
void OnDestroy()
{
KATSDK.Shutdown();
}
}
Unreal Engine / C++ (イメージ)
// MyKATCharacter.cpp
#include "MyKATCharacter.h"
#include "KATSDK.h"
void AMyKATCharacter::BeginPlay()
{
Super::BeginPlay();
bKATInitialized = KATSDK::Initialize();
}
void AMyKATCharacter::Tick(float DeltaSeconds)
{
Super::Tick(DeltaSeconds);
if (!bKATInitialized || !KATSDK::IsDeviceConnected()) return;
FTreadMillData Data;
if (KATSDK::GetTreadMillData(Data))
{
const FVector Forward = GetActorForwardVector();
const FVector Move = Forward * Data.Velocity * DeltaSeconds;
AddMovementInput(Move);
}
}
よくある落とし穴 (FAQ)
または、Unity側で
KATXRWalker の参照(rigRootなど)がインスペクター上で外れている・未設定になっているケースが非常に多いです。KATSDK.GetYawCorrection() を使い、プレイヤーのベース向きをYaw補正に合わせるか、補正をオフにしてHMDの向きを中心に統一するロジックに修正してください。ExtraInfoC2の接地/スケーティング判定を使わず、生速度(Velocity)だけで移動している可能性があります。IsLeftFootOnGround 等を活用し、「足が接地している間のみ速度をキャラクターに反映する」というロジックを追加すると挙動が安定します。より詳細なテクニカルリファレンスについて
KATNativeSDK.csの全フィールド網羅、Unreal Engine 5での正確なBlueprintノード名、およびKAT Gateway連携時のProfile設定例など、より高度で詳細な技術仕様については、KATVR公式の開発者向けドキュメント(英語)をご確認ください。
公式開発者ドキュメント (英語)

