---
# System prepended metadata

title: CGI Pipeline

---

# CG Industry Pipeline

#### By Christina So (ID: 21412858)
---
## Week 1

For this project, I wanted to make stylised attack VFX for games like Honkai: Star Rail and Guilty Gear: Strive.

I've noticed, referencing many games and anime using this style is that they favour very vivid and saturated colours for the effects and a lot of the particle include 4-pointed stars and glittering effects, emulating a magical feeling.

Below is a scene from Little Witch Academia, an animated TV show. This scene shows the main character, Akko, drawing a bow and charging up her power. You can see bright green stars all around her body.
![image](https://hackmd.io/_uploads/HJk0oKTL1g.png)

This image is a screenshot from Honkai: Star Rail, where the character, Argenti, is seen deeling his finish move with a flourish of rose petals and stars.
![image](https://hackmd.io/_uploads/H1e92K6Lyg.png)

This reference is from Guilty Gear: Strive where the characters, AXL and Faust are attacking each other. Their attack effects are different colours to show personality and help differentiate from one another. This is also to help the player when they play the game so they can see the characters more clearly.
![gg effects](https://hackmd.io/_uploads/HkY1AKTU1l.jpg)

The final reference image is a screenshot from Honkai: Star Rail featuring another character. His name is Caelus and his attack features a more flashy, fun vibe compared to Argenti's attacks. This is to give the character more personalisation.
![hsr htb effects](https://hackmd.io/_uploads/ry6aRFa81e.jpg)



The software I need for this project includes Unreal Engine 5 and the Niagara system inside.

Maya is also used to make any weapons or props the character may use and Substance Painter 3D or Photoshop is needed to texture my model's UV maps.

---
## Week 2


This week was spent doing co-labs work, so I couldn't find time to further any work in the CG Industry Pipeline.

---
## Week 3

### Character Design

This character was designed for the Interdisciplinary Practices Unit of the course. The game genre, assigned by my teammates and I, was a Victorian Gothic-style fighting game inspired by Guilty Gear and Castlevania. I decided to focus more on the Victorian theme and made a character that embodied more of an "Antique Circus" theme. Their design incorporates a lot of royal diamond patterns and uses warm, bright colours with white and gold, similar to how carousel horses are painted.

![image_123650291 (3)](https://hackmd.io/_uploads/ryMvoF6LJe.png)


Using this character as a base for my CGI project, I wanted to create visual effects for their attacks. Since they are a jester, I wanted to incorporate some bright flourish of effects in their attacks and there's nothing more fitting than confetti and 4-point stars to match their design.

Some characters that incorporate confetti in their attack effects include Lyney from Genshin Impact and Hullabaloo from Identity V.

- Lyney's animations feature a charged attack from his bow into a prop that explodes once a certain amount of time has passed. His visual effects features confetti that compliments his red colour scheme and various other sparkling particles including 4-pointed stars.
![IMG_44466](https://hackmd.io/_uploads/HkVHPva8ke.jpg)

- YouTube: [Lyney's Attack Effects](https://youtu.be/j_jsju37f0Y/)

- Hullabaloo's animations feature 3 different basic attacks that feature minimal confetti until he builds up enough stacks to create a larger explosion of confetti and dealing damage.

- ![IMG_4446](https://hackmd.io/_uploads/SJewwP68kl.jpg)

- YouTube: [Hullabaloo's Attack Effects](https://youtu.be/HnTzQItCGHs/)

- Both character's effects include rectangular pieces of confetti and bright colours. Lyney's confetti has more ribbons while Hullabaloo's confetti has 5-pointed stars.

---
## Week 4

### Juggling Club Design

For my character's weapon, I based them off acrobatic props that people use in performances. One of the usual props is juggling clubs. They are large sticks (around 50cm) with one end wider and heavier to offset the centre of balance to one end. This makes the clubs easier to spin in the air and is good for entertainment purposes, since it makes the props extra flashy.

The juggling club I designed is based around my Jester/Clown character. The weapon is meant to act with similar properties to a hand grenade, only with different visual effects.

![IMG_4668111111111](https://hackmd.io/_uploads/SJXEJU6L1l.png)



---
## Week 5

### Juggling Club 3D Model

![image_123650291 both](https://hackmd.io/_uploads/HyCrlUp8Jx.png)

I used this week to model the juggling club in Maya and texturing it in Substance Painter 3D. I didn't go too detailed with the topology of the club, since it's not a very big prop; the chances of the player seeing it up-close is very minimal, therefore I skipped some of the details while modelling.

I have recorded a timelapse of the modelling process to show my workflow during this process.

![jug pin timelapse](https://hackmd.io/_uploads/H1v1KP2Uye.jpg)

YouTube Video: [Juggling Club Modelling Time-lapse](https://youtu.be/IMrlSMG25Ws/)

---
## Week 6

### Confetti Effects

The confetti niagara effects were made using particle materials of varying colours, shapes and sizes. I had also modelled a 3D mesh to be some ribbons in the confetti.
![confetti](https://hackmd.io/_uploads/ryDiim281e.jpg)
![image](https://hackmd.io/_uploads/S1hSPd2Uyl.png)
To make the particle material achieve a glowing effect, I multiplied the RGB emmissive colour. The parameter with the value of ten(10) attached to the multiply node is the value of how much the material glows in the world.
![image](https://hackmd.io/_uploads/B1bsvSTLyl.png)

- Below is all the confetti materials inside the Niagara particle system for the confetti explosion effect.
![particle effects explain](https://hackmd.io/_uploads/Hyek6X3Ukg.png)

- Using these editors, I can determine the appearance of the particles. This ranges from how big the particles look, how large the explosion goes and how dense the particles will be.

![particle effects explain1](https://hackmd.io/_uploads/BJ8mpX3Lkl.png)

- "Gravity Force" makes particles fall instead of just fading out mid-air.
- "Velocity" adjusts the speed of your particles and you can adjust them in a curve (E.g. It starts off with a high velocity but ends slower).
- "Initialise Particle" edits the lifetime and randomness of the confetti material.
- "Spawn Burst Instantaneous" determines how many pieces of each individual material spawn in at a time.


First test of the particles: [Video](https://youtu.be/bpxsjYZ7C5E)

---
## Week 7

### Character Modelling (Intermission)

This week, I decided to work solely on my other project. I was sculpting my character in Zbrush, finishing up the final pieces before bringing the model into Maya for retopology.

In this process picture, I was preparing to model the mask on their head.
![image](https://hackmd.io/_uploads/rJ75O_2L1x.png)


---
## Week 8

### Stylised Explosion

Alongside the confetti, I wanted the juggling club to explode with stars, similar to Lyney's effects where both stars and confetti came out of the cat in the hat.

This effect combines two different materials: a basic 4-pointed star shape and a circular shape.

The visual where the shape starts off small and fades out at their largest point is done by adding Dynamic Material Parameters to the particle. By adding a curve, I can adjust the scale of the material to make it expand at different speeds gradually. This mimics a shockwave effect that could translate well into an explosion effect.

- The stars are also scattered particles around the circle to give the explosion the effect of debris flying off. They also rotate for extra effect.

![explode effects](https://hackmd.io/_uploads/rJVqawhIye.jpg)

![image](https://hackmd.io/_uploads/SJe06PnI1l.png)

- There was an extra material I couldn't manage to get working. It was an impact force/fracturing material I couldn't get to fade out properly. It is stuck in the animated phase and can't find a solution to solve it.

This is the video to show where the material is stuck: [Video](https://youtu.be/k1i_hydkbBY)

The effect I'm trying to recreate is from the video by Rimaye "Create a Punch/Hit Effect [Stylised]".

After the stylised explosion is completed, I added the smoke effect onto the confetti to finalise the visuals. I recorded a video that showcases both the effects working on their own.

![both effects](https://hackmd.io/_uploads/HJXx_dhU1x.jpg)

#### Both effects working individually:
[YouTube Video](https://youtu.be/Dm0G1UBnT6I)

---
## Week 9

### Throwing the Club

Before I can make the juggling club be able to be thrown, I had to insert it into Unreal as a new component/Child Actor. This is so the game engine recognises that the mesh I made can be interacted with.

I started by creating a new blueprint and putting my mesh inside. I set the root as a sphere but soon realised it would make the collision of the juggling club mishaped (shown in the video below). I fixed it (in the same video) by making the root mesh using the same shape mesh as the juggling club. This is so the game can recognise that the collision is in the same shape as the appearance.

YouTube: [Fixing the Object Collision](https://youtu.be/5X1Ndy8ip00)

After sorting out the child actor (my juggling club), I began working on making the object thrown. This code is made for the engine to understand that I want the child actor to be ejected from in front of the player, wherever they're facing.

To do this, I added the child actor into the blueprint for my playable character and used that as a base for the engine to use as the starting point. The child acotr mesh is removed, but the XYZ points are still inside the playable character blueprint, which I can then insert into the "throwing" code.

![pin throw code](https://hackmd.io/_uploads/S1FzYPnUJx.jpg)
Below is the code I made for the juggling club's explosion effects. It activates upon a time delay and then plays the explosion effect once that time has passed. At the end, the child actor is destroyed once the visuals play.
![image](https://hackmd.io/_uploads/SJLJ4_p8kg.png)
![image](https://hackmd.io/_uploads/Sk2W4_p8Jg.png)

While the code works, it is not suitable for every scenario since it explodes ONLY after time has passed, not upon impact. The player could be lucky and the club hits the wall as soon as the delay has passed, but if there's not wall, the juggling club just explodes mid air.

There is also the issue where the object still exists after the explosion takes place. I discovered that trying to make the juggling club explode as soon as possible would not play the confetti or explosion effects at all.

This code was referenced from "Grenade Predicted Path Trajectory" by Matt Aspland.

YouTube: [Juggling Club Not Disappearing](https://youtu.be/KyU8oToTLro)


---
## Week 10

### Exploding On Impact

I tried new code so the pin explodes on impact instead. I replaced the "event play" node with and "event hit" node so the code would activate upon colliding with something instead.

![image](https://hackmd.io/_uploads/Hkex4_381x.png)

Upon testing, I realised that normalise and break hit result don't do anything to the actual result and deicded to remove it. The same goes for "spawn emmitter at location" because it isn't compatible with the niagara particle system I made. I used a temporary particle effect to test my impact code instead.

The video shows that the juggling club only explodes once in contact with the player's model.


![image](https://hackmd.io/_uploads/rkHVuunIyx.png)

YouTube: [Juggling Club Only Collides with Player](https://youtu.be/jZSGb-74XrQ)


---
## Week 11

### Exploding On Impact (Part 2)

After further investigation, I've discovered that the code did not do what I wanted because the root of the child actor mesh did not have the node "simulation generates hit events" ticked. This means that the object doesn't register what it hits, only what else hits it.

I changed the event starter so the code only activates once the component/child actor experiences any collisions.

I added in my Niagara particle systems using a different node and split my effects up into 3 different parts: Confetti, Star & Circle, and Star clusters. The reason for this is because the extra stars around the stylised explosion needed to be scaled up in order to be seen clearly. At the end of the code, both the mesh and its root collision will disappear.

![jug pin explode on impact](https://hackmd.io/_uploads/BymBYDh8kx.jpg)


## Final Results

![IMG_4938](https://hackmd.io/_uploads/rJaH3t3Uyl.jpg)

YouTube: [Final Exploding Juggling Clubs Effects UE](https://youtu.be/JLU8vq9xgXA)


## Reflection

For my final thoughts on the project, I think it was really fun creating Niagara particle systems in Unreal Engine. For my first time using Unreal, it was a pleasant experience. There were a few hiccups and things that didn't work, but I managed to end up with an end results I'm happy with. I learned a lot of things making these effects and I'm more confident about working in Unreal now that I have some experience with the workflow, how I may need a lot of trial and error before I can get something looking the way I want it to. I'm glad I managed to figure out how to make the clubs explode on impact. It was really bothering me visiually that the juggling club still existed even after the explosion took place and it should theoretically not be there.

To improve, I wanted to make the juggling club spin while it was being thrown, but I'm not sure how long it would take me to code it in and if I have any time left to experiment. I also wanted to apply this whole project to my animated character, but I do not have a character that is already rigged and animated pre-prepared for this. It may be my goal next project to complete my character's moveset and visual effects in Unreal Engine 5.

---
## Bibliography

- "Grenade Predicted Path Trajectory" Matt Aspland YouTube Video: https://youtu.be/TAnzmz2AviY?si=AFVWktNOn3J0unA9 (Last accessed 8th January 2025)
- "Create a Punch/Hit Effect" [stylised] Rimaye YouTube Video: https://youtu.be/gXeoGDj3dHg?si=K0EUV6f4yHrXgQ1i (Last accessed 8th January 2025)