CASE STUDY · HBO MAX ON APPLE VISION PRO
The Great Hall
The Great Hall
The Great Hall
Turning video-game assets into a fully immersive environment you can sit inside, with floating candles, a living night sky, and a fire that never goes out.
PLATFORM
Apple Vision Pro · visionOS
TOOLS
Blender · Reality Composer Pro · RealityKit
TEAM
Travis Swan, Mark Brouwer, Luke Lavictoire & the Max visionOS team
MY FOCUS
Project setup, mesh clean-up & UVs, Enchanted Ceiling, transparent rafters
SCROLL TO STEP INSIDE
01 · The brief
An experience to watch immersively
An experience to watch immersively
On Vision Pro, Max offers immersive environments: full 360° spaces that wrap around you while you browse and watch. After the House of the Dragon Throne Room, the next destination was Hogwarts, and there was only one room it could be.
On Vision Pro, Max offers immersive environments: full 360° spaces that wrap around you while you browse and watch. After the House of the Dragon Throne Room, the next destination was Hogwarts, and there was only one room it could be.
The goal: a Great Hall that feels alive at true scale, runs comfortably on-device, and works in two moods: a candle-lit night and a bright day.
The goal: a Great Hall that feels alive at true scale, runs comfortably on-device, and works in two moods: a candle-lit night and a bright day.
424,938
triangles in the night scene
284
named objects across day & night
2
baked lighting states
02 · Project setup · Travis
From game assets to Apple Vision Pro
From game assets to Apple Vision Pro
Our starting point was video-game assets from Avalanche Software, the team behind Hogwarts Legacy. Game assets are built for a game engine, with shared trim sheets, LODs and real-time lighting. Vision Pro needed a self-contained scene with lighting baked into every surface.
I set up the project: importing the source assets into Blender, establishing scale and orientation for Reality Composer Pro, and naming and organising every object so a three-person team could texture, bake and light in parallel without stepping on each other.
I set up the project: importing the source assets into Blender, establishing scale and orientation for Reality Composer Pro, and naming and organising every object so a three-person team could texture, bake and light in parallel without stepping on each other.
✓ Consistent SM_HW_GH_* naming by asset family
✓ _Baked suffix marking every bake target, one texture per object
✓ VFX_* prefix for special-case materials like the rafters

