Yep, we've been building Adrael for ages now!
These are not so much tutorials, but explanations of the thinking (or lack thereof!) that went into the construction process for specific parts of the project.
Visit more topics, linked from the bottom of each page.
|
Adrael's Tree
For many months before the Adrael project began, I had been working an a fairly large Age of my own design. As one part of this project I had put in quite a bit of research to find the best and most efficient ways to model tree branches.
When it became apparent that a tree was needed for Adrael, it seemed I should step forward and volunteer: based on my tests' results, I might be able to make a decent contribution.
To start out, Clat drew up a few sketches of possible tree forms he felt would work:
I chose the middle one as the most challenging and most evocative of the forms.
Knowing that Adrael only had one tree, and not a forest full of them, I felt I could take a bit more liberty with mesh-face counts in order to try to make something that looked good under close inspection... while maintaining as much efficiency as possible.
I began modeling the main trunk form from deformed cylinders, using the sketch as a very real guide at this point:
Looking at photographic examples of ancient oaks and bristlecone pines, many show a helical twist in the trunk, and I added a bit of that.
I also started to pay attention to the UV layout from the beginning: here a helpful grid texture is applied, a common technique in assessing texture orientation and to avoid unwanted stretching as you go.
After this point, the tree deviated from Clat's sketch while maintaining its character; branches and roots were added and form was altered to get a good 3D appearance.
Boblishman sent me a mesh form of the Adrael Cliffs' groundplane, and I began forming the roots along this guide.
I now had a basic form... that only needed dozens of roots and branches!
Learning that the Plasma engine does an excellent job of rounding edges, I found that a basic hexagonal cone, greatly stretched, worked well for a raw branch shape. I always had a couple variations on these off to the side, ready to be copied, scaled appropriately and attached as branch or root wherever needed. Later, I got even more efficient by making branches that started as six-sided shapes, then transitioned along the length to five, four, and finally a triangular shape at the very tip...saving a few mesh faces in the process. It may not seem like much, but when you multiply those saved faces per branch by a couple dozen branches, it adds up.
Branches were shaped and sculpted, and I learned that it was necessary to look at the result from many angles, rotating the model every which way to be sure that each joint was both necessary and natural-looking. Unseen edges were removed, thereby joining adjacent faces. Roots were conformed along the groundplane, sinking them in and letting them submerge some distance from the trunk. Later, root-mesh faces that were hidden beneath the groundplane were removed one by one.
UVs
My earlier experiments had shown me one reason why so many CG trees looked awkward: their bark textures had distinct discontinuities at each branch. It's a tough problem: the surface area on a tree becomes greater as the number of branches multiply going away from the trunk. This problem is compounded by the fact that bark texture can be very coarse at the main trunk, but must be very fine-grained and detailed as each branch gets smaller. This means that the smaller branches do not take up less UV space as one might expect...and since there are more and more branches the further you progress from the trunk, these 2D UV layouts take up more and more space on the texture plane.
My solution at the time was to overlap branch UVs, such that several branches might share a common texture space. A new branch's UV set would be aligned tightly to the parent branch or trunk, so that texture would flow across each new branching joint. Here's an early version of this UV overlap, showing just the branch area of the texture space:
This works pretty well, but knowing a bit more about this now, I would suggest avoiding overlap when possible, by blending between separate UV sets rather than keeping everything on one UV panel.
The end result is far from perfect (especially at the patch topping the trunk!), but overall was not bad for a relatively new modeler (I'd only started modeling a little over a year before this project began).
Texture
Three layers: a basic synthetic woodgrain tiling to create the overall underlying stretched mottled texture, a very finegrain overlay pattern created from a real bark photo and tiled on a different frequency from the base woodgrain, and a lightmap created using the same sun position seen in-age. The lightmap required some fudging, because the overlapping branch/root UVs caused erroneous lighting in a few places...but some judicious digital airbrushing fixed the map enough to make it workable.
Leaf Sets
I started out with a single leaf image, then replicated it several times while shifting color, brightness and contrast values to create some variations. Additionally, leaves were grid-warped to create variations in size and shape. These were then arrayed in 5, 7, and 11-leaf groupings, with hand-drawn stems connecting them. Each of these groupings was then applied to a 3D mesh, since a simple 2D plane disappears when seen on-edge and is visually implausible. But since there were so many leafsets that had to be replicated, it was important to minimize the number of triangles in each. The simplest were only 4 triangles, others 6 and 8, but some of the larger leafsets that could be viewed at close range used 10.
Four of the many variations on leaf pattern and form |
Knowing that we intended to "animate" the tree's return to health over a four-day period, I began attaching these fronds of leaves to the tree in stages, beginning with the smallest 5-leaf fronds and spreading these around, then saving that as a grouped layer. Leaf sets grew in number and size at each stage. As with the branches, I kept a kit of the variations off to one side of the tree to duplicate and locate on the tree. Each attachment had to be inspected from all angles. In all, about 160 leafsets were attached one by one, amounting to around 1,200 leaves on the tree...and even this doesn't give the fullness one might want in a mature tree!
An early chart made to document the leaf forms for the four-day leaf growth "animation" |
In the end, the leafsets totalled 1136 triangles, the tree itself 5133, for a total of 6269 tris: a fairly expensive game asset. But this is the nature of organic shapes: they are complex, usually nonlinear, and we've all seen them enough to know when they've been oversimplified.
Emor D'ni Lap, May 2011
|
Adrael's D'ni Mining Machine |