Folding Robot
I designed and animated a six-limbed character in Maya, mastering 3D workflows and earning an A-grade for innovative features like a transforming shell.
For a recent school assignment, I worked extensively in Maya to design and develop a unique character featuring six or more limbs. This project encompassed the full 3D production pipeline, highlighting my versatility and proficiency in multiple areas of 3D art.
I began by creating concept art to define the character's appearance and functionality. From there, I modeled the character with attention to proper topology for efficient rigging and animation. Rigging the skeleton came next, where I implemented a robust system to manage the complexities of animating additional limbs.
I also performed UV mapping to prepare the model for texturing and set up a custom controller to streamline the animation process. Finally, I brought the character to life by animating it and assembling all components into a cohesive, polished presentation. This project demonstrates my ability to combine technical expertise and artistic vision to bring creative concepts to fruition.
One aspect I’m particularly proud of is the controller I created, which allows the character to curl into a ball and move its eye independently. This controller significantly simplified the animation process and added versatility to the character’s movements.
From the start, I set out to challenge myself by designing a character that could transform by curling into a ball. This required careful planning and problem-solving, particularly for the shell construction. My solution involved separate plates that functioned as armor when the character was walking and formed a cohesive wheel when curled up. This design not only enhanced the character’s functionality but also pushed me to think creatively about animation and rigging mechanics.
Throughout the semester, we had classes where our teacher introduced new techniques in Maya, walking us step-by-step through the process of creating an animated model. These lessons provided invaluable guidance as we worked on our characters.
Each week, I received constructive feedback from the teacher, which helped me refine and improve my character at every stage. This feedback was instrumental in identifying areas for enhancement and uncovering errors I hadn’t noticed before.
My teacher’s encouragement and positive remarks about my work—especially his comment that he was very happy with my character—were both motivating and affirming.
In the end, the dedication I put into this project, combined with the insights gained through feedback, resulted in an A grade. The experience not only deepened my understanding of the character creation process but also strengthened my skills in problem-solving and attention to detail.
Rive to Unity Implementation
For Flashback, I used Rive to create an interactive UI, integrating dynamic animations and events into Unity.
I worked with a UI creation tool called Rive to design and implement an interactive user interface.
Rive utilizes inputs to switch between animations, which can also send signals to Unity for further interaction.
After creating the UI and configuring all the events within Rive, I integrated it into Unity by developing a script
to manage these events and execute the appropriate methods, such as handling resume
and exit
button actions.
Some UI elements needed to be dynamically updated at runtime, so I designed accessible methods to allow team members to easily modify these elements during development. Additionally, certain elements, such as sliders, required sending their values to inform other components about their current state.
This was my first experience working with Rive, and it provided an excellent opportunity to deepen my understanding of the tool and its integration with Unity. I utilized various resources provided by Rive to learn how its system communicates with Unity, enabling me to effectively extract inputs and events and implement them in a cohesive workflow.
The UI was developed for a game called Flashback, a university project that ran from October to December. In the game, players experience a narrative where they recall events from the past and relive them through engaging minigames. My role focused on designing and implementing an interactive and dynamic user interface, ensuring it enhanced the game's storytelling and gameplay.
The project did not necessarily require Rive implementations and could have been completed using Unity alone. However, it provided a valuable opportunity to explore and experiment with a new tool, broadening my technical skillset.
Working with a team of fellow students, I contributed to the technical development while collaborating closely with designers and programmers to ensure the UI aligned with the game's overall vision. One key challenge was integrating Rive's unique animation system with Unity, which required researching and applying innovative solutions.
This project taught me the value of experimenting with new tools and technologies, as well as the importance of creating accessible systems that empower team members. Looking back, I would like to explore ways to further optimize the Rive-Unity integration for better performance and extend the UI's interactivity for future projects.
Check out Flashback on itch.io!
Have a look at C# Script for displaying the Rive on Unity.
Have a look at C# Script that handles the Events based on the current Rive scene.
Have a look at C# Script that handles the HUD controllers.
This project was a collaborative effort with valuable contributions from the following team members:
- Håkon Alstad - Role: Team Leader, Sound Designer
- Lars Gustav Fossen - Role: Programmer, Game Designer
- Torje Bergersen - Role: Programmer, Game Designer
- Noa Mortensen - Role: 3D-Artist, Programmer
- Anatoli Maroz - Role: Programmer
Colour Picker
For Tiny Alien, I developed a flexible system for runtime color changes, streamlining the customization of scenes
For this project, we needed the ability to change the color of each object at runtime. To achieve this, I created a script that automatically changes the material of an object to the corresponding color when needed. To streamline the process and make it more maintainable, I designed a separate object that holds all the materials and colors. The script retrieves the appropriate material from this object based on the selected color and shade, which I defined within the script. This setup makes it simple for other team members working on level design to attach the script to their objects and easily assign the correct color.
This approach also improves workflow efficiency, as level designers no longer need to manually assign colors to each object. By simply attaching the script and selecting a color from the predefined list, they can quickly customize objects without worrying about the technical details of material handling.
Additionally, when the scene loads, the script automatically assigns a default grey color to each object, ensuring that level editors don't need to worry about manually setting the material for each object.
This system was designed with performance in mind. By centralizing all materials and colors in one object, we minimize resource usage and avoid redundant assignments, making the color change process efficient even in complex scenes.
This script was developed for the game Tiny Alien, where an alien gets stuck on a planet and needs to collect crayons to fuel their ship and color the world around them. The script was critical to the game's functionality and went through a few iterations as the game's design evolved.
Initially, I created a separate script to manage the spawning of crayons in different scenes and their interactions when collected. Our original concept involved each scene starting in grey, with the player collecting colors to gradually colorize the world. However, this idea was later adjusted, and we decided that one color would be used to color the entire game. Thankfully I made the script easily changeable, so I was able to easily adapt to this new design change and implement it smoothly.
After completing the project and reflecting on my work, I’ve been considering the possibility that using Unity's Shader Graph could have been a more efficient solution than the one I implemented. Using shaders might have allowed for a more flexible and visually appealing way to handle color changes across the game. This is something I plan to explore further in future projects.
Check out Tiny Alien on itch.io!
Have a look at C# Script that holds all the colours.
Have a look at C# Script that handles the colour change.
This project was a collaborative effort with valuable contributions from the following team members:
- Inger-Marie Ask - Role: Team Leader, Game Designer
- Lars Gustav Fossen - Role: Programmer, Game Designer
- Noa Mortensen - Role: 3D-Artist, Programmer
- Alexandra Simon - Role: 3D/2D Artist
- Lorenzo Dell’aquila - Role: 3D Artist, Level Builder
- Paul Pemba - Role: Level builder
Tools & Software
Icons below represent tools I've worked with.
Autodesk Maya
Adobe Photoshop
Adobe Illustrator
Adobe Premiere Pro
DaVinci Resolve
Rive
GitHub
FMOD