Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 34 – Eye Track

This blueprint handles that creepy effect where the eyes suddenly notice and follow the player after a delay.

Starting with Event BeginPlay and Event Tick handling the timing. I’ve got a 10 second delay node here before the tracking kicks in – this is just an arbitrary number for now for testing. Using Get Player Index and Get Actor Location to track player position in the space.

The functionality is in the Find Look at Rotation nodes – they calculate where the eyes should look based on player location, I then feed that through Get World Location and Set World Rotation to actually move the eyes. Then I added a static mesh reference to control just the eye meshes rather than the whole model.

Got some vector math in there with Break Rotator and Make Rotator handling the actual rotational values. The Normalize node with that tiny 0.0001 tolerance keeps movements smooth. Those Add pins at the bottom constrain the rotation angles – set to 25.0, 60.0, and 21.0 to limit how far the eyes can turn. Keeps them from doing impossible rotations that would break immersion.

Pretty happy with how it looks.

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 33 – Crayon Drawings

I wanted to tell parts of the story through this childlike perspective. The rough, unsteady lines and basic stick figures really sell that kid’s drawing aesthetic. Each one hints at different parts of the narrative without being too obvious.

The first drawing shows two figures with this towering presence behind them – those black masses with white eyes create this ominous feel despite the simple style. I did some research on children’s imaginary friend drawings to help me get a better idea of what an authentic one would look like.

In the second one, I drew crude interpretations of burlap friends floating around the figures. There’s a door in the back which I felt was important to add, since doors play a big role in the mechanics of the game. The red scribbles on the right figure gives off this violent energy that works quite well for what I’m trying to portray, a child’s anger.

The third drawing’s got this interesting dynamic with the giant grinning burlap friend – much bigger than the figures, suggesting this overwhelming presence. The box on the right suggests that this was a gift.

Fourth one brings in this harsh sun element, but the composition still feels threatening – that tall figure on the left has this imposing presence despite being just black lines. I drew a tombstone on the right as I’d imagine a child to have drawn it, but I’m not sure if this comes across properly.

The last drawing with the bed shows that black mass again, but now it’s clearly more defined, more threatening. The way it towers over the small figure really emphasizes the power dynamic I’m trying to suggest through these drawings.

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 32 – Player Blueprint

Just gonna go over some of my FirstPersonCharacter blueprint functionalities here

Looking at my blueprint setup, I’m using several “Cast To” nodes to handle the interaction widget display. The line trace by channel detects what the player is looking at, feeding into Cast To Curtain, Chair, BP_PlaySocket and BP_Bed nodes to determine which object was hit.

I’m using tag checks through a break hit result node to identify different interactive objects – curtains, chairs, switches. For the curtain, I added a boolean branch that disables the widget prompt once the animation plays. It’s nice when interaction prompts aren’t shown for something that’s already done its job.

This part handles the camera shake that happens when the player moves around, triggered on tick based on their velocity.

Looking at this camera sequence setup for the bed interaction, I’m using a combination of view target blending and post-process effects to create a smooth first-person transition. Working with Set View Target with Blend gives me that nice smooth camera movement – I’ve tuned the blend time and transition to feel like natural head movement as the player “climbs” onto the bed.

The camera setup uses post-process nodes linked together for the fade effect. Make Vector 4 nodes control fade values and timing, with delays making sure the fade finishes before camera movement starts. Pretty standard stuff, but effective for what I need.

For bed interactions, I’m tracking player position with Get Actor Location, then using Set Actor Relative Location with a Make Vector to mirror their original position when they get out. It gives that natural feeling of actually climbing out of bed rather than just leaving it facing in the same direction as when you got in.

Using Toggle Visibility nodes connected through a Cast To BP_Bed, I’m switching between two duvet meshes – one that’s visible when the player’s just looking at the bed, and another that appears to cover them when they’re in it. Added a small 0.1 second delay to ensure the game properly initiates this code since it decides to just misbehave sometimes.

The BP_Duvet reference and Set Control Rotation nodes ensure everything stays properly aligned during the transition. Really happy with how natural this makes getting in and out of bed feel – adds to that immersive atmosphere.

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 31 – Another Antagonist

I spent a good chunk of time working on this monster mesh for that chair-trigger scare sequence. I wanted something really unsettling, so I went with this burlap texture and these exaggerated features – those wide eyes and that stretched-out grin. The teeth were particularly fun to model, making them slightly uneven and giving them that pinkish gum texture to create this uncanny contrast with the rough burlap material.

I’ve been wrestling with this mesh in Unreal after bringing it over from Cinema 4D where it looked perfect. The burlap texture and modeling work great here in C4D – I love how the material catches the light and creates these deep shadows in the creases. But when I tried implementing it in UE5, I kept running into these degenerate triangle issues that were making the cloth physics completely unusable.

I really got into experimenting with squash and stretch animations on this one. Had this whole sequence planned where it would compress as it burst through the doorway, then stretch out as it lunged toward the player. The deformation looked amazing in Cinema 4D, especially how the burlap texture would warp and ripple with the movement.

