開発者向けリソース
Arcturus Vision Camera を活用する開発者向けのガイド、サンプル、リソースです。
お探しの情報が見つかりませんか? この開発者ページは公開したばかりで、今後も内容を充実させていきます。 不足していると思う情報をお知らせください。
アクセサリーを作る方へ
新着カメラ外形の参照モデル
Steam Frame 上部に装着するカメラの外付けケースやアクセサリーの設計にご利用ください。同じ簡略化された外形メッシュを STL と Blender 形式でダウンロードできます。
おおよその寸法
79.987 × 25.703 × 14.114 mm

ゲームでパススルーを使用する
カメラデータへのアクセスをお探しですか?
カメラに直接アクセスする API はまだ提供していません。用途についての開発者からのお問い合わせを受け付けています。 直接アクセスについてサポートに問い合わせる、またはDiscord に参加する
Local VR のみ対応。 現時点では、パススルー合成は Steam Frame 上で実行するアプリで利用できます。PC からの Streamed VR には対応していません。
Unity ゲームでは Unity OpenXR プラグインと、以下の環境ブレンド機能を使用します。Unreal Engine では Steam Frame と Lepton 向けの Android ARM64 手順を参照してください。独自エンジンやネイティブアプリでは OpenXR を直接使用します。3つの構成はいずれも同じ標準の環境ブレンドモードを使います。

01Unity OpenXR を有効にする
Valve の Unity 組み込みガイドに従って、Unity プロジェクトを Steam Frame 向けに設定します。
02出力アルファを保持する
Camera コンポーネントを透明な黒でクリアするように設定し、スカイボックスや不透明な背景を取り除き、コンポジターまでアルファが保持されるようにレンダリングエフェクトを設定します。
03アルファブレンドを要求する
以下の EnvironmentBlendFeature.cs を追加し、Android の OpenXR 機能設定で「Arcturus: Environment Blend」を有効にします。この機能は OpenXR セッションの開始時に必要なブレンドモードを適用します。
EnvironmentBlendFeature.cs
using UnityEngine; using UnityEngine.XR.OpenXR.Features; using UnityEngine.XR.OpenXR.NativeTypes; #if UNITY_EDITOR using UnityEditor; using UnityEditor.XR.OpenXR.Features; #endif namespace Arcturus.Passthrough { // Reusable part of the sample. No camera textures or vendor passthrough extension. #if UNITY_EDITOR [UnityEditor.XR.OpenXR.Features.OpenXRFeature(UiName = "Arcturus: Environment Blend", Desc = "Request core OpenXR alpha blending for compositor passthrough.", Company = "Arcturus", Version = "0.1.0", FeatureId = "vision.arcturus.sample.environment-blend", BuildTargetGroups = new[] { BuildTargetGroup.Android, BuildTargetGroup.Standalone })] #endif public sealed class EnvironmentBlendFeature : OpenXRFeature { public bool SessionRunning { get; private set; } public bool PassthroughRequested { get; private set; } = true; public XrEnvironmentBlendMode ReportedMode => GetEnvironmentBlendMode(); protected override void OnSessionBegin(ulong session) { SessionRunning = true; Apply(); } protected override void OnSessionEnd(ulong session) => SessionRunning = false; protected override void OnSessionDestroy(ulong session) => SessionRunning = false; protected override void OnInstanceDestroy(ulong instance) => SessionRunning = false; public void RequestPassthrough(bool enabled) { PassthroughRequested = enabled; if (SessionRunning) Apply(); } void Apply() { var mode = PassthroughRequested ? XrEnvironmentBlendMode.AlphaBlend : XrEnvironmentBlendMode.Opaque; SetEnvironmentBlendMode(mode); // The native plugin applies this asynchronously. Read the reported mode later. Debug.Log($"[Passthrough] Requested {mode}; waiting for native submission."); } } }
ゲームからモードを切り替える
RequestPassthrough を呼び出して、パススルー合成とデフォルトの不透明合成モードを切り替えます。
using Arcturus.Passthrough;
using UnityEngine.XR.OpenXR;
var feature = OpenXRSettings.Instance
.GetFeature<EnvironmentBlendFeature>();
feature.RequestPassthrough(true);UNITY OPENXR SAMPLE
Unity で作るシンプルなパススルーゲーム
自由に開いて変更できる、オリジナルの Unity サンプルです。3 つのキューブをつかみ、半透明のカウンターに積み重ねたり、描画されない床に落としたりできます。

2026年9月14日 · 開発用ビルド
オリジナルのサンプルコードは MIT ライセンス。Unity と Valve の依存パッケージにはそれぞれのライセンスが適用されます。 チェックサム
参考ドキュメント
Unreal Engine 5.8.3、Binned2、Vulkan、アルファ合成、Lepton 経由の配置を設定します。
Unreal Engine の手順を読むネイティブ ARM64(Lepton なし)をご希望ですか? 手順をご希望の方はお知らせください!
01アルファ対応のスワップチェーンを要求する
xrEnumerateSwapchainFormats が返す形式から、アルファチャンネルを持つスワップチェーン形式を選択します。
02アルファブレンドモードを使用する
パススルー合成を要求するには、XrFrameEndInfo の environmentBlendMode フィールドを XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND に設定し、xrEndFrame に渡します。
なお、xrEnumerateEnvironmentBlendModes を使用して、ランタイムがこのブレンドモードに対応しているかどうかを確認できます。
03アルファの事前乗算
アプリケーションが事前乗算済みアルファを使用していない場合は、XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT を送信する各 XrCompositionLayerBaseHeader の flags フィールドに設定してください。これにより、ランタイムがアプリのコンテンツとパススルーを正しくブレンドできます。
NATIVE OPENXR SAMPLE
ネイティブ OpenXR サンプル
パススルーとアルファブレンドされたキューブを描画する、最小構成の C++/Vulkan サンプルです。ヘッドセットに転送し、デバイス上で直接ビルドして実行できます。
オリジナルのサンプルコードは MIT ライセンス。OpenXR の依存関係にはそれぞれのライセンスが適用されます。 チェックサム