DEVELOPER DOCUMENTATION

Universal KATSDK (1.0系) 導入ガイド

C2シリーズ、Walkシリーズ、Loco系など全製品ラインを単一APIで扱うための、長期メンテナンス版SDKの仕様と実装手順です。

SDKダウンロード (公式)

SDK概要とユニバーサル化の変更点

新しい「Universal / KATSDK」では、内部構造とインターフェイスを再設計し、旧個別SDKの機種依存APIを統合しました。

旧仕様 (Legacy)
  • Mini/Standardごとに別パッケージ
  • 独自座標系や独自DLLの呼び出し
  • 足裏接地などは独自フラグから自前判定
  • HMDとトレッドミルの向きズレ補正は実装者依存
新仕様 (Universal)
  • 全機種対応の共通ネイティブライブラリ経由アクセス
  • 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 最新版(センサー管理・キャリブレーション用)
  1. SDKの入手とインポート

    KATVR公式サイトのダウンロードページから最新のKAT Unity SDKを入手しインポート。
    (KATSDKWarpper.dll, KATNativeSDK.cs, KATXRWalker.cs等が含まれます)

  2. プロジェクト設定(XR)

    XR Plug-in ManagementでOpenXRを有効化し、XR Interaction Toolkitを導入してXR Originを配置します。

  3. KATトレッドミルコンポーネントの追加

    空のGameObject「KAT Treadmill」を作成し、KATXRWalkerをアタッチ。XR OriginのTransformを参照設定します。

  4. ネイティブSDK初期化の確認

    再生前にKAT Gatewayを起動しデバイス接続を確認。プレイ時にコンソール等でTreadMillDataの更新を確認します。

クイックスタート (Unreal Engine 5.x)

推奨環境

  • OS: Windows 10 / 11
  • UE: Unreal Engine 5.2〜5.4(VR/OpenXRテンプレート)
  • ランタイム: KAT Gateway 最新版
  1. プラグイン配置と有効化

    ダウンロードしたKAT Unreal SDKをプロジェクトの Plugins/KATSDK フォルダに配置し、Edit → Pluginsで有効化して再起動。

  2. 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)

Q. Unityで動いているのに、キャラクターが動かない
A. KAT Gateway側でデバイスが接続・ペアリングされていないか、ゲーム用プロフィールが未設定の可能性があります。GatewayのDevice ManagerとConfiguration画面を確認してください。
または、Unity側で KATXRWalker の参照(rigRootなど)がインスペクター上で外れている・未設定になっているケースが非常に多いです。
Q. 歩くと勝手に回転する/向きが合わない
A. Yaw Correctionを適切に適用していないか、HMD向きとトレッドミル向きを混在させています。KATSDK.GetYawCorrection() を使い、プレイヤーのベース向きをYaw補正に合わせるか、補正をオフにしてHMDの向きを中心に統一するロジックに修正してください。
Q. 足踏みしているのに移動が滑る/すり足になる
A. ExtraInfoC2の接地/スケーティング判定を使わず、生速度(Velocity)だけで移動している可能性があります。IsLeftFootOnGround 等を活用し、「足が接地している間のみ速度をキャラクターに反映する」というロジックを追加すると挙動が安定します。
Q. Unityバージョン違いでビルドエラーが出る
A. 非推奨になった旧SteamVR依存コンポーネントをプロジェクトに併用している可能性があります。Universal SDKでは OpenXR + XR Interaction Toolkit の構成を前提として設計されています。旧SDK(Legacy)のファイルがプロジェクト内に残っていないか確認してください。

より詳細なテクニカルリファレンスについて

KATNativeSDK.csの全フィールド網羅、Unreal Engine 5での正確なBlueprintノード名、およびKAT Gateway連携時のProfile設定例など、より高度で詳細な技術仕様については、KATVR公式の開発者向けドキュメント(英語)をご確認ください。

公式開発者ドキュメント (英語)