But when I tried exporting it as a DAE file, the poly count was just ridiculous. All those detailed wrinkles in the burlap and the individual teeth geometry added up fast. The file size was way too heavy for what should be a quick jumpscare moment. Plus, all those blend shapes I created for the squash and stretch animations were making the file even more bloated.

I took some time to play around with the material setup for this monster mesh after getting it into UE5. The default look from Cinema 4D was fine, but I wanted to push the creepy factor further. I created this layered material where I added these deep black voids for the eyes, then surrounded them with an emissive white ring texture. The contrast between the dark center and that glowing rim creates this really unsettling look.

I then set up a sequencer that animates the monster when the scare is triggered, I haven’t worked on the animation for the game over sequence yet (if the monster comes in and you haven’t turned the light off in time), but the fact that I got this down and learned how to set it up with the blueprints means I shouldn’t have any problems.

I made this sound effect with a combination of droning noises that I distorted and reversed and normal walking sound effects, the door open/ close I just got for free somewhere on the internet.

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 30 – Wainscoting and Wainscoting Upgrade

Looking at my initial wainscoting design, I knew I needed to make some serious changes. That first version with the basic black bars was really holding the project back – not just visually, but from a technical standpoint too. The geometry was unnecessarily complex and the lighting interactions were a mess, especially with all those individual segments creating harsh shadows.

I went back to the drawing board and developed this new design with the interwoven pattern along the top. The change makes so much better sense for what I’m trying to achieve. Instead of having separate geometry for each panel divider, I’ve consolidated everything into a single mesh with the pattern detail baked into the normal map. This not only looks more period-appropriate for the Victorian-style room I’m creating, but it’s also way more optimized for real-time rendering.

From a technical perspective, this new version is just working so much better with my lighting setup. The reduced geometry means cleaner lightmap generation, and having most of the detail in the normal map gives me more control over how worn or damaged different sections appear through vertex painting. Plus, it’s going to be way easier to implement those material transitions I have planned for when things start getting weird in the room.

I’ve been experimenting with breaking up the darkness in my environment by adding these strategic white decal highlights. The wallpaper and wainscoting were reading a bit too muddy and flat, so I started placing these lighter decals along the top edge where it meets the ceiling. I’m really happy with how it’s working to create depth – those brighter areas catch the light in a way that makes the architectural details pop more.

Working with vertex painting here to really nail those wear patterns on the wainscoting. I’m using black paint to mark specific areas where I want the material to show more age and damage. It’s interesting how by painting these regions, I can create this natural-looking lightening effect that mimics decades of wear and tear.

I focused particularly on those decorative sections at the top – painting along the edges and corners where you’d naturally see the most damage. I’m letting the design of the wainscoting guide where I place these wear marks. Those curved patterns in the trim make perfect spots for paint to have chipped or worn away over time.

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 29 – Hand Rig + Door Open Animation and Trigger

The random float in range between 10.0 and 20.0 actually serves as my initial trigger – it determines when the whole sequence kicks off after the player starts the game and when the sequence is reset. I connected this through a delay node that feeds into both the sound system and movement timeline.

What’s neat about this setup is how I offset the audio and visual elements. The sound effects trigger about 5 seconds before any physical movement occurs – this was deliberate, giving players a heads up that something’s about to happen. I implemented this by splitting the signal after the delay node, with one branch going straight to the sound effect and another running through an additional delay before hitting the timeline controller for the door movement.

Above shows my hand interaction system using the bonyLwrist as the control point. I created a timeline that manages the precise positioning of the monster’s hand during the door interaction. The Get Owner node references its skeleton, feeding into a series of Make Vector node that controls its movements. I spent quite a bit of time fine-tuning those Set Relative Location values to make sure the hand placement looks natural when gripping the door.

A low poly version of what I transformed the mesh into, including UVs so that I could implement the material without it stretching

Looking at this section of my blueprint, I’m really happy with how I implemented the room’s color shift during the door sequence. I set up a post-process system that smoothly transitions the room’s color balance when the door event triggers. The Make Vector 4 nodes at the start define my color values – I’ve got them configured to push the room towards a red tint by adjusting the RGB and intensity values.

The post-process transitions work through two phases – I created one vector for the initial state and another for when everything returns to normal. What’s particularly satisfying about this setup is how I used the Set members in PostProcessSettings nodes to handle the actual color grading. These feed into a timeline that controls the transition timing, making sure the color shift feels smooth rather than jarring.

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 28 – Texture + Mesh Debug

Looking at these debug tools in UE5, they’ve really helped me isolate some performance issues I’ve been struggling with. The material complexity view (showing those red and green overlays in the screenshot) immediately highlighted where I needed to optimize. Some of my materials were way more complex than they needed to be, especially that bed texture I spent so much time on – it looked like all those extra texture samples and material instances were killing performance. I learned here that opacity uses a lot more processing power than masking actually.

I ran into this weird issue where my bed and door meshes would completely disappear whenever I tried to modify post-processing settings during runtime. After digging through the debug data, I realised the problem was that I’d set them up as StaticMeshActors. These aren’t meant to be modified during gameplay, which explains why they were vanishing when I tried to affect the post-process volume as a reference within the playercharacter blueprint. Had to convert them to regular mesh components to get them working properly with the runtime modifications I wanted to implement.

I methodically went through every single blueprint – the door mechanism, the bed movement script, even the drawing spawners I’d set up. Each time I’d disconnect a tick node, I’d run the game again, hoping to see that frame counter climb back up. But the profiler kept showing these massive performance hits. The whole time I’m thinking it’s got to be some blueprint somewhere just eating up resources.

But nope. After all that time hunting down tick events, turns out the real performance killer was the curtain I duplicated. Looking back at the profiler data now, it’s almost funny how clear it is. Those massive red spikes in the debug view weren’t from blueprint execution at all – they were from the physics engine trying to calculate three identical cloth simulations at once, two of which were scaled down (terrible idea).

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 27 – Burlap Friends!2

I reworked the shelf layout to accommodate this old CRT TV model, removing one of the middle shelves to create the perfect slot for it. The placement feels really natural – like this TV’s been sitting there for years between those worn books and Burlap Friends. Planning out the TV’s interactivity got me excited about all these possible mechanics – I want it randomly powering on to catch players off guard, or maybe responding when they interact with the alphabet poster in the room.


The system I had in mind would have the screen come alive, showing these brief unsettling images, or activating based on which letters the player’s focusing on in the poster. Had to “shelve” all that for now though since the deadline was coming up fast. Just one of those features that’ll have to wait for the next development phase when I’ve got more time to really nail the implementation.

Even without being functional yet, I love how the TV sits there among everything – really sells that period-appropriate vibe I’m going for. The way I positioned the Burlap Friends around it worked out perfectly too – they’re all angled around the screen like they’re watching it. Can’t wait to get back to this after the deadline and implement all the interactive elements I’ve got planned.

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 26 – Burlap Friends!

I began adding some Burlap Friends around the room, starting with a setup on the bookshelf. Their white eyes and teeth make perfect focal points in the dark. I placed them at varying heights to naturally guide the player’s eyes upward, creating and pushing the sense of something looming over them.

I’m particularly happy with how the shelf placement worked out – having them at different levels creates this sense of being watched from multiple angles. There’s something deeply unsettling about their expressions being just barely visible in the shadows. I’ve got plans to make those eyes functional later, adding some subtle rotational tracking so they follow the player’s movement. Should be pretty straightforward to implement – just need to set up a simple look-at system tied to the player’s position, but make it subtle enough that players might question whether they really saw the eyes move or not.

I started modeling these Burlap Friends in Cinema 4D, really focusing on getting that balance between rough texture and soft form that makes them feel unsettling but still toy-like. The base mesh was pretty simple – just a sphere that I deformed to get those initial chunky shapes, but the real character came from layering different effects.

Using a combination of subdivision surface modifiers and displacers turned out to be key for achieving that specific look I wanted. The subdivision surface gives them that overall smooth, plush toy feel, while the displacers create all those subtle bumps and irregularities you’d expect from burlap fabric. I set up multiple displacer effectors with different noise patterns – you can see in the hierarchy how I’ve got them organized for each character variation.

The way the stitches follow that V-pattern really emphasizes the patchwork nature of these toys. I positioned the UV islands so that the stitch lines would fall in places that make sense structurally

Categories
3D Computer Animation Fundamentals Immersion

Unreal Engine – Immersion Project – 25 – Lighting

Playing around with these different light sources to really nail the atmosphere I wanted – using an IES profile for the table lamp gives me this much more authentic light pattern than default spots would. I love how it creates these natural falloff patterns and catches the edges of furniture in ways that feel real instead of that typical game-engine uniformity.

I experimented with the lamp’s intensity and falloff settings in order to get that perfect balance. I wanted to illuminate what needed to be shown while still maintaining deep shadows in the corners of the room.

Working with multiple light sources turned out to be key to getting the exact mood right. I’ve got the IES-driven table lamp doing the heavy lifting for that main warm glow, then I’m using that rectangle light with the channel isolation for the bed sheets, and there’s this subtle ambient light that just helps soften those completely black areas without ruining the darkness. It’s like painting with light – each source adds its own little contribution to the final look.

Working with light channels proved really crucial for achieving that subtle illumination I needed for the bedsheets. I set up a rectangle light at the top of the scene. By assigning this light to channel 1 and setting the bedsheet material to only receive light from that channel, I managed to only illuminate what I wanted to have lit up.

I spent a while getting these subsurface values just right for the bed sheets -I wanted that subtle translucent quality you get with real fabric. The Mean Free Path Distance at 1.5 and World Unit Scale at 0.1 create that initial scatter effect, while the transmission settings (Extinction Scale 1.0, Normal Scale 0.08) control how light penetrates the material. That Scattering Distribution at 0.93 spreads the effect through the fabric, and I’m using a Dual Specular setup with different roughness values (0.75 and 1.0) to get two distinct specular responses that blend together at 0.85 in the Lobe Mix. Those pinkish tones in the Surface Albedo and Mean Free Path Color give me that warm, slightly translucent quality you see in real bedsheets when light hits them.