はじめに
Reality Composer Proは、GUIで3Dコンテンツを配置したり、Shader Graphでシェーダーを作成することできるツールです
iOS 18からRealityKitのRealityViewが利用できるようになりました
Reality Composer Proで作成したシーンを、RealityViewの非ARモードのVirtual Cameraで表示してみました
(Reality Composer Proで作成したシーンをiOSなどvisionOS以外で利用できるようになったのもXcode16からかも?)
Reality Composer Pro | iOS |
---|---|
Reality Composer Proでシーンを作ってiOSのRealityViewのVirtual Cameraで表示する
アプリターゲットの作成
普通にアプリターゲットを作成します
Reality Composer Pro用のPackageの作成
Xcodeの File > New > Package から新しいLibraryのPackageを作成して、SampleAppのプロジェクトに追加します
RealityKitContentという名前にしました
これは、後で作成するReality Composer Proのプロジェクト名と揃える必要があるようです
Reality Composer Pro用のプロジェクトの作成
Reality Composer Proを起動し、Create New Project...から新しいプロジェクトを作成します
RealityKitContentという名前で適当な場所に保存します
RealityKitContentをコピペする
Reality Composer Proで作成したRealityKitContentを、アプリのRealityKitContentにコピペします
- Package.realitycomposerpro
- Package.swift
- Sources/ 以下
これでXcodeからReality Composer Proで開けるようになります
RealityKitContentの依存関係を追加
SampleAppのFrameworksにRealityKitContentを追加します
RealityViewを実装
cameraをvirtualにします
cameraをvirtualするだけでは表示されず、PerspectiveCameraを明示的に追加する必要があるようです
realityKitContentBundleからSceneをロードして、カメラと同じアンカーにまとめてcontentに追加します
import RealityKit
import RealityKitContent
import SwiftUI
struct ContentView: View {
var body: some View {
RealityView { content in
content.camera = .virtual
let camera = PerspectiveCamera()
camera.camera.fieldOfViewInDegrees = 60
camera.look(at: .zero, from: [0.2, 0.2, 0.2], relativeTo: nil)
let scene = try! await Entity(named: "Scene", in: realityKitContentBundle)
let worldAnchor = AnchorEntity(world: .zero)
worldAnchor.addChild(scene)
worldAnchor.addChild(camera)
content.add(worldAnchor)
}
.ignoresSafeArea()
}
}
Reality Composer Proでコンテンツを作成する
Reality Composer Proで開きます
右上の+ボタンからToy Biplaneなどをダウンロードして追加します
位置は原点に配置しました
また、左の+ボタンからEnvironment > Sky Sphereを追加します
動作確認
実機ビルドすると飛行機とskyboxが表示されます
詰まりポイント
RealityKitContentのPckageを作成後に任意の名前に変更するのはできなさそうでした
また、RealityKitContentのPckage.swiftにReality Composer Pro以外のtargetを追加できなさそうでした
Package.swiftでモジュール管理する場合は、RealityKitContentとは別にPackage.swiftを作成し、そちらで管理するのが良さそうでした
まとめ
Reality Composer Proで作成したシーンを、RealityViewの非ARモードのVirtual Cameraで表示してみました
Package管理周りが手こずりましたが、サクッと実現できました
せっかくなので、Shader GraphでToon Shaderっぽいのを作ってみました
GUIでノードを接続してShaderが作れるのは楽しいです