View in English

  • Apple Developer
    • 시작하기

    시작하기 탐색

    • 개요
    • 알아보기
    • Apple Developer Program

    알림 받기

    • 최신 뉴스
    • Hello Developer
    • 플랫폼

    플랫폼 탐색

    • Apple 플랫폼
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    피처링

    • 디자인
    • 배포
    • 게임
    • 액세서리
    • 웹
    • 홈
    • CarPlay
    • 기술

    기술 탐색

    • 개요
    • Xcode
    • Swift
    • SwiftUI

    피처링

    • 손쉬운 사용
    • 앱 인텐트
    • Apple Intelligence
    • 게임
    • 머신 러닝 및 AI
    • 보안
    • Xcode Cloud
    • 커뮤니티

    커뮤니티 탐색

    • 개요
    • Apple과의 만남 이벤트
    • 커뮤니티 주도 이벤트
    • 개발자 포럼
    • 오픈 소스

    피처링

    • WWDC
    • Swift Student Challenge
    • 개발자 이야기
    • App Store 어워드
    • Apple 디자인 어워드
    • 문서

    문서 탐색

    • 문서 라이브러리
    • 기술 개요
    • 샘플 코드
    • 휴먼 인터페이스 가이드라인
    • 비디오

    릴리즈 노트

    • 피처링 업데이트
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • 다운로드

    다운로드 탐색

    • 모든 다운로드
    • 운영 체제
    • 애플리케이션
    • 디자인 리소스

    피처링

    • Xcode
    • TestFlight
    • 서체
    • SF Symbols
    • Icon Composer
    • 지원

    지원 탐색

    • 개요
    • 도움말
    • 개발자 포럼
    • 피드백 지원
    • 문의하기

    피처링

    • 계정 도움말
    • 앱 심사 지침
    • App Store Connect 도움말
    • 새로 추가될 요구 사항
    • 계약 및 지침
    • 시스템 상태
  • 빠른 링크

    • 이벤트
    • 뉴스
    • 포럼
    • 샘플 코드
    • 비디오
 

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 코드
  • RealityKit의 개선 사항 살펴보기

    앱과 게임을 그 어느 때보다 더 사실적이고 몰입감 넘치게 만들 수 있도록 설계된 RealityKit의 최신 혁신 기술을 알아보세요. 인터랙티브 천 시뮬레이션, NavMesh 경로 탐색, 혼합 현실 조명, 향상된 공간 음향을 위한 맞춤 설정 가능한 리버브 메시 등 강력한 새 기능을 살펴보세요. 향상된 그림자, 캐릭터 렌더링 관련 개선 사항, 가우시안 스플래팅 지원으로 시각적 충실도를 높여 보세요.

    챕터

    • 0:00 - Introduction
    • 2:00 - Lighting and shadows
    • 7:44 - Navigation mesh
    • 11:01 - Cloth simulation
    • 13:42 - Performance
    • 17:09 - 3D Gaussian splats
    • 19:08 - Immersive audio
    • 22:42 - Next steps

    리소스

    • Gaussian splats on visionOS
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC26

    • Reality Composer Pro 3로 공간 워크플로 강화하기
    • Reality Composer Pro 3로 더 빠르게 공간 장면 반복하기
    • Reality Composer Pro 3로 코드 없는 게임을 디자인하기
    • Xcode로 Reality Composer Pro 3 기능 확장하기
  • 비디오 검색…
    • 4:02 - Soft shadows

      // Enable soft shadows for the hearth spotlight
          
      guard var shadow = hearthSpotlight.components[SpotLightComponent.Shadow.self] else {
          // handle error
      }
      shadow.lightSize = 0.7 // meters
          
      shadow.quality = .medium // or .high
      // shadow.quality = .low // will result in hard shadows
          
      hearthSpotlight.components.set(shadow)
    • 6:13 - Projective textures

      // Create one of the planetarium spotlights
          
      let spotLightEntity = Entity()
      spotLightEntity.components.set(SpotLightComponent(
          color: .white,
          intensity: intensity,
          innerAngleInDegrees: innerAngle,
          outerAngleInDegrees: outerAngle,
          attenuationRadius: attenuationRadius,
      ))
          
      let projectiveTexture: TextureResource = generateStarsAndNebulaeTexture()
      spotLightEntity.components.set(SpotLightComponent.ProjectiveTexture(
          texture: projectiveTexture
      ))
    • 7:13 - Physical space lighting

      // Enable physical space lighting
          
      spotLightEntity.components.set(SpotLightComponent.SurroundingsLight())
    • 9:46 - Querying the navigation mesh

      // Querying the navigation mesh in Chaparral Village
      
      extension Entity {
          public func navigate(/* ... */) async {
              let navigator = try! NavigationController(entity: self)
              guard let result = await navigator.computePath(from: fromPosition, to: toPosition) 
              else {
                  return
              }
              if result.isEmpty {
                  return
              }
              for node in result {
                  switch node.category {
                      case .meshPoint:
                          finalPath.append(node.position)
                      case .offMeshConnection:
                          // handle ladders
                  }
              }
          }
      }
    • 12:51 - Pinning cloth to anchor points

      // Pin the curtains to the Alchemist's lab
      
      for (pin, pinComponent) in pins {
              let position = pin.position(relativeTo: event.entity)
              let selectionSphere = ClothSphereShape(radius: pinComponent.radius)
          
              let vertices = clothMesh.vertices(in: .sphere(selectionSphere),
                                          center: position)
              clothBody.motionTypes.set(vertexIndices: vertices, value: .kinematic)
      }
    • 14:42 - LOD by camera distance

      // Create entity with LODs
          
      let lod0 = [ModelEntity(mesh: lodMesh0)]
      let lod1 = [ModelEntity(mesh: lodMesh1)]
      let lod2 = [ModelEntity(mesh: lodMesh2)]
      
      let entity = Entity()
      
      LevelOfDetailComponent.addByCameraDistance(to: entity, levels: [
          (entities: lod0, maxDistance: 1.0 /* meters */), // highest detail
          (entities: lod1, maxDistance: 5.0),              // medium detail
          (entities: lod2, maxDistance: .infinity),        // lowest detail
      ])
    • 15:58 - LOD by screen area

      // Create entity with LODs
          
      let lod0 = [ModelEntity(mesh: lodMesh0)]
      let lod1 = [ModelEntity(mesh: lodMesh1)]
      let lod2 = [ModelEntity(mesh: lodMesh2)]
      
      let entity = Entity()
      
      LevelOfDetailComponent.addByScreenArea(to: entity, levels: [
          (entities: lod0, minArea: 0.2 /* fraction of screen area */),  // highest detail
          (entities: lod1, minArea: 0.1),                                // medium detail
          (entities: lod2, minArea: 0.01),                               // lowest detail
      ])
    • 16:26 - Responding to thermal state changes

      // Respond to changes in device thermal state
          
      NotificationCenter.default.addObserver(of: ProcessInfo.self,
                                             for: .thermalStateDidChange) {_ in
          switch ProcessInfo.processInfo.thermalState {
              case .nominal, .fair:
                  // Stay the course
              case .serious, .critical:
                  // Improve performance by:
                  // More aggressive LOD switching
                  // Lower shadow quality
          }
      }
    • 18:44 - Creating a Gaussian splat

      // Create Gaussian splat resource and component
      
      let resource = try GaussianSplatResource.BufferResource(count: splatCount,
                                                              position: positionBuffer,
                                                              scale: scaleBuffer,
                                                              rotation: rotationBuffer,
                                                              opacity: opacityBuffer,
                                                              sphericalHarmonics:
                                                                                                                          (sphericalHarmonicsBuffer, degree))
      
      let splatResource = GaussianSplatResource(resource)
      
      let splatComponent = GaussianSplatComponent(splatResource)
      
      splatEntity.components.set(splatComponent)
    • 20:49 - Creating a custom reverb mesh

      // Create and use custom reverb mesh
      
      let mesh: ReverbMeshResource = .shoebox(size: [5, 4, 6])
          
      let reverb: Reverb = .simulated(mesh: mesh, materials: [.dryWall])
          
      entity.components.set(ReverbComponent(reverb: reverb))
    • 21:33 - Creating custom reverb materials

      // Create custom materials for custom reverb mesh
          
      let thickCarpet: Audio.Material = .carpet.scalingAbsorption {freq in 0.1 }
          
      let bookshelf: Audio.Material
          
      // Absorption coefficients by center frequency:
      // 31.5Hz, 63Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz, 16kHz
      let bookshelfAbsorption = Audio.Absorption(
          [0.10, 0.15, 0.28, 0.20, 0.15, 0.10, 0.10, 0.07, 0.07, 0.05])
          
      // Scattering coefficients for: 500Hz, 1000Hz, 4000Hz
      let bookshelfScattering = Audio.Scattering([500: 0.5, 1000: 0.6, 4000: 0.7])
          
      bookshelf = .init(absorption: bookshelfAbsorption,
                    scattering: bookshelfScattering)
    • 0:00 - Introduction
    • Overview of the new RealityKit features introduced this year, including lighting and shadows, navigation mesh, cloth simulation, performance tools, 3D Gaussian splats, and immersive audio.

    • 2:00 - Lighting and shadows
    • Explore RealityKit's updated lighting and shadow capabilities, including lightmap support for indirect lighting and ambient occlusion, soft shadows for dynamic lights, projective textures, and physical space lighting that lets virtual lights interact with real-world environments.

    • 7:44 - Navigation mesh
    • Learn how to use RealityKit's navigation mesh to define traversable paths for characters and NPCs. Covers NavigationMeshResource, NavigationComponent, NavigationController, and how to query and iterate path nodes asynchronously.

    • 11:01 - Cloth simulation
    • Discover how to add realistic cloth simulation to your scenes using ClothBodyComponent, ClothColliderComponent, and cloth mesh resources. Includes how to pin cloth vertices to anchor points using kinematic motion types.

    • 13:42 - Performance
    • Cover performance optimization techniques, including mesh level of detail (LOD) using LevelOfDetailComponent with camera-distance and screen-area algorithms, and how to monitor and respond to device thermal state changes.

    • 17:09 - 3D Gaussian splats
    • Learn how to render high-fidelity real-world captures using RealityKit's 3D Gaussian splat support. Covers how to construct a GaussianSplatResource from position, scale, rotation, opacity, and spherical harmonics buffers, and attach it via GaussianSplatComponent.

    • 19:08 - Immersive audio
    • Explore RealityKit's immersive audio features for Apple Vision Pro, including custom reverb meshes that model the acoustic properties of virtual and real environments. Covers ReverbMeshResource, built-in preset materials, and creating custom materials with absorption and scattering coefficients.

    • 22:42 - Next steps
    • Recap of session topics and pointers to related sessions, sample code, and documentation to explore more of what RealityKit has to offer this year.

Developer Footer

  • 비디오
  • WWDC26
  • RealityKit의 개선 사항 살펴보기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • Apple Intelligence
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • 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 Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    최신 뉴스 읽기.
    Apple Developer 앱 받기.
    Copyright © 2026 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침