Working in Real-Time, Remotely

Unity’s award-winning real-time short, WiNDUP, is a touching animated film about a young girl, her loving father, and the healing power of music. The short, already accepted by over a dozen international festivals, was created by a small, mostly remote team during the unprecedented changes and challenges of 2020. Chris Kang, the team’s vegetation artist, took the time to share his WiNDUP experience and workflow with us! 

Get to Know Chris Kang

Amanda Windsor (AW): Give us a rundown on your background and career path. How did you get interested in modeling, what were your early professional experiences, and how did you end up at Unity?

Chris Kang (CK): Hi, my name is Chris Kang, I’m currently working at Unity Technologies as a Senior Technical Artist. In our latest animated short, WiNDUP, I did modeling and animation work for vegetation, as well as environment shading, modeling, and VFX. My career started as a 3D Character Artist for online games in 2008, and I previously worked for some famous online game providers in China like Perfect World and Changyou.

Even though my major was computer science, I decided to become a modeling artist after graduation because I have loved painting and sculpting since I was a young boy; I thought they were my real interests. Now, the facts of my life tell me my decision was a good one and, luckily, my technical background helps me as a tech-artist which is a crucial and more interesting role on the team. I started this career in 2013.

I have worked on the WiNDUP team as a contract member since the very beginning of 2017; we completed a test scene and released it at GDC 2018. After modifying the final script many times and all the other preparations were complete, we started work on the final version in 2019. I joined the Unity Beijing office at the same time.

(AW): What does your role as Senior Technical Artist at Unity entail? Can you give us a peek at “a day in Chris Kang’s life?”

(CK): My role here is to create 3D assets, shaders, and tools for some of our demo projects. Meanwhile, we need to provide both technical and art direction support to our local clients so they can achieve fantastic results with Unity.

In the time of making WiNDUP, a day of mine was quite simple: eight to ten hours of hard work every day, plus food and coffee. We finished the film in March 2020, and, as we all know, the pandemic started in January here, so I had to finish all the work at home in the last two months of the project, fighting exhaustion and anxiety.

Nowadays, after unremitting efforts to control the virus, we have been back in the office since last August. This is good for me because the computers and devices in the office make my life much easier, especially the coffee maker, LOL! However, without focusing on the film, my work here gets more complicated and varied. For example, I sometimes need to collaborate with our client’s developers to help them solve problems and create advanced content. This could involve every single domain in the pipeline, like shading, animation, graphic technique, etc. It’s obviously difficult for a single person to solve all of these problems. Luckily, we have an amazing tech-art team here including members who are experts in different domains. We usually have a meeting when a new request comes in, separate it into pieces by different majors, and take charge according to everyone’s expertise. We keep communicating with each other as the task progresses and combine our work at the end.

By the way, another daily agenda item of mine is that I always schedule at least two hours to learn new stuff in the industry. The industry changes rapidly and a tech-artist should always keep learning. No matter what domain it is, anything is better than nothing.

Working on WiNDUP

(AW): WiNDUP is an impressive short! How long did it take to bring it from concept to completion? Can you tell us a bit about the team and how you worked together in a remote context?

(CK): We are all glad that you like this short, thanks! Our director Yibing Jiang has had the story idea for many years. Everything started at the end of 2017. We started to make a static lookdev scene with our little girl Kiki with the Unity HDRP, which was released at GDC 2018. The response was very positive, so we got the chance to do extensive preparation including artist recruitment, reference collection, script edits, etc. The final version started in August 2019 and ended in March 2020, eight months in total.

Our team is truly compact and complicated. The director, animation director, and two animators are in the US, two artists (an animator and a character artist) are in China with me, and two lighting artists are in France and the US respectively. We were a little worried about collaboration at first, but, fortunately, Unity and the real-time rendering features helped us.

Using multi-scene loading in Unity, we divided every sequence into different scenes, like Environment, Lighting, and Timeline, which are controlled by different members to ensure that works can be carried out simultaneously without conflict. The real-time rendering allows animators and lighting artists to check their work with all of the finalized materials directly in the engine, which is almost impossible in the traditional animation pipeline. These advantages significantly improved our productivity.

Jet lag is also a hassle, turning an all-hands meeting into a wild wish unless some of us don’t sleep. On the other hand, it helps avoid conflict by reducing the number of people who operate on the project at the same time. I just leave messages to relevant colleagues after finishing my work every day and check their updates and messages when I get up, which is a good feeling.

(AW): This project is no small undertaking. What were some of the challenges you encountered during production and how did you get past them?

