2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Reality Composer Proでシーンを作ってiOSのRealityViewのVirtual Cameraで表示

Posted at

はじめに

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
image.png image.png

Reality Composer Proでシーンを作ってiOSのRealityViewのVirtual Cameraで表示する

アプリターゲットの作成

普通にアプリターゲットを作成します

image.png

Reality Composer Pro用のPackageの作成

Xcodeの File > New > Package から新しいLibraryのPackageを作成して、SampleAppのプロジェクトに追加します
RealityKitContentという名前にしました
これは、後で作成するReality Composer Proのプロジェクト名と揃える必要があるようです

image.png

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で開けるようになります

image.png

RealityKitContentの依存関係を追加

SampleAppのFrameworksにRealityKitContentを追加します

image.png

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などをダウンロードして追加します
位置は原点に配置しました

image.png

また、左の+ボタンからEnvironment > Sky Sphereを追加します

image.png

動作確認

実機ビルドすると飛行機とskyboxが表示されます

image.png

詰まりポイント

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が作れるのは楽しいです

image.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?