Categories
Advanced and Experimental 3D computer Animation Techniques Project 2

Week 4 Write enemy blue print and Repaint the texture

This week, I had a lot on my plate — I devoted almost all of my time to this project. Trying out Blueprints and building the game was incredibly exciting for me, and along the way I encountered many challenges.

Here’s what I worked on this week:

1. Created the blueprint for the enemy zombies

2.Repaint the texture

In my last discussion with Serra, she suggested that I try modifying the model textures myself. Assets like the gun and the arm are way too common and a lot of people use them, so I’m planning to redraw the textures myself. Also, I noticed that the zombie and skeleton materials aren’t very high quality, so I redrew those too and tested them in Unreal Engine.

When I was painting the zombie textures, I wanted them to look more gruesome and fleshy. Although it’s not exactly bright, positive, or uplifting, it fits the overall game background.

In this game, the goddess and heroes sealed the Serpent but couldn’t kill it. Many years passed, and both the goddess and heroes disappeared without a trace. Some nobles discovered that the Serpent’s blood could cause mutations, and even had powers like resurrection and life extension. So, they built a dungeon near ancient ruins to conduct experiments. These zombies and skeletons are the tragic results of those experiments.

Skeleton texture – white and black:

Gun:

When I was painting the gun and arm skins, I actually really enjoyed it. As a player myself, I love buying skins in games, so having the chance to create them this time was exciting. I wanted to make the skins a bit more stylized and fun. Since the overall tone of the game isn’t very bright or lighthearted, I wanted the main character to look a bit more positive.

Arm:

When I was painting the arm, I added some paint-like graffiti, a fabric texture for the glove, and visible veins on the arm.

3. Build environment

Assets I used:

1.Dark fantasy greatsword pack:

Dark fantasy greatsword pack | Unreal Engine 5 + UNITY – Naked Singularity Studiohttps://www.youtube.com/watch?v=_xR6SHgfhPU

2. Morbid Pack:

Morbid Pack Volume 1 – https://www.fab.com/listings/8b88ac2e-9b50-4381-91d1-46683a89178b

My process of building environment:

I tried for a long time to create volumetric lighting to achieve the Tyndall beam effect, but I wasn’t successful. So I had to make a fake light beam myself:

I added cube models, stretched them, then duplicated and rotated them six times to form the light beam model.

I used two texture assets from UE5’s built-in engine content pack to create a light beam.

The effect I get:

Create packed level actor

During the asset setup stage, I followed this tutorial and learned a really useful method called “Create Packed Level Actor.” It’s a great way to combine many different assets—it can regroup various assets into one big, rich new asset and pack it into the level, so it can be moved around freely.

The “Group” function in UE is really hard to use, because when rotating or moving, the pivot points of the parts need to be manually re-aligned. Otherwise, after rotation, their positions will shift and break the original composition.

Method of create packed level actor – start from 15:08

I used this method to build almost all the complex assets in the game, such as staircases, the knight statue hall, some complex combined statues, tables, and the platform where the serpent is placed.

However, this method also has some downsides. When I try to place an actor inside a packed level actor, sometimes it stops working. Also, when complex actors are nested together, modifying them can cause some models to disappear. If I go into the original level where the model was made, all the parts are still there—but when I drag the actor into a new level, some of them are missing.

This cost me a lot of time when making the knight statue hall. I nested individual knight statues with a full row of statues and added blueprint components for the torches. The problem was, when I tried to modify the actor at the second level, going back to the first level wouldn’t save my changes—so I ended up losing the parts I just modified.

Also, in this setup, the blueprint components for the torches couldn’t display correctly. So what I did was place the torches separately instead.

7:44 – 12:38

When building the stairs, I also used the “Create Packed Level Actor” function. I created a stair module, so I can combine them to form multiple staircases.

I combined four of them to create a main staircase

When I first started building, I honestly didn’t know where to begin. The assets were like thin sheets of paper, so I had to manually align and connect the stair sections. Since there were gaps between the bottom of the assets and the stairs, I had to use single-sided walls to close those openings.

However, because these assets are quite modular and open-ended, there are many possibilities when it comes to rebuilding and reshaping the staircases.

Used plugin: Dash

I use Dash to help me better organize assets. It makes the assets more visual. Although you can also use filters in folders, Dash feels a bit more convenient.

