Lesson 7.2Lesson 7.2 · Interactivity with Blueprints
Interactive Doors, Lights & Material Swaps
The three classic archviz interactions, built with triggers, timelines and dynamic materials so the space responds to a touch
Click the door and it swings. Flick the switch and the room lifts. Tap a swatch and the wall becomes walnut - all live, no re-render.
Ask any visualiser what makes an archviz experience feel alive and you get the same short list: doors that open, lights you can switch, and finishes you can change on the spot. They are the three interactions a client always reaches for, and together they turn a walkthrough from a film you watch into a place you operate.
The good news is that all three are built from the vocabulary you just learned - events, nodes, wires, variables. The craft is in making them feel good: a door that swings smoothly instead of snapping, a light that reads convincingly, a material that swaps instantly and cleanly. This lesson builds each as a reusable pattern, using triggers, the Timeline node for smooth motion, and dynamic material instances for live finish changes - the exact techniques the next two lessons stack menus and configurators on top of.
Trigger -> Timeline -> smooth change. The whole module is variations on this.
Triggers - clicks and overlaps that start the action
Every interaction needs a starting gun, and in archviz there are two you use constantly. The first is a click: the player points at an object and presses a button, firing an On Clicked event on that actor. Click is perfect for deliberate choices - open this door, press that switch. It needs the object set up to receive cursor or controller hits, but once wired, clicking is the most intuitive interaction a client understands.
The second is an overlap trigger: an invisible volume - a Trigger Box or the collision on a component - that fires ActorBeginOverlap when something enters it and ActorEndOverlap when it leaves. Overlaps drive automatic behaviour: walk toward the entrance and the doors part on their own, step into a room and its lights come up. You place a box actor across the doorway, size it to the swing area, and wire its overlap event to the door logic. No clicking required - the space simply reacts to your presence, which feels magical in VR.
Choosing between them is a design decision. Clicks give control and are unambiguous - nothing happens by accident. Overlaps give flow and immersion but can surprise people if the volume is too big or badly placed. Many experiences use both: automatic sliding doors on overlap, but a deliberate click to change a finish. Get the trigger right and the rest of the interaction is just deciding what happens next.
Two practical notes make triggers reliable. For clicks, the mesh needs collision that responds to the trace channel your controller uses, and the Player Controller must have click events enabled - otherwise the cursor passes straight through. For overlaps, both the trigger volume and the thing entering it need Generate Overlap Events ticked, or the box stays silent. A robust setup for automatic doors is a Box Collision component built inside the BP_Door class, sized to the approach zone, so the trigger travels with every copy and never has to be placed by hand.
Click = deliberate. Overlap = automatic. Pick per interaction; often use both.
The Timeline - why a door should swing, not snap
If you wire a click straight to Set Relative Rotation, Yaw = 90, the door works - but it teleports open in a single frame, which looks broken. Real motion happens over time, and the tool for that is the Timeline node. A Timeline is a little animation curve living inside your Blueprint: you give it a length (say 1.5 seconds) and a curve from 0 to 1, and when you play it, it outputs a smoothly changing value every frame for that duration.
You use that output to drive the rotation. The Timeline's value (0 to 1) feeds a Lerp (linear interpolate) between closed (0 degrees) and open (90 degrees), and you feed the result into Set Relative Rotation on the door mesh. Now the door eases open across a second and a half. Shape the curve with ease-in and ease-out and the swing gets a believable weight - slow to start, slow to settle - instead of a mechanical constant speed. This same Timeline pattern animates anything continuous: drawers sliding, blinds lowering, a lamp dimming up.
Timelines also handle the return trip elegantly. Store an IsOpen boolean; on click, check it, and either Play the Timeline forward (open) or Reverse it (close). One Timeline, one boolean, and your door toggles smoothly both ways. Build all of this inside a Blueprint Class called BP_Door - mesh, pivot, click event, Timeline and boolean together - and you have a single reusable door you can drop throughout the building, every copy swinging identically.
A subtlety worth knowing: the Timeline gives you events as well as a value. It fires an Update every frame while playing - where you set the rotation - and a Finished event when it reaches the end, handy for playing a latch sound as the door settles or enabling collision only once it is fully open. Because Reverse re-uses the same curve, an eased door feels equally natural opening and closing from one tidy graph, and a single boolean gate stops a rapid double-click from fighting itself mid-swing.
Timeline = motion over time. 0-to-1 curve -> Lerp closed/open -> smooth swing. Reverse to close.
Light switches - controlling the mood
Lights are the simplest of the three and the most atmospheric. A light in Unreal - a Point Light, Spot Light or Rect Light - exposes properties you can set at runtime from a Blueprint: Intensity, Light Color, and simply Visibility (on or off). A switch, then, is an event that changes one of those. Wire an On Clicked (or overlap) event on a switch actor to a Set Intensity or Set Visibility node targeting the lamp, gate it with an IsOn boolean so each press flips the state, and you have a working switch.
What makes it read well is nuance. Instead of a hard on/off, run the intensity change through a Timeline so the light fades up like a real fixture warming. Change Light Color and you shift a room from warm evening (around 2700K) to neutral daylight (around 4000K) - the exact interior mood decisions covered back in the artificial-lighting lesson, now under the client's finger. You can group several lights so one switch drives a whole scene, or wire a master control that dims everything for a night mode.
A performance note worth carrying: real-time lights are not free. Movable lights that can change at runtime cost more than fully static baked ones, and stacking many dynamic shadow-casting lights eats your frame budget - which matters doubly in VR. So make interactive only the lights that genuinely need to change, keep the rest static, and lean on Lumen's indirect light rather than scattering dozens of movable fixtures. Interactivity and performance are always a negotiation, and lights are where beginners overspend first.
One more honest constraint: changing a light's color or intensity at runtime is cheap, but toggling many shadow-casting Movable lights, or moving them, forces Unreal to update dynamic shadows every frame. A convincing trick is to leave the fixtures static and instead animate the post-process exposure and one or two subtle Rect Lights for the interactive mood shift - you get the feel of the room changing from day to evening without paying for dozens of live shadow casters, which is the difference between a smooth demo and a stuttering one in VR.
Material swaps - changing a finish at runtime
The showpiece interaction for interiors is swapping a finish live - oak to walnut, white wall to sage, matte to gloss - while the client watches. There are two clean ways to do it. The blunt one is Set Material: every mesh has one or more material slots (element indices), and a Blueprint node can assign a different material asset to a slot on command. Wire a swatch's click event to Set Material (element 0) = MWalnut_ on the floor mesh, and the floor repaints instantly. Prepare a handful of finished materials and a button per option, and you have a working finish picker.
The more powerful way uses a Dynamic Material Instance. Instead of swapping whole materials, you create one master material with exposed parameters - a base colour, a roughness, a texture - and at runtime you change just those parameters. Click a colour and Set Vector Parameter Value recolours the surface; drag a slider and Set Scalar Parameter Value takes it from matte to gloss. This is exactly the physically based material thinking from Module 3, now driven live: one master, endless variations, no new assets. It is how a real configurator offers dozens of combinations without dozens of separate materials.
Either way, the pattern is the same as the door and the switch: an event (a swatch click) wired to an action (set material or set parameter) on a target mesh. Keep the target as a variable so one swatch can drive the right surface, store the current choice in a variable so you can show or save it later, and you have the seed of the configurator built in the last lesson of this module. Three interactions, one grammar - and the whole experience starts to feel like something the client owns rather than watches.
Keep one variable pointing at the target surface and another holding the current choice, and a single swatch can be reused across rooms while still remembering what each surface shows. That habit - a target reference plus a stored selection - is precisely the scaffolding the configurator in the last lesson expands into dozens of coordinated options.
Set Material = swap the whole thing. Dynamic Material Instance = tweak parameters live. Both start from a click.
Trigger Box / Overlap events
An invisible volume firing ActorBeginOverlap when something enters
Drives automatic behaviour - doors that open as you approach. Size it carefully or it surprises people.
Timeline node
An animation curve inside a Blueprint outputting a smooth 0-to-1 value over time
Turns an instant Set into believable motion; Play forward and Reverse to toggle a door open and shut.
Set Material
Assigning a different material asset to a mesh slot at runtime
The simplest finish swap; prepare one material per option and one button each. No re-render, instant result.
Dynamic Material Instance
One master material with exposed parameters you change live
Recolour or reroughen from a single material - the basis of a real configurator without duplicating assets.
Workshop — build a door, a switch and a swatch
You need Unreal Engine 5 and a level with a door mesh, a lamp and a wall (a starter template or an imported scene both work). You will build three reusable interactions and, crucially, make the door swing smoothly rather than snap.
Unreal Engine 5, a scene with a door mesh, a light and a wall surface. No plugins - Timeline, Trigger Box and material nodes are all built in.
Goal: a room the viewer can operate Inputs: Unreal Engine 5, a scene with a door, a light and a wall Time: ~60 minutes
- 1Create a Blueprint Class (Actor) called BP_Door. Add the door static mesh, and place its pivot at the hinge edge. Add an On Clicked event (enable click events) or a Trigger Box overlap as the starter.
- 2Add a Timeline (1.5 s) with a 0-to-1 float track eased at both ends. Feed its value into a Lerp between 0 and 90 degrees, and wire that into Set Relative Rotation on the door. Store an IsOpen boolean; on trigger, Play forward if closed, Reverse if open. Test that it swings and closes smoothly.
- 3Make a BP_LightSwitch (or reuse the door pattern): wire a click to toggle an IsOn boolean, and drive a lamp's Set Intensity through a short Timeline so it fades up rather than hard-cutting. Try shifting Light Color between warm and neutral.
- 4Set up a material swap: create a master material with an exposed base-colour parameter, make a Dynamic Material Instance on the wall at BeginPlay, and wire two swatch buttons (or clickable cubes) to Set Vector Parameter Value for two finishes. Confirm the wall repaints instantly.
- 5Drop several copies of BP_Door through the scene to prove reuse, then press Play and operate the whole room - open a door, switch the light, swap the finish - as a client would.
You’ll walk away with
A short screen recording of one room where you open and close a door smoothly, toggle a light, and swap a wall finish live - plus a note on which interactions you made click-based and which overlap-based, and why.
Three altitudes on the same idea
Read the band that fits you — or all three.
These three interactions are how a review stops being a presentation and starts being a test. Let the client walk the entrance and watch the doors respond; let them try the space by day and by lamplight; let them see the stone they keep asking about, on the actual wall, now. Decisions that used to take a week of back-and-forth renders happen in the room, in minutes, with the client's own hand on the switch.
Material swaps are your headline feature - this is where interiors win. A client who cannot commit to a palette from samples will commit when they see walnut under the evening lights, then flip to oak and compare on the spot. Dynamic material instances let you offer real range from one master material, and the light switch lets them judge every finish in the mood it will actually live in. Build the swatch, hand them the room.
Build these three as clean, reusable Blueprint Classes and you have a portfolio piece. A door that swings on a Timeline, a switch that fades a light, a swatch that swaps a finish - each is small, but together they prove you can make a space interactive, not just pretty. Studios hiring for real-time archviz look for exactly this: can you take a static model and make a client operate it? Ship one interactive room and you can.
“Making a door open or a light switch just means setting the new value directly - rotate to 90, turn the light on.”
Do it yourself
Think in the event-then-action grammar you now know.
- 1Why does driving a door with Set Relative Rotation directly look wrong, and what fixes it?
- 2When would you trigger a door on overlap rather than on click? Give a reason for each.
- 3How does one Timeline plus one boolean let a door both open and close?
- 4What is the difference between Set Material and a Dynamic Material Instance for swapping a finish?
- 5Why should you make only some lights interactive rather than all of them?
The one line to carry out
Peer-reviewed journals & authoritative standards
- 01Blueprints Visual Scripting in Unreal Engine — Epic Games Developer Documentation, 2026.
- 02Physically based rendering — Wikipedia, 2026.
- 03Unreal Engine — Wikipedia, 2026.
- 04Architectural visualization — Wikipedia, 2026.
You can now make objects in the scene respond. Next we lift the controls off the objects and onto the screen - UMG menus and buttons that let a client pick scenes and design options from a clean interface, wiring those same interactions to on-screen UI.
The author
Amogh N P
Architect, interior designer, and creative polymath. Studio Matrx began in his notebooks — his vision of design made honest, useful, and open to everyone. Its Academy is written and taught in his memory, and free, forever.
More about Amogh →