(CK): There were a lot of challenges indeed. An impact team means each person has to be responsible for multiple domains, especially as a technical artist. There will inevitably be some work that I have never done before.

According to the script, a lot of the requirements didn’t have a ready-made plan, like some specific material transformation, the tearing effect, and a workflow for procedural environment creation. The only thing I could do is keep researching by all means necessary. I searched reference tutorials, read related papers, and even learned new software and pipelines to figure out a solution for every request. As a Chinese saying goes, there are always more solutions than problems, and this is true.

Regarding the vegetation work, I remember that the director told me she wanted me to be in charge of all of the vegetation and that all of it should be animated as well. This was an entirely new domain for me, and that’s the point where I started researching popular plant-making software.

Putting SpeedTree into the Pipeline

(AW): How did you decide to use SpeedTree for the vegetation? Which tools make the difference in your work?

(CK): I remember I tried a few other plugins before SpeedTree. It was hard to figure out a complete workflow that could match all of our expectations (or probably my personal habits) until I switched to SpeedTree. According to what we needed, the vegetation workflow should include not only simple modeling and UV unwrapping steps, but also some special requirements, such as growing a tree around some featured shape, randomly set UVs for leaves to match the optimized texture we use in HDRP, and the most crucial request was that I needed to authorize vertex color information to every single point on the mesh (to help me animate them in Unity with shaders). A tool that meets all of these requirements is really rare.

For example, we have a big tree in the playground scene that needs to grow around a pipe, which is a very unique design, and that can cause some problems for modeling. However, by using a Mesh Force in SpeedTree I quickly found a solution without complicated additional steps: importing a reference model into the project was the only thing I needed to do. 

The same function also helped me get the first batch of roots in the same scene (for roots, I decided to use procedural modeling because it was easier to modify directly in the engine).

Also, the Vertex Color sliders are very useful. Quickly authorizing vertex colors by the hierarchy of the model was truly convenient for me when I needed to tweak animation parameters in the shader.

Behind-the-Scenes Breakdown

(AW): Breakdown time! Please share a deep-dive into your vegetation workflow. 

(CK): To be honest, our workflow is not very unique, it’s more like a combination of both animation and video games workflows.

As I’ve mentioned before, the featured tree in the short had special requirements on the growth direction. I usually import reference meshes at the beginning to create a force and ensure that the growth of the tree meets my requirements. However, I personally do not recommend adding too many forces to the same location of a tree, as this can cause some unexpected issues when you want to control the shape.

Since WiNDUP is an animated film, I needed the plant model to have enough details. I decided to use multiple Branch Generators to enrich the detail of each branch hierarchy as much as possible and I modeled each leaf individually through the Leaf Mesh Generator. I think this part is more like a movie workflow. Such a complex model means more difficulty when shape polishing. At this point, the Node Edit Mode function played a very important role by allowing me to individually polish branches and leaves according to our shots: very convenient.

Speaking of leaves, the Cutout Editor is very handy and allows me to set up the meshes and UVs at the same time. By creating multiple meshes, I divided the leaves into four groups using different parts of a texture to add variation. Saving texture memory but also preserving vertex color channels for other purposes was exactly what I needed

Authorizing vertex colors is the last step in our vegetation workflow in SpeedTree. I must say this method of specifying vertex colors by hierarchies is very practical, and both the extra controls over curves and the ability to randomly float values helped a lot. I use different vertex color channels to divide branches and leaves into groups, then drive different kinds of animation with shaders in Unity. A video is more revealing:

In the process of creating the shader, I had to match the vertex color of each channel animation code constantly, since each side complemented the other. Then, when the animation type had been determined, the way of authorizing vertex color was also confirmed. The same pattern could be reused for other trees.

Finally, I exported the mesh from SpeedTree to an FBX file and imported it into Unity. I didn’t do much with materials in SpeedTree because we needed to use layered materials in HDRP to shade the tree. All materials and textures are set directly in Unity Engine. By the way, the Export Material function is such a gorgeous idea!

To sum it up, SpeedTree brought a lot of convenience to my work during the production of WiNDUP. Thank you very much for making such a superb tool! I also hope that more people will use SpeedTree and create their own masterpieces!

You can see more of Chris’ work on ArtStation and YouTube. Connect with him on Linkedin and read more about WiNDUP here.
Want to try SpeedTree’s VFX tools for yourself?
Start a free evaluation of SpeedTree Cinema and Engine for Clarisse below! 

Stay in touch with SpeedTree: