
MARTIN MADRID
Technical Direction Portfolio
Computer Science / Media Arts Student
@ UNSW Sydney
Home / Maya Scripting Projects
Maya Scripting Projects
To support the production of my creative 3D graphics projects, I developed a set of tools using Maya's Python API to automate the creation of assets.
Retro Japanese Games Store (2023)
The Retro Japanese Games Store (3D interior environment) was inspired by the densely packed shops in Tokyo’s Akihabara in which its history of selling technology and popular media made it Japan’s techno-cultural hub. It is the hidden nature of these stores that attract those who confine themselves to their hobbies. This social aspect paired with the country’s geographically compact urban environment greatly influenced the design of my retro games store.What I am reminded of most is how a lot of the fine details in digital media ultimately go unnoticed by ordinary viewers. However, it is the combination of these small details that form the bedrock of realism.By scripting my own material generation tools, I was able to efficiently fill the store’s environment with an extensive variation of disc covers and game cartridges, and automatically create emissive animated screens from video files.
Skills
Python Scripting
3D Modelling
Texturing / Lighting
Abandoned Memories (2024)
Abandoned Memories (3D interactive environment) was inspired by the changing rural landscape of Japan, as people leave their countryside homes as they move closer towards the major cities. Using this theme, I crafted an interactive environment that uses a miniature diorama aesthetic to depict an abandoned Japanese town.The user is situated in the perspective of a person who was forced to move away from their rural home, looking back in time through the model they had created to evoke their treasured childhood memories. This aesthetic was influenced by contemporary artists and hobbyists who use miniature models to construct familiar environments, driven by a deep-seated sense of nostalgia and a longing for order and logic.By scripting my own train rig generator tool, I was able to effectively create the miniature diorama aesthetic through the inclusion of a model train, fulfilling my nostalgic and playful creative vision for my interactive project.
Skills
Python Scripting
Unity C# Scripting
3D Modelling
Animation
Home / Maya Scripting Projects / Material Variant Duplicator
Material Variant Duplicator Tool
Objective
To ensure realism, I wanted to add a wide variety of products into my games store with different sticker and cover image textures. Since replacing image textures is a highly repetitive task, I created this tool to automate this process.
Process
Planned and designed the tool’s user interface using a 3D artist’s mindset, ensuring that a non-technical intermediate Maya user is able to intuitively utilise the tool.
Developed the back-end of the tool using Maya’s Python API. The tool takes a user-selected object, material, and image set, duplicates the object, and replaces the material’s color attribute with each image in the set.
Tested the tool’s code using Maya’s supported image file types and Arnold’s standard surface material.
Result
Using my automated tool, I was able to generate over 80 unique cartridges and disc cover models with different image textures instantly. By creating separate model files, they were used as randomised replaceable instances.
Home / Maya Scripting Projects / MP4 to Animated Material
MP4 to Animated Material Tool
Objective
To add nostalgic appeal, I wanted to have animated screens of retro video games that would play during the fly-through of the environment. Converting video files into an image sequence requires an external application to Maya, and applying that to a material is non-intuitive. I created this tool to automate this process.
Process
Planned and designed the tool’s user interface using a 3D artist’s mindset, ensuring that a non-technical intermediate Maya user is able to intuitively utilise the tool.
Developed the back-end of the tool using Maya’s Python API and OpenCV.
Since OpenCV is not installed on Maya’s built-in Python, the process of extracting an image sequence from the video is an external subprocess that runs from the user’s version of Python.
The image sequence is then automatically applied on the selected material’s colour and emission attributes.
Tested the tool’s code using MP4 videos and Arnold’s standard surface material.
Result
Using my automated tool, I was able to instantly import video files into materials to create the glowing animated screens without using external encoding software and manually setting the material.
Home / Maya Scripting Projects / Train Rig Generator
Train Rig Generator
Objective
To enhance the diorama’s playful appeal, I wanted to include an animated model train that circled the environment. Since rigging an entire set of train carriages is a long and highly repetitive task, I created this tool to automate this process.
Process
Prototyped an initial train rig to determine joint positions, pivot points and aim constraints such that the train’s bogies rotated according to the path’s curvature, independent of the main carriage.
Figured out the minimum number of locators required and their positions per carriage to generate a full train rig.
Planned and designed the tool’s user interface using a 3D artist’s mindset, ensuring that a non-technical intermediate Maya user is able to intuitively utilise the tool.
Developed the back-end of the tool using Maya’s Python API. The tool takes carriage models with specfically named locators, which it uses to generate a series of joints and aim constraints along the length of the train.
Tested the tool’s code using multiple lengths and variations of trains.
Result
Using my automated tool, I was able to instantly generate new train rigs and animations. This allowed me to easily make changes to my train design without having to stress about manually creating a new rig.
Home / Game Programming Projects
Game Programming Projects
In combining my technical and creative disciplines, I helped to develop game projects in collaboration with other artists and programmers.
The Academy of Kinetic Magic (2024)
The Academy of Kinetic Magic is a 3D fantasy puzzle platformer game with object manipulation abilities. The player assumes the role of a mage who attends a school that teaches magic where they must demonstrate competence in five magical abilities to pass their final exam. Throughout each module of the game, the player has access to a different set of magical abilities to traverse the environment and solve various puzzles with the aim of mastering those abilities and fulfilling the requirements of the exam.For this group project, I was responsible for developing the rewind mechanic.
Skills
Unreal Engine 5 Blueprint Scripting
3D Modelling
Home / Game Programming Projects / Rewind Mechanic
Rewind Mechanic
Objective
One of the magical abilities that the group wanted for the game was a rewind mechanic, where a player would be able to freeze time and move objects to previous positions to complete a set of puzzles. My contribution to the project was developing this ability and its associated puzzles.
Process
Planned and designed the mechanic’s user interface, ensuring key-binds were intuitive by making use of the mouse scroll wheel to move an object forwards/backwards through time.
Developed a stack data structure that efficiently stored and retrieved object position, rotation, and velocity for every event tick. This was limited to a 30 second history to optimise memory usage.
Added more visual cues to assist the user, using a line to show where an object has been and a progress bar to represent the object's limited stored history.
Tested the mechanic with different puzzles and multiple playthroughs to address and minimise the occurrence of unforeseen bugs.
Result
By creating this mechanic, we were able to add three new puzzles to our game project which all used the rewind mechanic in creatively challenging ways. This made our game more novel and engaging for the player to experience.The Academy of Kinetic Magic project received a score of 100 (High Distinction), placing our group as first-in-course for Computer Graphics.
Home / Front-End Interface Design
Front-End Interface Design
With an interest in design, I specialised in the meaningful construction of front-end user interfaces, allowing non-technical users to navigate and utilise a technical system in an intuitive and efficient manner.
ProFolio (2024)
ProFolio is a mobile app designed to help final-year arts students efficiently create, customise, and share their digital portfolios. It addresses the challenge of balancing ease-of-use with creative customisation, offering an intuitive drag-and-drop interface for building a personalised portfolio page using modular components.ProFolio enables users to showcase their work to the wider community of recruiters and other students, ultimately supporting creative graduates in networking and securing employment opportunities.For this group project, I was responsible for developing the main portfolio creation and customisation feature.

Skills
React Native
Home / Front-End Interface Design / Portfolio Customisation Feature
Portfolio Customisation Feature
Objective
The key challenge that our ProFolio mobile app needed to address was the balance between ease-of-use and customisation. Many portfolio creation apps are easy to use but don't much customisation options on the artist's page. Other apps are highly customisable but are harder to use.Our group had come up with an idea to have a modular drag-and-drop customisation system. My contribution to the project was developing the main portfolio customisation feature.
Process
Planned and designed the user's portfolio editing interface, performing extensive research and testing low-fidelity paper prototypes on sample users. Inspiration for the portfolio's vertical drag-and-drop design came from Kanban Boards.
Implemented a high-fidelity interactive prototype on Figma that was tested on a larger sample of users to finalise the design for development.
Programmed the design of the portfolio customisation feature using a React Native package called DraggableFlatList, allowing modules to be added and arranged on the user's personal portfolio.
Integrated a persistent database into the app, allowing for portfolios to be saved and viewed by other users.
Tested the portfolio customisation feature with different users, making further adjustments based on their observed behaviour to better suit their needs and expectations.
Result
By creating this feature, we were able to produce an app with a customisation interface that is simple and intuitive, providing a moderate amount of user freedom to compromise for better ease-of-use. This feature ultimately allows non-technical users to creatively design their personal portfolio page in a short amount of time.
Click Images to Enlarge