Experience Update

It has been a busy few years. This post highlights some key new experiences in the following areas:

  • Unreal
  • Blender
  • Mobile Development – React Native (by proximity ios and Android)
  • Web Development
  • AWS Systems

Unreal

To challenge myself I did not use any pre-made assets from other sources.

Stylized Research

The primary goal of this research was to branch away from all the copy-and-paste presets out there, and to really understand the minute details of the engine. By manipulating mesh normals I had creative control over how light interacts with objects. Since hand-painting is time-consuming I developed smart materials in Substance Painter to drastically speed up the time it takes to texture an object. With efficiency and scale always in mind, I used UE4’s powerful RVTs (Runtime virtual textures) and blueprints to create the stylized shaders you see in the gif below.

Star Duck Game Demo

For details on the process please visit the campaign here.

For this demo, I led a team of five. A rigger, two character modelers, audio effects artist, and a composer. The rest I did myself – animation, programming, lighting, texturing, VFX, UI, story, game design, concept art, environment modeling, marketing, and business planning. Despite not being fully funded this was a rewarding and educational experience.

Loading StarDuck gif....

Blender

Multi-res normal exporter

While sculpting high-resolution details in Blender I realized that it needs a quick way to export what you need to Substance Painter. The manual export process is repetitive and arduous. So, I scripted a program that ensures all the attributes are correct behind the scenes (setting everything up where nothing exists yet), and voila!- normals and fbx’s are made with proper Substance Painter nomenclature after a single click.

Realtime real-world interface into Blender with MPU-6050 gyroscope/accelerometer

Here I programmed an Arduino to port serial data from an MPU-6050 into Blender. While delivering raw data between the devices is not too complicated – the challenge was finding a well-balanced filter to prevent jittering and drifting that is performant enough for the lack of processing power the Arduino contains while keeping the connection as real-time as possible. I believe I found that balance and with this solution can move forward to build upon these foundations.

Mobile Development

Chargenet Stations mobile charging app (ios/Android)

Using React-Native, I established the front-end architecture/infrastructure for an app whose primary focus is to allow users to charge their EVs (electric vehicles) at our Chargenet stations locations. As the front-end lead, I guided 2 interns, 1 front-end developer, and 1 designer to fulfill the vision of the company. I used Expo and Github actions for CI/CD (Continuous integration and deployment) which allowed quick updates to both the Apple and Google Play store. I used the Jest test suite and a few proprietary tools to emulate charging using OCPP (Open Charge Point Protocol) standards.

Web Development

UCSD Department of Psychology games

I worked closely with department heads to make two games for their research. The full-stack environment I used was PEVN (Postgres, Express, Vanilla JS, Node.js). One of the games was a slight variation of the Monty Hall problem. In this variation, the determining factor of the reward you get is based on what portion of the door you click. Clicking the top half of the door gave you an 80% chance of receiving the gold. Clicking the bottom half gave you a 20% chance of receiving the gold.

Every click position was recorded to a Postgresql database and mapped for research needs along with a questionnaire that followed the end of the game.

The game runs on anyone’s browser. I chose Blender to create the 3D assets. From there I could export gltf’s (graphic language transmission format) to use in conjunction with the Three.js library to bring the interaction, lighting, rendering, and animation to life.

Learning to Exploit a hidden predictor in skill acquisition: Tight Linkage to conscious awareness

The other game was a re-creation of a paper published by the department. More info on that can be found here.

AWS/Web

Chargenet Stations Dashboard

This is proprietary and private (so no gifs to show). The dashboard I helped architect and develop offers investors and the Chargenet operations team access to real-time data from EV chargers.

The goal here was to allow users to securely log in, view chargers at any given station along with their operational status, reset them, and/or assign them as available/unavailable.

The architecture choices are cutting-edge. For the front end, I chose Next.js (which by proximity includes React). This server-side rendering paradigm allows for secure information transfer and highly responsive user feedback. We connected with our data through Graphql and REST endpoints. Tests are conducted with Jest and Cypress. CI (continuous integration) with GitHub actions. CD (continuous deployment) with a combination of AWS CDK (cloud development kit) and our containerized apps built with Docker.

CDK helps combine a myriad of AWS services to create a robust and highly scalable web app. These services include:

AWS Lambda, SQS, S3, ECS, EC2, Fargate, Gateway, Secrets Manager, IAM Roles, Route 53, and Cognito.

The Resurface – Live Behind the Scenes

visit http://www.twitch.tv/prologuegames for my live animation stream at 1pm today! If you miss it, because you have work like me… it’ll be recorded on the twitch site.

Lots of changes have been happening since the last time I posted. Great changes, though. For the past 5 months I’ve been doing animations for Prologue Games! It has been a blessing to work with an awesome, artistic, driven team. Now, I’m excited to say you get to see the behind the scenes live! Our environment artist streams live on Tuesdays 1-3pm EST, and I’ll be streaming today and following Wednesdays 1-3pm EST. Yea, 2 hours is long, but just take a peak, get an idea what CG animation is like. And if you are an animator yourself, there should be some good tips for processing animations from Maya to Unity.