mcpField
A
ar-vr-xr

ar-vr-xr

github.com/travisjneuman開発106112 回インストール1 日前に更新
リポジトリ

ar-vr-xr について

Unity XR、WebXR、ARKit、ARCore、Meta Quest、visionOSを対象としたAR・VR・XR開発ガイドです。SDKの例に加え、性能、快適性、操作性、アクセシビリティの指針をまとめています。

主な機能

  1. 01プラットフォームとSDKの概要
  2. 02Unity XRとWebXRの例
  3. 03RealityKitとVision Proの例
  4. 04パフォーマンス最適化の指針
  5. 05快適性とアクセシビリティの原則

活用シーン

  1. 01XRプロジェクトのプラットフォームとSDK選定
  2. 02快適な空間インタラクションの設計
  3. 03モバイルVRやPCVRの描画調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/travisjneuman/.claude --skill ar-vr-xr

インストール後、Claude Code で/ar-vr-xrを入力して読み込まれたか確認します。

詳細

AR/VR/XR 開発

プラットフォームの概要

プラットフォームSDK対象デバイス
Unity XRXR Interaction ToolkitQuest、Vision Pro、PCVR、モバイル
WebXRThree.js、A-Frame、Babylon.jsWebXR 対応ブラウザー全般
ARKitRealityKit、ARKitiPhone、iPad、Vision Pro
ARCoreSceneform、ARCoreAndroid デバイス
Meta QuestMeta XR SDKQuest 2/3/Pro
Apple Vision ProvisionOS、RealityKitVision Pro

Unity XR

// XR Interaction Toolkit setup
using UnityEngine.XR.Interaction.Toolkit;

public class GrabbableObject : XRGrabInteractable
{
    protected override void OnSelectEntered(SelectEnterEventArgs args)
    {
        base.OnSelectEntered(args);
        // Object grabbed
    }

    protected override void OnSelectExited(SelectExitEventArgs args)
    {
        base.OnSelectExited(args);
        // Object released
    }
}
Unity XR のベストプラクティス
  • 72~120 FPS(プラットフォームによって異なります)を目標にします。フレーム落ちは吐き気の原因になります。
  • ステレオ表示にはシングルパス・インスタンスレンダリングを使用します。
  • 可能な場合はライティングをベイクし、動的ライトは1~2個に制限します。
  • ドローコール数は、モバイル VR では100未満、PCVR では500未満にします。
  • LOD グループを積極的に使用します。VR ではユーザーから遠くの細部は見えません。

WebXR

// Three.js WebXR
import * as THREE from 'three';
import { VRButton } from 'three/addons/webxr/VRButton.js';

const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.xr.enabled = true;
document.body.appendChild(VRButton.createButton(renderer));

renderer.setAnimationLoop((time, frame) => {
    if (frame) {
        const session = renderer.xr.getSession();
        const inputSources = session.inputSources;
        // Handle controller input
    }
    renderer.render(scene, camera);
});

Apple Vision Pro(visionOS)

import SwiftUI
import RealityKit

struct ImmersiveView: View {
    var body: some View {
        RealityView { content in
            let sphere = MeshResource.generateSphere(radius: 0.1)
            let material = SimpleMaterial(color: .blue, isMetallic: true)
            let entity = ModelEntity(mesh: sphere, materials: [material])
            entity.position = [0, 1.5, -1]
            content.add(entity)
        }
        .gesture(TapGesture().targetedToAnyEntity().onEnded { event in
            // Handle tap on entity
        })
    }
}

XR の設計原則

  • 快適性: 人工的な移動は避け、テレポートまたはルームスケール移動を使用します。
  • インタラクション: 抽象的な UI よりも、直接操作(つかむ、指し示す)を優先します。
  • UI の配置: 適切な距離(1~3m)にワールドスペース UI を配置し、頭部に固定された HUD は避けます。
  • パフォーマンス: フレームレートは妥協できません。徹底的に最適化します。
  • アクセシビリティ: 座位モード、調整可能なスケール、色覚特性に配慮したオプションを用意します。
  • 空間オーディオ: 没入感と道案内のために3Dオーディオ(HRTF、アンビソニックス)を使用します。

コメント