Elegant 3D Corporate Campus Tour with Explanatory Videos
Build an elegant 3D corporate campus tour with semantic zones, hotspots, and multilingual explanatory videos.
**Deliverables:** index.html, styles.css, app.js, assets/ folder with GLB models, HDR textures, MP4 videos, voiceovers, and SRT subtitles.
**Stack:** Three.js (CDN), GSAP for transitions, HTML5 video as textures, Draco for GLB compression, IntersectionObserver for lazy-load.
**Description:** Immersive 3D tour of a corporate headquarters. Visitors explore zones (reception, auditorium, R&D) and, when activating a hotspot, play a 30–90s explanatory video contextualizing the area — with voiceover and multilingual subtitles.
**Scene structure:** GLB building model divided into semantic nodes (lobby, auditorium, lab). Each node has a translucent sphere hotspot with aria-label. Camera starts at a wide view with predefined keyboard-accessible views (1: Lobby, 2: Auditorium, 3: Terrace).
**Hotspot activation:** (1) Smooth cinematic fly-to with GSAP easing. (2) Video loads in an HTML overlay panel or as a 3D plane texture. (3) Synchronized SRT subtitles and downloadable transcript. (4) Hotspot displays animated 3D metrics (capacity, projects, years).
**Interactions:** Drag to rotate, scroll/pinch to zoom, keyboard for quick views. Touch optimized: double-tap to center, two-finger pinch to zoom. "Start tour" button for full narration with auto-guided hotspot sequence.
**Video format:** H.264 MP4 720p for web, optional 1080p for desktop. Each video includes SRT and JSON metadata (duration, language, narrator). Progressive preload: thumbnails first, then adaptive streaming.
**Performance:** Draco compression; 512–1024px textures; lazy-load of videos and models per section. Render loop paused when canvas is off-viewport (IntersectionObserver). LOD models, reduced draw calls, optimized requestAnimationFrame.
**Accessibility & fallback:** prefers-reduced-motion disables fly-to and particles. 2D fallback: chapter-based hero video with full transcript. All hotspots have aria-label; video panel uses role="dialog" with aria-modal.
**Testing & metrics:** Chrome, Safari iOS, Firefox; FPS and TTFB measurement. Track: hotspots activated, videos played, view time. A/B test autoplay tour vs. manual control.