It also lets me use physics simulation brushes to scatter objects on the ground, and vine brushes to create vines on walls. But these tools can be a bit tricky to use.

https://www.polygonflow.io/

Categories
Advanced and Experimental 3D computer Animation Techniques Sessions with George

Week 8 spline – facial performance animation

In this week, I convert my blocking to spline:

When I switched the animation to spline mode, I ran into some issues. I noticed that the character’s movements were too large and too fast, so I had to remove some keyframes. Otherwise, the character looked hyperactive—shaking back and forth while talking.

I did my best to adjust those key frames, but that led to a new problem: after reducing the rotation in the waist, the poses of the head and neck changed unexpectedly. Because of this, I had to go back and tweak each pose again to make sure everything stays accurate and flows smoothly.

I realized that I included too many expression changes during the blocking phase, which made the character’s face look overly busy. I’m hoping to get some feedback from George in this week’s review session to help me address the facial animation issues. When all the facial features are moving at once, it becomes hard to find a clear visual focal point. I think I should reduce some of the key frames for the eyebrows and mouth to create a stronger, more readable expression.

Categories
Advanced and Experimental 3D computer Animation Techniques Sessions with George

Week 7 Continue adjust blocking facial expression animation

This week, I continued refining my blocking.

I need to revise the first pose, as the line of the character’s shoulders is really important—it helps create a strong silhouette and adds contrast to the overall shape. To improve the pose, I plan to tilt the shoulders more, which should enhance the visual appeal and make the character’s stance feel more dynamic.

Another thing to pay attention to is the character’s teeth. Sometimes, it’s better to either show the teeth clearly or not at all—anything in between can look unintentional or awkward. When the teeth are visible, it’s important to be mindful of their position and angle. Adjusting the rotation can help make the teeth look more natural and properly integrated into the expression.

The shape of the mouth is also really important. Typically, the corners of the mouth have sharper edges, and the overall mouth shape tends to form a trapezoid—either slanting upward or downward. It’s crucial to adjust the direction of the mouth corners based on the character’s emotion, as it greatly affects the clarity and believability of the expression.

Here, I wanted to make the character feel more alive, so I added a hold in the animation.

I rotated his nose and chin, creating the effect that they haven’t quite caught up yet and are lingering in the previous position. I think this little pause may help convey a more believable and nuanced movement.

Categories
Advanced and Experimental 3D computer Animation Techniques Sessions with George

Week 6 blocking – facial performance animation

This week, I completed the facial blocking, and during class, I got some valuable feedback from George. His comments helped me see a few areas where I could push the expressions further and make the performance more readable.

At first, I was trying to closely match the reference pose, so I went with a crossed-arm position. However, since the character model has a larger chest, this caused noticeable clipping between the arms and the chest when the arms were tightly crossed. George pointed out that I didn’t need to make things harder for myself from the start and suggested a more relaxed approach. Instead of forcing the reference pose, he recommended letting the arms hang naturally. This not only avoids the model’s limitations but also frees up more time and energy for me to focus on the facial animation, which is a more important part of the performance.

The second issue I ran into was with the eyebrows—they weren’t forming a continuous line, but were instead separated, with a visible gap in the middle. This breaks the visual flow across the character’s face, making the expression feel less connected. Ideally, the eyebrows should form a clear guiding line that draws attention and supports the emotion. The mouth can then serve as a contrasting line in the opposite direction, creating a sense of visual balance and contrast in the facial expression.

Another issue is that the inhale before the character sighs isn’t very noticeable. To make the breathing action clearer, I could exaggerate the movement of the jaw a bit more. A slightly larger jaw drop would help sell the sense of the character taking in a breath, making the sigh feel more natural and expressive.

I encountered some major issues with the character’s body movement in my animation. The motion was too exaggerated, especially in the lower body. I had animated the character’s lower half shifting during dialogue, but in both the reference and real-life observations, people tend to keep their lower body relatively still while speaking, with most of the rotation happening in the upper body. So, I decided to remove the lower body movement entirely.

When re-keying the character’s turning animation, George showed us how to use spline mode even during the blocking phase. I found this technique really helpful—switching between stepped and spline made it much easier to spot overly large movements or unnatural transitions early on.

