View in English

  • Apple Developer
    • 今すぐ始める

    「今すぐ始める」を詳しく見る

    • 概要
    • 学ぶ
    • Apple Developer Program

    最新情報

    • 最新ニュース
    • Hello Developer
    • プラットフォーム

    プラットフォームを詳しく見る

    • Appleプラットフォーム
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    特集

    • デザイン
    • 配信
    • ゲーム
    • アクセサリ
    • Web
    • Home
    • CarPlay
    • テクノロジー

    テクノロジーを詳しく見る

    • 概要
    • Xcode
    • Swift
    • SwiftUI

    特集

    • アクセシビリティ
    • App Intent
    • Apple Intelligence
    • ゲーム
    • 機械学習とAI
    • セキュリティ
    • Xcode Cloud
    • コミュニティ

    コミュニティを詳しく見る

    • 概要
    • 「Appleに相談」イベント
    • コミュニティによるイベント
    • デベロッパフォーラム
    • オープンソース

    特集

    • WWDC
    • Swift Student Challenge
    • デベロッパストーリー
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Center
    • ドキュメント

    ドキュメントを詳しく見る

    • ドキュメントライブラリ
    • テクノロジー概要
    • サンプルコード
    • ヒューマンインターフェイスガイドライン
    • ビデオ

    リリースノート

    • 注目のアップデート
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • ダウンロード

    ダウンロードを詳しく見る

    • すべてのダウンロード
    • オペレーティングシステム
    • アプリ
    • デザインリソース

    特集

    • Xcode
    • TestFlight
    • フォント
    • SF Symbols
    • Icon Composer
    • サポート

    サポートを詳しく見る

    • 概要
    • ヘルプガイド
    • デベロッパフォーラム
    • フィードバックアシスタント
    • お問い合わせ

    特集

    • アカウントヘルプ
    • App Reviewガイドライン
    • App Store Connectヘルプ
    • 近日導入予定の要件
    • 契約およびガイドライン
    • システムステータス
  • クイックリンク

    • イベント
    • ニュース
    • Forum
    • サンプルコード
    • ビデオ
 

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • Summary
  • コード
  • XcodeによるReality Composer Pro 3の機能の拡張

    Reality Composer Pro 3を活用して、より大規模で先進的な空間プロジェクトを構築しましょう。カスタムコンポーネントの編集、カスタムシステムの実行、独自のScriptGraphノードの構築を可能にするプロジェクト固有のプラグインを作成して、空間オーサリングワークフローを高度にコントロールする方法について解説します。

    関連する章

    • 0:00 - Introduction
    • 2:00 - Extending the editor
    • 4:51 - Custom components and systems
    • 10:32 - Controlling the water surface
    • 13:19 - Custom animation actions
    • 17:12 - Custom Script Graph nodes
    • 21:16 - Next steps

    リソース

      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC26

    • 進化したRealityKitの機能
    • Reality Composer Pro 3によるノーコードでのゲーム設計
    • Reality Composer Pro 3による空間シーンのイテレーションの高速化
    • Reality Composer Pro 3による空間ワークフローの強化
  • このビデオを検索
    • 6:08 - Cauldron component

      // Add a component to represent the water level
      
      import RealityKit
      
      public struct Cauldron: Component, Codable {
          public var waterLevel: Float
      
          enum CodingKeys: CodingKey {
              case waterLevel
          }
      }
    • 6:42 - CauldronSystem

      // Add a system to control the water level
      
      import RealityKit
      
      public struct CauldronSystem: System {
          let query = EntityComponentQuery(Cauldron.self)
          public init(scene: Scene) {}
      
          public func update(context: SceneUpdateContext) {
              for (entity, cauldron) in context.entities(matching: query) {
                  guard let water = entity.findEntity(named: "Cauldron_Water_mesh")
                      else { continue }
                  water.setPosition(SIMD3<Float>(0, 1, 0) * cauldron.waterLevel, relativeTo: entity)
              }
          }
      }
    • 7:00 - RCPCustomComponentsPlugin

      // Make sure that Reality Composer Pro 3 knows about the Cauldron and CauldronSystem
      
      import RealityComposerPro
      
      final class RCPCustomComponentsPlugin: RealityComposerProPlugin {
          public func setup(context: any RealityComposerProContext) {
              context.registerComponent(Cauldron.self)
              context.registerSystem(CauldronSystem.self)
          }
      }
      
      @_cdecl("createRealityComposerProPlugin")
      public func createRealityComposerProPlugin() -> UnsafeMutableRawPointer {
          return RCPCustomComponentsPlugin().passRetained()
      }
    • 10:49 - Cauldron component with vortex properties

      // Properties to control water surface
      
      import RealityKit
      
      public struct Cauldron: Component, Codable {
          public var waterLevel: Float
          public var rotationSpeed: Float
          public var minWaterLevel: Float
          public var maxWaterLevel: Float
          public var vortexCoeff: Float
      }
    • 11:05 - CauldronSystem update with ShaderGraph

      public func update(context: SceneUpdateContext) {
          for (entity, cauldron) in context.entities(matching: query) {
              guard let water = entity.findEntity(named: "Cauldron_Water_mesh") else { continue }
              water.setPosition(SIMD3<Float>(0, 1, 0) * cauldron.waterLevel, relativeTo: entity)
      
              guard var model = water.components[ModelComponent.self] else { continue }
              guard var mat = model.materials.first as? ShaderGraphMaterial else { continue }
              let surface = computeSurface(cauldron: cauldron)
              try? mat.setParameter(name: "Level Radius", value: .float(surface.levelRadius))
              try? mat.setParameter(name: "Lowest Point",
                  value: .float(cauldron.waterLevel - surface.lowestPoint))
              try? mat.setParameter(name: "Height Change", value: .float(surface.heightChange))
              try? mat.setParameter(name: "Level Coeff", value: .float(surface.levelCoeff))
              try? mat.setParameter(name: "Is Level", value: .bool(surface.isLevel))
              model.materials[0] = mat
              water.components.set(model)
          }
      }
    • 13:25 - SetWaterLevelAction

      // Custom action for setting the water level of the Cauldron
      
      import RealityKit
      
      public struct SetWaterLevelAction: EntityAction, Codable {
          // Parameters for the action
          public let startWaterLevel: Float
          public let endWaterLevel: Float
      
          // Required by EntityAction protocol
          public var animatedValueType: (any AnimatableData.Type)? { Transform.self }
      }
    • 14:05 - SetWaterLevelAction subscribe

      extension SetWaterLevelAction {
          static func subscribe() {
              Task { @MainActor in
                  SetWaterLevelAction.subscribe(to: .updated) { event in
                      let normalizedTime = (event.playbackController.time - event.startTime) /
                          event.duration
                      let action = event.action
                      let currentLevel = action.startWaterLevel +
                          Float(normalizedTime) * (action.endWaterLevel - action.startWaterLevel)
                      guard let entity = event.targetEntity else { return }
                      guard var cauldron = entity.components[Cauldron.self] else { return }
                      cauldron.waterLevel = currentLevel
                      entity.components.set(cauldron)
                  }
              }
          }
      }
    • 14:56 - RCPCustomComponentsPlugin with action

      // Make sure that Reality Composer Pro 3 knows about the SetWaterLevelAction
      
      import RealityComposerPro
      
      final class RCPCustomComponentsPlugin: RealityComposerProPlugin {
          public func setup(context: any RealityComposerProContext) {
              context.registerComponent(Cauldron.self)
              context.registerSystem(CauldronSystem.self)
      
              context.registerAction(SetWaterLevelAction.self)
              SetWaterLevelAction.subscribe()
          }
      }
      
      @_cdecl("createRealityComposerProPlugin")
      public func createRealityComposerProPlugin() -> UnsafeMutableRawPointer {
          return RCPCustomComponentsPlugin().passRetained()
      }
    • 17:32 - Cauldron with @Scriptable macro

      // Expose Cauldron to Script Graphs
      
      import RealityKit
      import RealityKitScripting
      import RealityKitScriptingMacros
      
      @Scriptable
      public struct Cauldron: Component, Codable {
          public var waterLevel: Float
          public var rotationSpeed: Float
          public var minWaterLevel: Float
          public var maxWaterLevel: Float
          public var vortexCoeff: Float
      }
    • 18:08 - Register scripting module

      // Register scripting module
      
      public func setup(context: any RealityComposerProContext) {
          context.registerComponent(Cauldron.self)
          context.registerSystem(CauldronSystem.self)
      
          context.registerAction(SetWaterLevelAction.self)
          SetWaterLevelAction.subscribe()
      
          Task { @MainActor in
              let config = RKS.Configuration(id: "ChaparralVillage")
                  .onInitialize { _ in
                  [
                      Module("ChaparralVillage") {
                          Cauldron.SchemaProvider.schema
                      }
                  ]
              }
              try! RKS.addConfiguration(config)
          }
      }
    • 0:00 - Introduction
    • An overview of the Reality Composer Pro 3 plugin system, showing how Xcode and the editor share a project to let engineers and artists collaborate — with custom components, systems, animation actions, and Script Graph nodes all running live inside the editor.

    • 2:00 - Extending the editor
    • Learn how the Reality Composer Pro 3 plugin system works: how the editor and Xcode share a single git repository, how custom Swift code is compiled into a dynamic library, and how the editor loads and trusts plugins at runtime.

    • 4:51 - Custom components and systems
    • Build a Cauldron component and CauldronSystem using RealityKit, expose them to the editor via a RealityComposerProPlugin, and see the water level property update in real time as artists adjust values in the inspector.

    • 10:32 - Controlling the water surface
    • Extend the Cauldron component with vortex shader properties and update the system to drive a ShaderGraphMaterial at runtime, enabling artists to control vortex depth and rotation speed directly from the Reality Composer Pro 3 inspector.

    • 13:19 - Custom animation actions
    • Implement the EntityAction protocol to create a SetWaterLevelAction that animates the cauldron water level on the sequencer timeline, subscribe to animation update events to interpolate the level, and register the action with the editor plugin.

    • 17:12 - Custom Script Graph nodes
    • Use the @Scriptable macro to expose a custom component to Reality Composer Pro 3 Script Graphs, register a scripting module in the plugin setup, and see the generated nodes appear in the Script Graph editor for no-code artist workflows.

    • 21:16 - Next steps
    • Recap of the plugin capabilities covered — custom components, systems, animation actions, and Script Graph nodes — with recommendations to explore the Explore Advances in RealityKit and Supercharge Your Spatial Workflows sessions.

Developer Footer

  • ビデオ
  • WWDC26
  • XcodeによるReality Composer Pro 3の機能の拡張
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • Apple Intelligence
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • Mini Apps Partner Program
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    最新ニュースを読む。
    Apple Developerアプリを入手する。
    Copyright © 2026 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン