Monday, December 1, 2025

Interactive Experience - Stage A

1. Implemented anim montage for interactions
2. Made sure that the flask and interaction animation won't play when character is moving or jumping / finishes the montage first

<Showcases better in game playthrough>

Thursday, November 13, 2025

Interactive Experience - Stage B

 1. Updated the weights on the new mesh!



































2. Replaced the new skeleton mesh in the engine and made sure movement works with the controller. Also added gamepad controller input!:






















3. Cell Shade Update: Testing with a non-realistic textured model as suggested!


With Cell Shade:
























































Without Cell Shade:
































    Player character with cell-shading:



Inheritance

Script Objective:

1. I would run the import script first to get the geometry, csg, box, and tube module I created, then my code to get the desired output I wanted:














2. Final Shape:





























Perforce Proof:



Thursday, November 6, 2025

Interactive Experience - Stage C

 

Shaders and Post-Processing Effects

1. Updated Post-Process Shader Material

  • 4 bands
  • Bands are each affected by the lights
  • Shadow contrast
  • Ability to tint shadow and highlight
























































2. Updated Wine shader
  •     Surface distortion when moved


























3. Material Research:

Using the Substance Painter Stylization filter to create a hand-painted brush stroke effect:

  • Affects all maps, including normal maps
  • Added on top after the mesh is painted
  • Easily integrate the maps into the engine's material instances.


4. Fixed foot sliding!





Python Classes

 

CSG Object Calculator


Script Objective:
This script creates and manages geometry in Houdini with Python:
  • Auto-placed Objects: Each new object appears in the scene with a name label.

  • Merged Layout: All objects are in a single container.

  • CSG Operations via Python Operators:

    • ~ Invert

    • + Union

    • - Difference

    • & Intersection


1. Objects laid out with labels. Using the code stated in Canvas to test out the calculator:











box = CSG("box", "box")
sphere = CSG("sphere", "sphere")
thing = CSG("thing", "testgeometry_rubbertoy")

#Operations
union_result = box + thing
diff_result = thing - sphere
intersect_result = box & thing
invert_result = ~thing


2. Other operations:














#Operation Difference from first result:
union_result = sphere+ thing
diff_result = thing - box
intersect_result = sphere& thing



Troubleshooting:

When I was writing the script, it kept on giving me an invalid node name error, so I just looked up the error on Google and scoured several forums, which led me to the Python documentation for isalnum, allowing me to hardcode and remove any special characters Houdini does not like:
  • only allow letters, numbers, and _
  • for c in name: iterate over every character in the string
  • c.isalnum(): true if character is a letter or number
  • or c == "_": allow _
  • else "_": any invalid name characters are replaced with _
  • "".join(...): stitch back the string together






c meaning character




Perforce Submission:
//CLASSES/Cohort22/Students/Jocelyn.Fayola/Tech Art/Python/HW10.py










Thursday, October 30, 2025

Interactive Experience - Stage D

Finalizing Rig and prototyping VFX


Rig systems all finished:


Anim State Machine:





Created modular parent material and material instances:











Researching using cell shader with multiple banding to interact with materials:






Candle VFX:


Wine Shader:






Functions & Data Types

 

Creating My Army of Darkness


Script Objective:
The user inputs the base number of soldiers and level depth, and the script generates an army based on this formula:
Base = number of soldiers when squared comprises a unit (1,4,9,25, etc)
Level-1 = number of times to square to base
Number of soldiers = (Base^2)^(Level-1)
Eg. Base 2, Level 5= (2**(2*(5-1))) = 256

1. The user has to type in the base value and level depth




































2. Generates an army of soldiers "separated" in units for random colors and shapes. The soldiers are also rotated randomly.


Examples:

Base: 2, Level: 2 = 4 total soldiers
























Base:4, Level: 3 = 256 total soldiers


























Base:5, Level: 4 = 15625 total soldiers


























Perforce File Path:
//CLASSES/Cohort22/Students/Jocelyn.Fayola/Tech Art/Python/HW9.py








Start of FIEA Portfolio