Early import running in the visionOS simulator.
Outliner
greathall_bake · 284 objects
Door_single_Sm_A
Floor1_tranformBaked_withDiffuseUVs_mark
Floor3
Floor4_1
GC_HM_PR_FireStoker_B_Piece_02_Baked
GC_HM_PR_FireStoker_B_Piece_03_Baked
GC_HM_PR_FireStoker_B_Piece_04_Baked
GC_HM_PR_FireStoker_B_Piece_05_Baked
PillarB_Mid_2M_166
PillarB_Mid_2M_167
PillarB_Mid_2M_168
PillarB_Mid_2M_169
SM_HW_AT_Wall_6x3_581_Baked
SM_HW_AT_Wall_6x3_584_Baked
SM_HW_AT_Wall_6x3_586_Baked
SM_HW_AT_Wall_6x3_587_Baked
SM_HW_AT_Wall_6x3_592_Baked
SM_HW_AT_Wall_6x3_593_Baked
SM_HW_AT_Wall_6x3_595_Baked
SM_HW_AT_Wall_6x3_596_Baked
SM_HW_AT_Wall_6x6_812_Baked
SM_HW_AT_Wall_6x6_814_Baked
SM_HW_AT_Wall_6x6_816_Baked
SM_HW_AT_Wall_6x6_817_Baked
SM_HW_AT_Wall_6x6_908_Baked
SM_HW_AT_Wall_6x6_909_Baked
SM_HW_AT_Wall_6x6_910_Baked
SM_HW_AT_Wall_6x6_912_Baked
SM_HW_Banner_Gryf_B_4
SM_HW_Banner_Gryf_B_4_Baked
SM_HW_Banner_HW_B_1
SM_HW_Banner_HW_B_1_Baked
SM_HW_Banner_HW_B_3
SM_HW_Banner_HW_B_4
SM_HW_Banner_Huff_B_1
SM_HW_Banner_Huff_B_1_Baked
SM_HW_Banner_Rav_A_6
SM_HW_Banner_Rav_A_6_Baked
SM_HW_Banner_Sly_B_1
SM_HW_Banner_Sly_B_1_Baked
SM_HW_Crest2_Baked
SM_HW_DecalPlane4_Baked
SM_HW_DecalPlane5_Baked
SM_HW_DecalPlane_Baked
SM_HW_DoorwaySmall_Baked
SM_HW_GH_CeilingMain_Baked
SM_HW_GH_CeilingRaftersC_1_Bakedd
SM_HW_GH_CeilingRaftersC_2_Baked
SM_HW_GH_Chair_Faculty_0_Baked
SM_HW_GH_Chair_Faculty_1_0_Baked
SM_HW_GH_Chair_Faculty_1_1_Baked
SM_HW_GH_Chair_Faculty_1_2_Baked
SM_HW_GH_Chair_Faculty_1_Baked
SM_HW_GH_Chair_Faculty_2_Baked
SM_HW_GH_Chair_Faculty_3_Baked
SM_HW_GH_Chair_Faculty_4_Baked
SM_HW_GH_Chair_Faculty_5_Baked
SM_HW_GH_Chair_Faculty_6_Baked
SM_HW_GH_Chair_Faculty_7_Baked
SM_HW_GH_Chair_Faculty_8_Baked
SM_HW_GH_Chair_Faculty_9_Baked
SM_HW_GH_Chair_Faculty_Baked
SM_HW_GH_Chair_Headmaster_Baked
SM_HW_GH_Column_1_Baked
SM_HW_GH_Column_2_Baked
SM_HW_GH_Door2_Baked
SM_HW_GH_Door_Bakedd
SM_HW_GH_Door_Bakedd_1
SM_HW_GH_Doorway_B_6_Bakedd
SM_HW_GH_Doorway_B_7
SM_HW_GH_Doorway_B_7_Baked
SM_HW_GH_FacultyTable_CombinedA_Baked
SM_HW_GH_FacultyTable_CombinedB2_Baked
SM_HW_GH_FacultyTable_CombinedB_Baked
SM_HW_GH_FireplaceWall_Baked
SM_HW_GH_Fireplace_12_Baked
SM_HW_GH_FloorEndMedallion_Baked
SM_HW_GH_FloorEnd_1_Baked
SM_HW_GH_FloorMain_005
SM_HW_GH_FloorMain_006
SM_HW_GH_OwlPodium_Baked
SM_HW_GH_RafterBase_A_1_Baked
SM_HW_GH_RafterBase_A_2_Baked
SM_HW_GH_RafterBase_A_3_Baked
SM_HW_GH_RafterBase_A_4_Baked
SM_HW_GH_RafterBase_B_4_Baked
SM_HW_GH_RafterBase_B_5_Baked
SM_HW_GH_RafterDec_1_Baked
SM_HW_GH_RafterDec_2_Baked
SM_HW_GH_RafterDec_3_Baked
SM_HW_GH_RafterDec_4_Baked
SM_HW_GH_RafterDec_5_Baked
SM_HW_GH_RafterDec_6_Baked
SM_HW_GH_RafterPillar_1_Baked
SM_HW_GH_RafterPillar_2_Baked
SM_HW_GH_RoodScreen_1_Baked
SM_HW_GH_RoodScreen_2_Baked
SM_HW_GH_RoodScreen_3_Baked
SM_HW_GH_SconceBase_Gryff_Baked
SM_HW_GH_SconceBase_HufflePuff_Baked
SM_HW_GH_SconceBase_Raven_Baked
SM_HW_GH_SconceBase_Slytherin_Baked
SM_HW_GH_TableRunnerGryff_1_001_Baked
SM_HW_GH_TableRunnerGryff_2_001_Baked
SM_HW_GH_TableRunnerHufflePuff_1_001_Baked
SM_HW_GH_TableRunnerHufflePuff_2_001_Baked
SM_HW_GH_TableRunnerRaven_1_001_Baked
SM_HW_GH_TableRunnerRaven_2_001_Baked
SM_HW_GH_TableRunnerSlytherin_1_001_Baked
SM_HW_GH_TableRunnerSlytherin_2_001_Baked
SM_HW_GH_Table_1_Baked
SM_HW_GH_Table_2_Baked
SM_HW_GH_Table_3_Baked
SM_HW_GH_Table_4_Baked
SM_HW_GH_Table_5_Baked
SM_HW_GH_Table_6_Baked
SM_HW_GH_Table_7_Baked
SM_HW_GH_Table_8_Baked
SM_HW_GH_TimberFill_1_Baked
SM_HW_GH_TimberFill_2_Baked
SM_HW_GH_TimberFill_3_Baked
SM_HW_GH_TimberFill_4_Baked
SM_HW_GH_TimberFill_5_Baked
SM_HW_GH_TimberFill_6_Baked
SM_HW_GH_WallColumnAB_1_Baked
SM_HW_GH_WallColumnAB_3_Baked
SM_HW_GH_WallColumnAC_10_Baked
SM_HW_GH_WallColumnAC_11_Baked
SM_HW_GH_WallColumnAC_1_Baked
SM_HW_GH_WallColumnAC_3_Baked
SM_HW_GH_WallColumnAC_5_Baked
SM_HW_GH_WallColumnAC_6_Baked
SM_HW_GH_WallColumnAC_7_Baked
SM_HW_GH_WallColumnAC_Door_Baked
SM_HW_GH_WallColumnC_2_Bakedd
SM_HW_GH_WallColumnC_5_Bakedd
SM_HW_GH_WallColumnC_6_Baked
SM_HW_GH_WallDoor_2_Baked
SM_HW_GH_WallDoor_4_Baked
SM_HW_GH_WallIntB_2_Baked
SM_HW_GH_WallIntB_3_Baked
SM_HW_GH_WallIntB_4_Baked
SM_HW_GH_WallIntB_5_Baked
SM_HW_GH_WallIntBlankDoor_1_Baked
SM_HW_GH_WallIntBlank_1_Bakedd
SM_HW_GH_WallIntBlank_3_Baked
SM_HW_GH_WallIntBlank_5_Baked
SM_HW_GH_WallIntD2_Baked
SM_HW_GH_WallIntD_Baked
SM_HW_GH_WallIntEndBase_1_Baked
SM_HW_GH_WallIntEndBase_1_Left
SM_HW_GH_WallIntEndBase_1_Middle
SM_HW_GH_WallIntEndBase_2_Baked
SM_HW_GH_WallIntEndBase_2_Middle
SM_HW_GH_WallIntEndBase_2_Right
SM_HW_GH_WallIntEndMid_1_Bake
SM_HW_GH_WallIntEndMid_2_Baked
SM_HW_GH_WallIntEndMid_Pane_0_Bake
SM_HW_GH_WallIntEndMid_Pane_Bake
SM_HW_GH_WallIntEndTop_1_Baked
SM_HW_GH_WallIntEndTop_2_Baked
SM_HW_GH_WallIntWindowB_3_Baked
SM_HW_GH_WallIntWindowB_4_Baked
SM_HW_GH_WallIntWindowC_2_Baked
SM_HW_GH_WallIntWindowC_3_Baked
SM_HW_GH_WallIntWindowD_3_Baked
SM_HW_GH_WallIntWindowD_4_Baked
SM_HW_GH_WallIntWindowG_1_Baked
SM_HW_GH_WallIntWindowG_2_Baked
SM_HW_GH_WallIntWindowG_3_Baked
SM_HW_GH_WallIntWindowG_4_Baked
SM_HW_GH_WallIntWindowG_5_Baked
SM_HW_GH_WallIntWindowG_7_Baked
SM_HW_GH_WallIntWindowG_8_Baked
SM_HW_GH_WallIntWindowG_9_Baked
SM_HW_GH_WallIntWindowI_10_Baked
SM_HW_GH_WallIntWindowI_11_Baked
SM_HW_GH_WallIntWindowI_12_Baked
SM_HW_GH_WallIntWindowI_6_Baked
SM_HW_GH_WallIntWindowI_7_Baked
SM_HW_GH_WallIntWindowI_8_Baked
SM_HW_GH_WallIntWindowI_9_Baked
SM_HW_GH_WallIntWindow_1_Baked
SM_HW_GH_WallIntWindow_2_Baked
SM_HW_GH_WallInt_2_001_Baked
SM_HW_GH_WallInt_4_001_Baked
SM_HW_GH_WallInt_FlatCeilingB2Test
SM_HW_GH_WallInt_FlatCeilingB2_Baked
SM_HW_GH_WallInt_FlatCeilingB_Baked
SM_HW_GH_WallPanelingBalcony_B_4_Baked
SM_HW_GH_WallPanelingLower_A2_Baked
SM_HW_GH_WallPanelingLower_A3_Baked
SM_HW_GH_WallPanelingLower_A4_Baked
SM_HW_GH_WallPanelingLower_A_Baked
SM_HW_GH_WallPanelingLower_B2_Baked
SM_HW_GH_WallPanelingLower_B3_Baked
SM_HW_GH_WallPanelingLower_B4_Baked
SM_HW_GH_WallPanelingLower_B8_Baked
SM_HW_GH_WallPanelingLower_B9_Baked
SM_HW_GH_WallPanelingLower_B_Baked
SM_HW_GH_WallPanelingLower_C4_Baked
SM_HW_GH_WallPanelingLower_C5_Baked
SM_HW_GH_WallPanelingLower_C7_Baked
SM_HW_GH_WallPanelingLower_C_Door_Baked
SM_HW_GH_WallPanelingLower_D2_Baked
SM_HW_GH_WallPanelingLower_D_Baked
SM_HW_GH_WallPanelingLower_E_Baked
SM_HW_GH_WallPanelingLower_F2_Baked
SM_HW_GH_WallPanelingLower_F_Baked
SM_HW_GH_WallPaneling_3_Baked
SM_HW_GH_WallPaneling_6_Baked
SM_HW_GH_WallPaneling_C_1_Baked
SM_HW_GH_WallPaneling_C_2_Baked
SM_HW_GH_WallPaneling_D_1_Baked
SM_HW_GH_WallPaneling_D_2_Baked
SM_HW_GH_WallPaneling_E_1_Baked
SM_HW_GH_WallPaneling_E_2_Baked
SM_HW_GH_WallSconceGryff
SM_HW_GH_WallSconceGryff_1
SM_HW_GH_WallSconceHufflePuff
SM_HW_GH_WallSconceHufflePuff_1
SM_HW_GH_WallSconceRaven
SM_HW_GH_WallSconceRaven_1
SM_HW_GH_WallSconceSlytherin
SM_HW_GH_WallSconceSlytherin_1
SM_HW_GH_WallTimbers_2_Baked
SM_HW_GH_WallTimbers_3_Baked
SM_HW_GH_WallTimbers_4_Baked
SM_HW_GH_WallTimbers_5_Baked
SM_HW_GH_WallTimbers_6_Baked
SM_HW_GH_WallTimbers_7_Baked
SM_HW_GH_WallTimbers_8_Baked
SM_HW_GH_WallTimbers_9_Baked
SM_HW_GH_WindowDetails_Baked
SM_HW_GH_WindowGryffindor_Baked
SM_HW_GH_WindowHufflepuff_Baked
SM_HW_GH_WindowLowerB_Pane_Ext_0_Baked
SM_HW_GH_WindowLowerB_Pane_Ext_1_Baked
SM_HW_GH_WindowLowerB_Pane_Ext_Baked
SM_HW_GH_WindowLowerC_Pane_Ext_0_Baked
SM_HW_GH_WindowLowerD_Pane_Ext_0_Baked
SM_HW_GH_WindowLowerD_Pane_Ext_Baked
SM_HW_GH_WindowLower_Pane_Ext_1_Baked
SM_HW_GH_WindowLower_Pane_Ext_2_Baked
SM_HW_GH_WindowRavenclaw_Baked
SM_HW_GH_WindowSlytherin_Baked
SM_HW_GH_WindowUpperB_Pane_Ext_1_Baked
SM_HW_GH_WindowUpperB_Pane_Ext_2_Baked
SM_HW_GH_WindowUpperB_Pane_Ext_Baked
SM_HW_GH_WindowUpperC_Pane_Ext_0_Baked
SM_HW_GH_WindowUpperC_Pane_Ext_1_Baked
SM_HW_GH_WindowUpperC_Pane_Ext_2_Baked
SM_HW_GH_WindowUpperC_Pane_Ext_Baked
SM_HW_GH_WindowUpperD_Pane_Ext_1_Baked
SM_HW_GH_WindowUpperD_Pane_Ext_2_Baked
SM_HW_GH_WindowUpperD_Pane_Ext_3_Baked
SM_HW_GH_WindowUpperD_Pane_Ext_Baked
SM_HW_GH_WindowUpper_Pane_Ext_0_Baked
SM_HW_GH_WindowUpper_Pane_Ext_1_Baked
SM_HW_GH_WindowUpper_Pane_Ext_2_Baked
SM_HW_GH_WindowUpper_Pane_Ext_Baked
SM_HW_Rug_GreatHall_A2_Baked
SM_HW_Rug_GreatHall_A_Baked
SM_HW_Rug_GreatHall_B_Baked
SM_HW_WoodenBench_A_6_Baked
SM_HW_WoodenBench_A_7_Baked
SM_HW_WoodenBench_A_8_Baked
SM_HW_WoodenBench_A_9_Baked
SM_Int_BCProps_Pot_001_W_Baked
SM_Int_BCProps_Pot_002_W_Baked
VFX_SM_GH_LightShield_Bakedd
VFX_SM_GH_Rafters_A_Lite2_Baked
VFX_SM_GH_Rafters_A_Lite3_Baked
VFX_SM_GH_Rafters_A_Lite4_Baked
VFX_SM_GH_Rafters_A_Lite5_Baked
VFX_SM_GH_Rafters_A_Lite6_Baked
VFX_SM_GH_Rafters_A_Lite_Baked
VFX_SM_GH_Rafters_B_Lite_Baked
WallPanneling1
WallPanneling2
WallPanneling4
WallPanneling5
pillartest
pillartest1
03 · Mesh clean-up & UVs · Travis
Tables, UVs & seam sewing
Tables, UVs & seam sewing
The four long house tables and their benches are the heart of the room, and they’re seen up close. I cleaned up their geometry, then re-unwrapped the UVs so each table could receive its own high-resolution bake. The tables carry a dedicated fixUvMap UV set that the bake reads from.
The four long house tables and their benches are the heart of the room, and they’re seen up close. I cleaned up their geometry, then re-unwrapped the UVs so each table could receive its own high-resolution bake. The tables carry a dedicated fixUvMap UV set that the bake reads from.
Baking lighting exposes every UV seam: a split island means a visible line in the shadow. I sewed seams back together wherever the eye travels, so the baked light flows across the tabletops and runners without breaks.
Baking lighting exposes every UV seam: a split island means a visible line in the shadow. I sewed seams back together wherever the eye travels, so the baked light flows across the tabletops and runners without breaks.
The checker you see on the tables right now is a live UV visualisation on the real meshes; cyan marks the seams. In the shipped environment the house tables appear in day mode, so the hall switches to day for this chapter.
The checker you see on the tables right now is a live UV visualisation on the real meshes; cyan marks the seams. In the shipped environment the house tables appear in day mode, so the hall switches to day for this chapter.
04 · Enchanted Ceiling · Travis
A sky that moves
A sky that moves
The ceiling is the signature of the room, and naturally more than a static picture. I built it as an animated shader in Reality Composer Pro that composites several layers over a deep sky gradient: a star field, drifting cloud sheets moving at different speeds, and procedurally generated noise clouds.
The same graph drives both moods: night blends stars and cool moonlit clouds, day swaps to daylight cloud layers. A soft pill-shaped opacity mask feathers the sky into the stonework so the edges never read as a flat plane.
The same graph drives both moods: night blends stars and cool moonlit clouds, day swaps to daylight cloud layers. A soft pill-shaped opacity mask feathers the sky into the stonework so the edges never read as a flat plane.
Animated cloud and star layers.

One cloud layer in Reality Composer Pro.
05 · Transparent rafters · Travis
Rafters that dissolve into the sky
Rafters that dissolve into the sky
The Great Hall has heavy timber rafters, but the Enchanted Ceiling needed to read as open sky. Making them transparent on Vision Pro required more attention because blended surfaces stacked in front of each other, creating a less than ideal result.
The Great Hall has heavy timber rafters, but the Enchanted Ceiling needed to read as open sky. Making them transparent on Vision Pro required more attention because blended surfaces stacked in front of each other, creating a less than ideal result.
My approach: render the rafters with an unlit material whose opacity comes from world-space height. The shader reads the object’s position, takes its Y value and remaps it: fully solid at 15 m, gone by 30 m. Because the fade is driven by height, not by a texture, it stays seamless across every rafter.
My approach: render the rafters with an unlit material whose opacity comes from world-space height. The shader reads the object’s position, takes its Y value and remaps it: fully solid at 15 m, gone by 30 m. Because the fade is driven by height, not by a texture, it stays seamless across every rafter.
The final step: the rafters sit in their own ”mesh sorting group” with a depth pre-pass. Depth is written first, so only the nearest rafter surface gets shaded at each pixel. The fade then behaves as if the rafters were a flat rendered image: overlapping faces don’t stack up into extra opacity, and the timber dissolves evenly as it rises.
The final step: the rafters sit in their own ”mesh sorting group” with a depth pre-pass. Depth is written first, so only the nearest rafter surface gets shaded at each pixel. The fade then behaves as if the rafters were a flat rendered image: overlapping faces don’t stack up into extra opacity, and the timber dissolves evenly as it rises.
Position
world
Separate
Y
Remap
15→30 m · 1→0
Opacity
Position
world
Opacity
Separate
Y
Remap
15→30 m · 1→0
06 · Fire · Mark
A fire that never goes out
A fire that never goes out
Mark Brouwer did a lot of the texturing and created the flames. Real fire footage was converted into flipbook sprite sheets (an 8-second clip becomes a grid of frames on one texture), and a custom shader steps through the frames every tick.
Mark Brouwer did a lot of the texturing and created the flames. Real fire footage was converted into flipbook sprite sheets (an 8-second clip becomes a grid of frames on one texture), and a custom shader steps through the frames every tick.
It’s an efficient way to put high-quality looping motion into the environment: the great fireplace and the house torches are just flat cards with an animated texture, plus flickering dynamic lights.
It’s an efficient way to put high-quality looping motion into the environment: the great fireplace and the house torches are just flat cards with an animated texture, plus flickering dynamic lights.
Source flame clip.