Categories
Advanced and Experimental 3D computer Animation Techniques Sessions with George

Week 5 Continue adjust animation and prepare for facial performance animation

Refining the anticipation movement

This week, I refined the character’s anticipation movement before she jumps. She now holds a moving pose for nearly three frames, creating a subtle moving hold. During this hold, her legs press down slightly to avoid the pose looking frozen or static.

Since this moment is very brief, I aimed to introduce just a hint of motion in her legs. If the movement was too exaggerated, it would feel unnatural or distracting. So I kept the motion subtle, just enough to give it life without breaking the flow of animation.

Following George’s feedback, he pointed out that my character’s legs were pressing down too much during the anticipation pose—so much so that they even made contact with the mat. He suggested reducing the range of this motion to keep it more grounded and believable.

The goal is to avoid movements that a real human body couldn’t realistically perform. Taking his advice, I adjusted the leg motion to be more subtle and natural, maintaining the energy of the anticipation without breaking the realism of the animation.

Prepare facial expression animation:

I found a line on the website George recommended. The context is that Legolas says to an orc who’s about to be killed: “I would not antagonize her.”https://www.moviesoundclips.net/sound.php?id=296
It means: “If it were me, I wouldn’t provoke her.” (She’s too powerful—provoking her wouldn’t be a wise choice.)

video clips: https://getyarn.io/yarn-clip/3143512a-dd25-4d78-b41d-d69a13928c55

However, the original scene doesn’t carry much emotional variation—it feels like it stays within a single emotional tone throughout. So I wanted to imagine a new scenario to explore a broader range of emotional expression for my animation.

I set a scene where the protagonist hears others talking about “her,” and he falls into regret, guilt, and sadness. If he hadn’t been so impulsive back then, maybe she wouldn’t have ended up like this (maybe she died or is seriously injured and unconscious).

Then the protagonist says to those people: “I would not antagonize her.”
There’s some anger toward himself, and also sadness, guilt, and uneasiness. He doesn’t know how to face the others’ eyes.

I recorded some videos and tried really hard to recreate that emotion, but they all looked kind of strange. Then George suggested that when I record, I shouldn’t look directly into the camera lens. Instead, I should look somewhere else, because the character isn’t talking to the camera—they’re talking to someone who’s standing in a different position.

So I re-recorded the video and picked one take. I chose two main poses: at the beginning, the character is standing and facing away. When he hears the conversation, he turns and looks in that direction, then says the line.

Categories
Advanced and Experimental 3D computer Animation Techniques Project 2

Week 3 Write character and weapon blue print in Unreal engine

This week, I completed the following tasks in the character blueprint:

  • Set up footstep sounds
  • Added mouse input for aiming down sights
  • Created a transition to zoom the head during aiming
  • Adjusted walking speed while aiming
  • Added depth of field effect when aiming
  • Set footstep sounds specifically for aiming movement
  • Created the weapon blueprint
  • Wrote a custom event for weapon firing
  • Added a weapon state machine
  • Added weapon sound effects, bullet effects, and reload effects
  • Implemented bullet hit effects
  • Created a function to count bullets
  • Built the reload blueprint
  • Added natural bullet spread
  • Added recoil effect when firing
  • Added bullet glow effects

This week, my main focus was still on blueprint scripting. Once the character and enemy blueprints are done, I can just drag them into the map and use them directly. Although there are many follow-up steps afterward, the blueprints are definitely the top priority.

After finishing them, I’ll move on to reworking some model textures, building the scenes, creating the UI and main menu, and finally packaging the game.

Last week’s recording wasn’t very clear, and Windows Game Bar can’t capture multiple windows well.

Especially when I opened the blueprint editor, it kept recording the main window—pretty awkward!

This week, I found a recording software called OBS Studio, and I’ve discovered it works really well.

Set up footstep sounds:

I selected the audio files and created a single cue. Then, I added an audio modulator to unify the pitch and volume across these sounds, while also introducing random variations in pitch and volume. This way, when played back, the audio feels much more dynamic and natural:

Then, I went back to the animation asset and added a “Notify” — “Play Sound” — selecting the sound cue I just created.

Added mouse input for aiming down sights

Similar to before, I added mouse input, set it up as IA_focus (for aiming function), and linked it inside the character blueprint. This lets me control the focus with the mouse smoothly.

I used a timer to make the aiming zoom effect transition more smoothly. This approach will also come in handy later for toggling the flashlight and handling other action transitions.

Adjusted walking speed while aiming:

In the speed calculation function, I added a condition that if the character is aiming, the selected float value becomes 150(150 for the speed of walk with aiming).

Then I add blueprints for the weapon, cause there are some functions like reload ammo and ammo calculation, I need to split these from character blueprint, otherwise, it will be mass.

Then, in the weapon blueprint, attach (or spawn) the weapon to the character’s arm.

In the weapon blueprint, I set up the following event icons: fire_weapon, change bullets, and recoil.

In fire_weapon, I configured three states: start firing, firing, and stop firing. Then I used play animation montage to connect the animation assets to each of these states.

The rest of the operations are all shown in my screen recording:

Categories
Advanced and Experimental 3D computer Animation Techniques Project 2

Week 2 Write character blue print in Unreal engine

This week, I mainly worked on setting up the character blueprint, including:

  • Character capsule setup and camera setup
  • Character state machine setup (idle, walk, run)
  • Implemented camera rotation control using mouse movement
  • Added shift key input to trigger the running state and linked it to the state machine, enabling communication between the character blueprint and the animation blueprint
  • Added weapon drag effect (weapon swings slightly caused by camera movement)
  • Added character detail lighting (I wanted to create a warm light to simulate a body-attached light source, combined with a cold light for contrast)
  • Effect testing

Before getting started, I will provide all the assets I used and the link to the tutorial I followed. Since the tutorial I found is from the Chinese platform Bilibili, I won’t be able to share a YouTube link for the video resource.

Assets used:

1.Environment:

Dark fantasy greatsword pack | Unreal Engine 5 + UNITY – Naked Singularity Studiohttps://www.youtube.com/watch?v=_xR6SHgfhPU

2. Morbid Pack

Morbid Pack Volume 1 – https://www.fab.com/listings/8b88ac2e-9b50-4381-91d1-46683a89178b

3. Serpent Model I Created in Last Semester — Collaboration Units
(Full process: modeling, UVs, texturing, rigging)

4. Gargoyle Model I Created in Last Semester — Collaboration Units
(Full process: modeling, UVs, texturing, rigging)

5. Tutorial:

The course is taught by the creator of the game “Deathly Stillness”, which is available on Steam. Through the course, I learned how to create character and enemy blueprints, The character and zombie asset packs (including skeletal meshes, animation assets, and audio assets) were provided as part of the course and used for practice.

https://www.bilibili.com/cheese/play/ss32685?csource=Share_copylink&from_spmid=333.873.selfDef.purchased_lecture&plat_id=362&share_from=lesson&share_medium=iphone&share_plat=ios&share_session_id=B94F4E1E-BB07-40B1-83E1-A53774E26305&share_source=COPY&share_tag=s_i&spmid=united.player-video-detail.0.0&timestamp=1747402290&unique_k=528infI

Character capsule setup and camera setup

At the beginning, I set up the Animation Blueprint, Character Blueprint, and Blend Space for the character.

When I started setting up my character, the first step was to create a Character Blueprint. Inside the blueprint, I added the character mesh and carefully adjusted its position so it sat correctly within the capsule collider. This ensures that the character’s mesh and collision boundaries are properly aligned, which is really important for smooth movement and interaction.

I applied the same process for setting up the camera. I attached the camera to the character blueprint and positioned it in a way that works well with the gameplay perspective I want to achieve.

These might seem like basic steps, but getting them right early on saves a lot of trouble later in the pipeline—especially when starting to work with the animation blueprint and player controls.

Since the screenshots were taken later in the process, they include some updates like the arm texture and a few event icon features I added along the way.

Character state machine setup (idle, walk, run)

Inside the Animation Blueprint, I set up the State Machine, including Idle, Walk, and Run states.

Idle
Move

In the Blend Space, I blended the Idle, Walk, and Run animations, and set up the corresponding movement speeds.

For example, I set the walking speed to 300 and running speed to 750. Since my scene is quite large, I needed the character to move a bit faster to fit the scene.

Implemented camera rotation control using mouse movement

在角色蓝图的文件夹中,我增加了输入的文件夹,并加入了鼠标可以控制角色摄像机视野旋转的input action:

I also changed the bool input to Axis 2D, since the mouse controls the camera rotation based on X and Y movement on the screen plane. Using a bool would only allow simple on/off states, while Axis 2D lets me read continuous input values, which is more suitable for smooth camera control.

I used the Input Mapping Context to organize all the input settings and define the input devices, making the control setup more clean and modular.

I added a Look event in the event graph to call IA_look

Added shift key input to trigger the running state and linked it to the state machine, enabling communication between the character blueprint and the animation blueprint

In IA_run, I used a bool because it’s a simple on/off check—whether the key is pressed or not.

Similarly, I set up the Shift key input within the Input Mapping Context.

I added an if-run boolean check in the running graph. Then, I created a speed calculation function that uses this boolean—if the character is running, it sets the speed to 750, otherwise to 300.

Added character detail lighting (I wanted to create a warm light to simulate a body-attached light source, combined with a cold light for contrast)

This was my first attempt at adding a warm light attached to the character, so I added a point light inside the capsule.

Later during testing, I adjusted the light settings and created a toggleable flashlight-like feature for illumination.

IA_open_light
Open light function
I added this feature in the later stage, so I recorded it using the current version of the project files.

Categories
Advanced and Experimental 3D computer Animation Techniques Sessions with George

Week 4 Continue adjust animation

In this shot, George suggested that I redistribute the timing of each action, so the overall animation follows a slow-in, fast-out, slow-in principle.

Currently, my timing is more like slow-slow-fast-slow. Before the character stretches her leg toward the body, I added a preparation pose to build up energy, but George suggested removing it because it feels a bit awkward.

He also recommended speeding up the actions after the character lands and as she stands up, as well as making the following step forward quicker.

So I made some adjustments, but I noticed there are still some issues. For example, when the character is preparing to jump, I had her hold the pose completely still for three frames, but this made the movement feel a bit stiff. If I try to add a slight movement during those three frames, it ends up looking twitchy because the hold is so short.

Categories
Advanced and Experimental 3D computer Animation Techniques Sessions with George

Week 3 Key pose adjustment and spline

This week, I received feedback from George, made some changes to the key poses, and deepened my understanding of the animation.

It’s clear that the character’s foot poses need significant adjustments. As the end point of the limbs, the feet tend to have a slight delay at the beginning and during the movement — they don’t move exactly in sync with the legs or on the same level.

Here’s my spline:

Categories
Advanced and Experimental 3D computer Animation Techniques Sessions with George

Week 2 Advanced Body Mechanics Blocking

Moving Holds

Moving Hold means that when a character is holding a pose, they shouldn’t be completely still — there needs to be some slight movement. Even something as subtle as breathing, a small head tilt, or a gentle body shift can make the character feel more alive. If a character stays perfectly frozen for a few frames, it immediately gives off a “mannequin” vibe, especially in 3D animation where complete stillness feels unnatural. Compared to 2D, where we can use line wiggles or stylized shaking to fake subtle movement, in 3D we really have to animate those micro-movements by hand.

My personal understanding is: don’t let your character die on screen. Even just a few frames of subtle “fake movement” can add tension and realism to the shot.


Copied Pairs

Copied Pairs are a specific technique used to create moving holds. The process is actually pretty straightforward — you take your key pose and duplicate it, then move the duplicated keys a few frames forward on the timeline. This creates a pair of identical keyframes that hold the pose for a bit.

At first it might seem like a lazy shortcut, but in practice, you can slightly adjust the in-between to add a soft transition — like the character shifting weight, breathing, or gently swaying. It creates a subtle sense of motion within a hold.

I see this as a way to refine your blocking — beyond just having key poses and breakdowns, you’re adding mini-transitions that give your animation more depth and rhythm.

This is my attempt to moving holds and copy pairs:

I added a pause to the pose where the character opens her arms — I felt like she was building up energy for the next sequence of movements, kind of like a gymnast preparing for a routine. Then I copied and pasted the keyframes and extended their duration. In the spline phase, I adjusted the curves to give her a slight sense of motion, so it feels like she’s subtly shifting, not completely still.

BREAKDOWNS & Arcs

During blocking, it’s important to pay attention to the movement of the hands, limbs, and the COG — making sure their motion follows arcs instead of straight lines.

My blocking: