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 도움말
    • 새로 추가될 요구 사항
    • 계약 및 지침
    • 시스템 상태
  • 빠른 링크

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

비디오

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

더 많은 비디오

  • 소개
  • 요약
  • 코드
  • visionOS에서 몰입형 웹사이트 환경 살펴보기

    JavaScript의 새로운 Immersive API를 사용하여 Apple Vision Pro의 가상 환경으로 웹사이트 방문자를 이동시키세요. 인라인 모델 요소에서 몰입형 전환을 요청하고, 비디오 도킹과 같은 기능을 사용하여 매력적인 몰입형 경험을 선사하며, 실제 규모의 풍부한 경험을 위해 성능을 최적화하는 방법을 살펴보세요. 이 모든 것을 웹사이트에서 실행되는 코드 몇 줄만으로 구현할 수 있습니다.

    챕터

    • 0:00 - Introduction
    • 1:46 - Meet the immersive API
    • 4:16 - Preview environments inline
    • 7:01 - Go immersive
    • 12:04 - Optimize the experience
    • 17:17 - Image controls
    • 18:09 - Next steps

    리소스

    • Download - Immersive model add-on for Blender
    • WebKit.org - Theater Ticket Sales immersive website environment demo for Apple Vision Pro
    • WebKit.org - Escape Game immersive website demo for Apple Vision Pro
    • GitHub: Spatial Backdrop explainer
    • WebKit.org – Report issues to the WebKit open-source project
    • Submit feedback
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC26

    • HTML 모델 요소 시작하기
    • Safari 27용 WebKit의 새로운 기능
    • visionOS 앱과 공간 웹을 위한 몰입형 환경 디자인하기

    WWDC25

    • 공간 웹의 새로운 기능
    • visionOS에 대한 맞춤형 환경 최적화하기
  • 비디오 검색…
    • 1:51 - Basic model element

      <model src="teapot.usdz">
      </model>
    • 2:06 - Model element with environment map

      <model src="teapot.usdz"
      	environmentmap="kitchen.hdr">
      </model>
    • 4:40 - Adding the environment model on the page for inline preview

      <div class="seat-preview">
      	<model id="theater"
      		   src="theater-model.usdz"
      		   environmentmap="theater-lighting.hdr">
      	</model>
      </div>
    • 5:14 - Reset the model entity transform

      const theater = document.getElementById("theater");
      
      async function updateModelTransform() {
      	// Make sure the model is loaded
      	await theater.ready;
      	// Create a transform matrix
      	const identity = new DOMMatrix();
      	// Apply the transform matrix to the model
      	theater.entityTransform = identity;
      }
      
      updateModelTransform();
    • 5:42 - Translate the model down

      const theater = document.getElementById("theater");
      
      async function updateModelTransform() {
      	// Make sure the model is loaded
      	await theater.ready;
      	// Create a transform matrix
      	const transform = new DOMMatrix();
      	// Translate model down, for eye level preview
      	transform.translateSelf(
      		0, 			// x
      		-1.0, 	// y
      		0 			// z
      	);
      	// Apply the transform matrix to the model
      	theater.entityTransform = transform;
      }
      
      updateModelTransform();
    • 6:40 - Build the seat transform

      function buildTransform(seat) {
      	const transform = new DOMMatrix();
      	const { x, y, z, ry } = seat;
      	// Rotate and translate the model to match 
        // the seat's origin and orientation
      	transform.rotateSelf(0, -ry, 0);
      	transform.translateSelf(-x, -y, -z);
      	// Translate the model down, for eye level preview
      	transform.translateSelf(0, -1.0, 0);
      	return transform;
      }
    • 7:16 - Detect feature availability

      if (document.immersiveEnabled) {
      	immersiveButton.hidden = false;
      }
    • 7:34 - Request the immersive transition on the model

      immersiveButton.addEventListener("click", async () => {
      	await model.requestImmersive();
      });
    • 8:24 - Build immersive transform

      function buildTransform(seat, immersive) {
      	const transform = new DOMMatrix();
      	// [...] Seat transform logic
      	if (immersive) {
      		// Rotate to the left
      		transform.rotateSelf(
      			0,		// x
      			45,		// y
      			0			// z
      		);
      	} else {
      		// [...] Eye level translation
      	}
      	return transform;
      }
    • 9:01 - Update the entity transform and the layout on immersive state updates

      theater.addEventListener("immersivechange", () => {
      	const isImmersive = !!document.immersiveElement;
      	const transform = buildTransform(isImmersive, currentSeat);
      	theater.entityTransform = transform;
        document.body.classList.toggle("immersive", isImmersive);
      });
    • 10:53 - Hide the inline preview

      <model id="escapeRoom"
      	   src="escape-room.usdz"
      	   environmentmap="room-lighting.hdr"
      	   style="display: none">
      </model>
    • 11:25 - Request an immersive transition on the escape room model

      const enterButton = document.getElementById("enterButton");
      const escapeRoom = document.getElementById("escapeRoom");
      
      enterButton.addEventListener("click", () => {
          await escapeRoom.requestImmersive();
      });
    • 11:52 - Handle the request result and show a loading animation

      enterButton.addEventListener("click", async () => {
      	showLoadingAnimation();            
      	try {
      		await escapeRoom.requestImmersive();
      	} catch (error) {
      		console.log(error);
      	} finally {
      		hideLoadingAnimation();
      	}
      });
    • 13:16 - Dock the video in the environment with the fullscreen API

      const trailerVideo = document.getElementById("trailerVideo");
      const demoButton = document.getElementById("demoButton");
      
      demoButton.addEventListener("click", async () => {
      	await trailerVideo.requestFullscreen();
      });
    • 14:01 - Play the model animation

      const trailerVideo = document.getElementById("trailerVideo");
      const escapeRoom = document.getElementById("escapeRoom");
      
      trailerVideo.addEventListener("ended", async () => {
      	await document.exitFullscreen();
      	escapeRoom.play();
      });
    • 16:38 - Compress your USDZ with usdcrush

      usdcrush model.usdz -o optimized.usdz
    • 0:00 - Introduction
    • The immersive API in visionOS Safari is previewed through two example websites — a theater ticket sales experience and an escape-room marketing site — that transport visitors into virtual environments using just a few lines of code.

    • 1:46 - Meet the immersive API
    • Get a high-level overview of how the HTML `` element pairs with the new JavaScript `requestImmersive()` API and a `:immersive` CSS pseudo-class. Unlike the Fullscreen API, the immersive API opens an environment around your existing webpage rather than replacing its content.

    • 4:16 - Preview environments inline
    • Build the inline portion of the ticket sales site: load a theater model into the page, let visitors pick a seat by applying a `DOMMatrix` transform to the `` element, and prepare the same model for an immersive transition.

    • 7:01 - Go immersive
    • Transition from the inline preview into a full immersive environment. Covers the difference between inline and immersive coordinate systems, listening to `immersivechange` events, dismissing the environment, and skipping the inline preview entirely for the escape-room marketing site.

    • 12:04 - Optimize the experience
    • Polish your environment with RealityKit annotations authored in Reality Composer Pro or via a Blender plugin. Dock playing video into a TV inside the scene, trigger model animations from JavaScript, cast Safari's window shadow with the Scene Understanding component, and reduce vertex/entity counts to keep assets fast to load and render.

    • 17:17 - Image controls
    • Add a single `controls` attribute to an `` element to give visitors an immersive viewing affordance for spatial photos — a small markup change that pairs naturally with model-based environments.

    • 18:09 - Next steps
    • Try the immersive demos on webkit.org with an Apple Vision Pro, file feedback at bugs.webkit.org, and watch "Design immersive environments for visionOS apps and the spatial web" for the design principles behind great photorealistic environments.

Developer Footer

  • 비디오
  • WWDC26
  • visionOS에서 몰입형 웹사이트 환경 살펴보기
  • 메뉴 열기 메뉴 닫기
    • 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. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침