The same clip as a sprite sheet.
07 · Floating candles · Mark
Hundreds of candles, none of them still
Hundreds of candles, none of them still
Mark also built the floating candles. Their placement was scattered in Blender; their motion lives in Reality Composer Pro, where a dynamically generated noise field offsets each candle’s position so the whole cloud bobs gently and never moves in lockstep.
Mark also built the floating candles. Their placement was scattered in Blender; their motion lives in Reality Composer Pro, where a dynamically generated noise field offsets each candle’s position so the whole cloud bobs gently and never moves in lockstep.
Candles bobbing in the hall.
The noise map driving the offset.
08 · Lighting & final renders · Luke
Two moods, baked in
Two moods, baked in
Luke Lavictoire lit the hall and produced the final renders for both modes. Lighting was built in Blender and baked into the textures. Every surface you’re looking at carries its light with it, which is how a scene this rich stays fast on-device.
Luke Lavictoire lit the hall and produced the final renders for both modes. Lighting was built in Blender and baked into the textures. Every surface you’re looking at carries its light with it, which is how a scene this rich stays fast on-device.
Night is warm firelight and candle glow under a starry sky; day is cool window light and soft clouds. Each mode is its own full set of baked textures on the same geometry.
Night is warm firelight and candle glow under a starry sky; day is cool window light and soft clouds. Each mode is its own full set of baked textures on the same geometry.


Final 360° renders. Drag to compare day and night.
09 · In the headset
Watch anything from the Great Hall
Watch anything from the Great Hall
In the app, the hall wraps around you and the video player docks in the middle of the room, so you can watch in the Great Hall itself. The team also shipped Browse & Watch modes and an environment downloader that delivers large environments as remote assets instead of bundling them with the app.
In the app, the hall wraps around you and the video player docks in the middle of the room, so you can watch in the Great Hall itself. The team also shipped Browse & Watch modes and an environment downloader that delivers large environments as remote assets instead of bundling them with the app.
Captured on device.

Choosing an environment in Max.
Credits
Who did what
Who did what
Travis Swan
Project setup, naming & organisation · table clean-up, UV mapping & seam sewing · Enchanted Ceiling (day & night) · transparent rafters
Project setup, naming & organisation · table clean-up, UV mapping & seam sewing · Enchanted Ceiling (day & night) · transparent rafters
Mark Brouwer
Texturing · fireplace & torch flames · floating candles
Texturing · fireplace & torch flames · floating candles
Luke Lavictoire
Lighting · final day & night renders
Lighting · final day & night renders
With the Max on Vision Pro team: Adam Bader, Joseph Megkousoglou, Raffaele La Brocca and Gabriel Banfalvi. Source assets: Avalanche Software.
With the Max on Vision Pro team: Adam Bader, Joseph Megkousoglou, Raffaele La Brocca and Gabriel Banfalvi. Source assets: Avalanche Software.
The 3D hall on this page is the production bake, converted from the Reality Composer Pro project for the web. Fire, candles and sky are recreated in WebGL. Harry Potter characters, names and related indicia are © & ™ Warner Bros. Entertainment Inc.
The 3D hall on this page is the production bake, converted from the Reality Composer Pro project for the web. Fire, candles and sky are recreated in WebGL. Harry Potter characters, names and related indicia are © & ™ Warner Bros. Entertainment Inc.
Back to the entrance
Travis Swan
CASE STUDY