American Century- Investments
Asset Creation and Optimization for AR
For this project, the clients came to us and said “We want a 3D tree that grows over time. And we want it in AR.” I’m sure you can immediately see why this was an issue. To model an animating tree in a program like Maya would take more time than it was worth, and buying one off the internet would render us with a model too massive to even consider using. And that’s when I suggested that I would learn Houdini.
Using a month-long Houdini rental and a plugin called Growinfinite, I was able to rapidly learn Houdini and create an animating tree. It was amazing! Except for the fact that we still needed to figure out a way to get it into AR.
We researched and learned that you can import Alembic files into Blender, then convert the vertex animations to point cache animations and export that .mdd animation out with a glTF to create animated AR models. This worked excellently! Except it also created two new problems. One, due to 240 frames of blendshape animations, the exported file was huge, even with the polycount as low as we could possibly get it. Two, this new exporting format had done something to the UV layout of the tree branches, and now their masks were broken, leaving me with a bunch of green squares where leaves should have been.
To fix the first problem, we began inspecting the animation data. Quickly we realized that the less frames of animation we converted to .mdd files, the smaller the file size was. So, we cut down the animation time. The file was still huge. Then, I had an idea. I compressed all of the tree growing animation in Houdini into only a 10 second animation and exported out that alembic file. Then, when that was converted into a blendshape animation, I stretched those keys out over 120 frames. Since this was a blendshape animation and not a hard vertex location like the alembic was, this created a smooth transition between 10 different stages in the animation. And massively lowered the file size.
To fix the second problem, I had to work in the Houdini UV system. Having just started learning Houdini a week prior, this was a very daunting task. I quickly realized though that as the leaves were growing over the course of the 10 second animation, the vertexes on the UV channels were growing too. While the leaves were perfectly UV’d once fully grown, they weren’t at the beginning of the animation. This wasn’t an issue when using the alembic file, but as soon as you hard-coded that UV data into the model with the .mdd, it only read the UV’s created on the first frame. To get around this, I added a timeshift node. This allowed me to shift to the end of the animation, read the UV layouts there, then use an attribule transfer node to transfer that UV data back over the course of the entire animation, keeping the UV’s consistent the entire time. And it worked!
In the end, we were able to get the tree working beautifully in AR. In a perfect world (with higher file sizes), the tree would have many more leaves, a more detailed animation, and less-pointy branches. But working with the extremely tight limitations we had, I’m very proud of how this turned out.
Unfortunately, I do not currently have the Houdini file for this tree.