Creating Fuchsia Plants

Tutorial / 29 August 2020

For my most recent scene (Greenhouse) I took the time to make hanging Fuchsia baskets. I’m going to go through the breakdown of how I did this.

Reference / Research

The first thing I did was a ton of research and reference searching for what type of Fuschia I wanted. I own a few Fuschia plants that were not in bloom yet when I started this so I wasn’t sure if I wanted to do the owns I had or another variety. There are 110 species of Fuschia and a majority of them are categorized as shrubs or trees, within that they are also split between trailing (hanging, vine-like) or upright (shrub or more tree-like).

In the end, I decided to go with a Fuschia I owned (Igloo or Wedding Cake - both trailing ) since I could take clippings to use later on and gather more precise reference.

First Pass Textures

When I started to work on the atlas sheet for the Fuschia, the plant was still not fully in bloom. So I did a rough pass from photos and from the few clippings I brought inside. I sculpted the atlas in Zbrush with the hopes to get a good material from Substance Designer with it. There was a lot of troubleshooting to get a decent first pass texture.

WHAT DIDN'T WORKED: Taking the high poly model of my atlas and baking onto a plane in Substance Designer OR Substance Painter. I got a lot of noise in my normal/height/ambient occlusion map. It was something I tried to troubleshoot for about 2 days and then found another method.

WHAT WORKED: Taking screenshots within Zbrush of the maps I needed and tweaking them within Substance Designer.

Modeling Foliage Cards + Flowers

For the branches, I went with the simplest way to do the foliage cards. They are on a single plane (2x10), I tried my best to have the branch line up with the middle edge for ease later when placing the flowers. I could then just snap the flower stems to that middle vert for ease of placement. The flowers are a bit more complex. I modeled the ‘bulb’ of the flower, then everything else is cards.

To help with ease of placing and creating branches I made a joint chain for my branches card and applied a twist deformer. That way I could create different varieties of my branches that would look interesting from all angles. With the branches being on a simple plane and not modeled, it's possible from certain angles you won't see certain branches. By twisting the branch it makes it more interesting and doesn't leave you with gaps in your plant from certain angles. I also made a joint chain for the flower stem for more variety of placement.

Final Pass - What Changed? 

While doing my final pass what changed most was the textures. I ended up doing photo scans of the flower broken apart to use along with the leaves and branches. I edited them in Photoshop, then took them into Substance Designer for further editing to get all material outputs I needed. The other thing I did was fix the vertex normals, which was something I forgot to do in my first pass.

End Result

In the end, the Fuschia turned out better than I anticipated and I learned a lot. My advice to anyone who tries to do something similar; 

  1. Vertex normals are important

  2. You can always do another pass on textures just figure out the layout of your atlas sheet to save time later. 

  3. If your initial plan doesn't work out, it's okay to pivot. Especially if troubleshooting is taking up a lot of time you did not anticipate.

I hope this helps anyone who is working on foliage projects! If you are curious about more of my process for this project you can check out my twitter thread of process work here!

VRacious - Liar's Brew (Game)

Article / 11 April 2019

Liar's Brew was a VR game for the HTC Vive that I worked on our team VRacious. The game was made in UE4 and our team had a total of 18 contributors (9 artists, 6 tech/design, 3 sound). I was the Art Producer and Tech Artist on the team. I was in charge of communicating all art tasks from the tech team to the art team, anything shader/vfx/lighting related, and helping our producer.

Liar's Brew Premise!

You are a student trying to pass your final exams by any means necessary. You can collect notes or cheat. You just have to try to pass.

Below I have my demo reel for the tech art things I worked on, screenshots of other work, and the trailer of the game.

See the process and break down of this Emote Shader here

UE4 Emote Shader (Facial Expression Flipbook) *Updated!*

Tutorial / 15 December 2018

For the past year, I have been working on a VR game as a student project. The premise of this game is that you are a student in wizard school trying to gather information and ingredients for a test. Due to it being in VR and tech limitations we were trying to think of smart ways to have the students convey emotions and facial expressions without doing a full face rig. At the time Animal Crossing came out on mobile. Then it dawned on us to have all expressions be UV animated and textures.

So this began my journey.

1st - Reference & Research

I gathered as much reference as I could of games that did this to make sure it would even look good in a 3D world. Zelda games and a lot of other Nintendo games through the years have always used a method like this so I was not worried. Then I came across a game in development currently called Billie Bust Up that has a video of how they implemented their 2D eyes.  (link: ).

The only catch was our game could not have that many joints in the faces without causing troubles since our original goal was to have 20 students on screen at any given time. BUT this gave me the idea that I could do this and there was hope.

2nd - Prototype

I worked for a while trying to get things to work in the UE4 shader network - then I stumbled upon flipbooks. Flipbooks are a way to project sprite sheets onto a 3D object - so it would be a way for us to animate faces or any other object. So I figured out a rough way to implement it and did a rough prototype to show to my team. The designers were blown away and we moved forward from there thinking about what expressions we should use, how the students should act, etc. I talked to the character artist on our team and they began to make the sprite sheets while I began to figure out the shader.

3rd - Shader Functionality

The emotes are controlled by a named Scaler Parameter, mine is named Emote. That way the designers/programmers can use it in the AI. The parameter has a min and max value and a default value. I plug this into every if statement into A.

For the If statements the B is whatever value I want them to be. I have comments in my shader so I remember which value each is and so do my programmers.

I use a Lerp to plug in my skin color and my emotes using the alpha channel. My skin color is in a material function due to us having 3 different skin tones and randomizing students. Whatever you want to be shown as black in alpha channel plugs into A, whatever you want to show up as white plugs into B.

For your first emote I plugged my Lerp into both A==B and A<B due to the fact that I want this to be my only option, I also have a constant value for A>B for all emotes.

For the next emotes I do the same thing except I plug the last emote's if statement into the next if statement in A < B so they are always connected.

Note: The emote should always plug into A==B due to whatever value your if statement is set to. When the scaler parameter changes to that value it will show that emote. (So in my case 1 = 1 will show default face)

Now for the flipbooks, I used a material function just to help with space.

The Flipbook is very simple. I just needed to tell it the number of rows, columns, and speed my animation was going to be. Then plug the flipbook node into the UV's. After that make sure for the material function had another output for alpha and name it correctly. You can play with the speed a little bit and get some interesting things.

By the end, I had something like this.

4th - Result

In the end, I had something like this. The shader had 5 emotes, 2 of which were animated through flipbook. We also used this technique to put emotes on a hat in the game and on a few other things.

5th - Performance & Draw call

Due to needing to lower the draw call I ended up returning to the emotes and making them cheaper. I put each animated emote on their own flipbook and all single image emotes on a full sprite sheet. I then did the math so the Emote Parameter could skip between the still images for that flipbook then go to the animated flipbooks with no problem.

Here is the material blueprint so it may make a little more sense.

Here is also the final result!