Asset Production Pipeline

For my Foundations of 3D Graphics class, we were tasked with creating an asset for a video game platform. Rather than opting for an organic asset, we were required to adhere to something non-organic, perhaps a spaceship, or weapon. An important point to consider are the constraints of video game engines, primarily the total polygon count of the model.

During the preliminary stages of this assignment, I decided that I wanted to create headgear, particularly something like the old diver’s helmets of the 20th century.

My first attempts at modelling were…unsuccessful, to say the least. I found that the reference images were far too complex for my relatively beginners skills. The related tutorials I researched (on helmet designs) weren’t too informative in terms of how to construct the diving helmet. Although I found that you can construct the “cages” around the openings using splines… (detailed in a brief tutorial here), the main method of construction the tutorials used was relying on symmetry, which is obviously a problem with such an asymmetrical design.

By this point, a week or two in, I began searching for an easier alternative to the complex helmet. I decided to settle for a fire hydrant, which, although relatively simplistic, if done well, will meet the requirements of the task.

Variations on fire hydrant designs means I could potentially add other elements, such as a chain or extra bolts, like the reference pictures detailed below.

I eventually settled with this reference image, which was imported as an image plane to directly model from:


Although I originally had trouble modelling the fire hydrant by trying to constraint the main body to a single polygon, I eventually combined several different polygons and attached them to form a single polygon before exporting the UVs.
The bolts were originally constructed separately before merging them with the main body using the same method.

When creating the chain, I used multiple copies of a modified Torus primitive, rotated, and attached to form a long chain. By using a path deform modifier in combination with a line spline, I was able to warp the chain around the hydrant protrusions to create the product below:


In terms of UV mapping, it was a relatively straight forward process, although due to increasing time constraints I had to use the automated functions of the UV editor, namely the auto-resize (resized the UVs in relation to their size on the model) and auto-packing (which packed the UVs automatically).

i qwant to die

Unfortunately during the baking process, I misinterpreted the tutorial, which required a normal map to be baked when using a combination of both a high and low poly model. Because my model was already relatively low-poly, this baking process was unnecessary, and I wasted time trying to find the error in the program.

After realising all I needed was an ID map, I went straight to texturing in Quixel!

Beginnings of the texturing process.

I definitely wanted to go with the traditional red fire hydrant motif . First starting with base materials, I then went in with secondary materials for more visual interest. Rather than leaving the main body flat, I chose to include an additional rough metallic map to add a bit of wear and character to the asset.

This slideshow requires JavaScript.

screen04After a quick export using Quixel’s animation feature, I put together a short video in Adobe Premiere!

This assignment presented a new challenge in my animation journey. I often found I had to resist the urge to diligently follow provided tutorials and improvise on my own account, particularly during the modelling stages. My progression from the previous assessment to this one was ultimately quite a positive transition, especially in terms of time management and general ease, having been previously acquainted with the program. The introduction to the Quixel Suite might just have been my favourite experience in this module thus far! Texturing was inevitably made easier, and the high level of customisation (now with the addition of different maps) meant that the final product looked much better than I originally expected.

Thanks for a great first tri, guys!


Pirate’s Gold: Rendering, Compositing, Video Editing (The Finale)


I had more than a little difficulty rendering this animation, and the entire process likely took almost two days.
My first attempt at rendering, which was left overnight, had not finished by morning – not due to any complications with the render set-up, but rather, the fact that the laptop I was borrowing went to sleep and had no background processes running. Alright, no biggie. I can render it at the campus whilst I’m staying there during the day.
…Wrong? It rendered quickly enough, in approximately 2.5 hours, whilst I did some background work, but with terrible quality.

Less than appealing. Alright, moving onto round three. I tweaked the settings so that the rendered animation would have a far higher quality. Even after leaving it to render overnight (high quality obviously means a longer rendering time) I returned to find a video with the exact same quality as my previous attempts.

A little disheartening, obviously, but I had made preparations with my friend to use their computer (which had already had the Autodesk program files installed) to render my animation overnight. And…the exact same result. It was at this point I realised I had been rendering the files into the wrong format – which explained the terrible quality.
With less than a day to turn in the assessment and time running out, I made a last ditch attempt to do a QuickSilver render. Although the quality will undoubtedly lessen, with my options narrowing, I didn’t really have much of a choice.

Because I needed to change the lighting, I went with a relatively bright skylight with an orange tint – mainly to mimic a sunset.

Compositing / Editing

Decided to head over to Adobe Premiere for the video editing effects.

In terms of compositing, in order to add authenticity to the video (since it is still meant to be an advertisement) I added an overlay, as if the animation was made for an android app. The title, “Pirate’s Gold,” was also implemented in a similar fashion, using a visual overlay.



Even though I had planned to investigate After Effects CC and further enhance the assignment, my issues with the rendering put off valuable time. I decided it was more practical to work with what the tutorial provided me with rather than risking not submitting the files on time. Besides, the new orange lighting looks great as it is – no real need to edit it further.

The audio piece I chose was simply a remix of the traditional “Pirates of the Caribbean” theme by Hans Zimmer, in a less serious, light-hearted tone by Raz Alon. Add some generic punch sound affects to enhance the action and we’re just about set to export!


Although the experience was full of obstacles, overcoming them and gaining texturing, mapping, modelling and editing experience was fulfilling. Whilst reaffirming the fundamentals of a production pipeline I gained more insight into the 3D animation industry itself, alongside the processes and programs used to create everything from feature length films to advertisements. As this project is closing, I am eager for the freedom in my next assignment, if a bit apprehensive. I hope this experience helps to reduce my error count in future endeavor.

Pirate’s Gold: Lighting

In order to create some fill lighting for the scene I implemented an omni light, which created a smooth fallout in all directions. In the Advanced Effects tab, there is an option for “Ambient Only,” which, in essence, makes the light have no specific directionality. By default, this lighting applies to all models in the scene. If rendered using this setting only, the scene will have flat lighting such as the screenshot below (ignoring the highlights already implemented onto the texture).


The textures are presented flat and at face value. In order to have some soft, albeit defining shadows for this scene I added the mental ray ambient/reflective occlusion shader based on the recommendations of the video tutorial. The shader deposits small contact shadows in darker areas where light is blocked within the environment, or where models interact with the plane.

Although I need to maintain quality for this assignment, it will likely take longer since I’m rendering it on a laptop. Therefore, although the recommended sample size is 64, I went with a lower value at 50. In regards to the maximum distance for the ambient occlusion parameters, I went with a value of 20, also recommended by the video tutorial.


With the option to change the colour of the shadows, I went with a lowly saturated red colour, mainly to highlight the warmth of the scene. Even if the difference between the black and red shadows is minimal at this stage, I still think it’s an important aspect to have the lighting match the palette of the scene itself.


Rendered scene with black shadows versus that with a darkly saturate red.

To ensure the shadows were pointing outwards from the center, I adjusted the co-ordinates to start at 0X0Y0Z, after which I adjusted it to fit more towards the middle of the scene, as the board itself is slightly off-centre. And that’s the lighting finished!

Pirate’s Gold: Rigging, Scene Assembly, Animation


In order to create an opening / close animation for the chest, I had to bind the pieces to a “digital skeleton,” creating a hierachy of joints that, although simple, meant that I could pose the model into a desired position. With only two different ‘limbs,’ the chest was relatively easy to rig. After adjusting the pivot point of the lid to the bottom of the hinge…

nice.png…allowing for the opening of the chest…nice.png…I went on to link the bottom of the chest onto a “control” object (basically allowing me control of the entire chest) and then the base to the lid. The result is a hierachy of joints in which the control object is the parent or “root joint,” with the remainder linked to it. In essence, you move the control object and everything else follows, whilst if you moved the lid, it would not have any influence on the other joints. That’s the rigging done!

Scene Assembly

The scene assembly was fairly straight forward, although in the beginning I made the mistake of trying to import multiple objects at once and ended up with a weird merged document that I could not decipher. After ditching the “shortcut” method, I imported the assets individually and set to work assembling the scene.

Although we are only given a few types of models, I chose to vary their size, angle and direction to create more visual interest. Even if they’re only copies of the same models, the variation means the scene isn’t as bland as it could be.


I mainly wanted to centre the vegetation around the chest board, as it’s the focal point of interest and is likely to be where the camera is going to circle around.


The view I had for this project was a quirky, comedic animation so I tried to reflect that in the animation by adding lots of squash and stretch elements. Having certain elements drop from the sky and onto the board, namely the palm trees, allowed me to showcase the tool to its full effect. Because the trees varied in size and timing, I tried to vary the point of impact and the ripple effect, giving each tree its own individual animation, even if it was a little time consuming!


Still of the palm trees entering the scene, with accompanying squash and stretch motions.

Rather than having the crabs drop from the sky and getting squashed (I know I’m not exactly going for realism, but it didn’t exactly feel right), I had them appear from below the scene and bounce back down. If I had left the grass surrounding the board alone before it actually opened, it would have probably looked a little odd, so I made the decision to have them “pop” up after the board opened in a similar fashion to the crabs.


Progression of the crab entering animation, which was applied to all three crabs in the scene, though at varying intervals.

I additionally added some idle movements to the vegetation both on and around the perimetre of the board. I wanted to create an effect similar to “swaying” in the wind for the grass and palms – mainly to avoid a static-looking animation once they had finished entering the scene.

To add a comedic element like I mentioned before, I decided to have objects “squash” some of the idling crabs in the background whilst the camera focuses on one in particular (largely inspired by the entrance animations). The first crab, circling around the board, is first squashed by the chest, whilst the second is launched off the board by a starfish appearing beneath it, and the final one to be squashed by a shell after getting excited over the coins pouring out of the chest.


R.I.P. little buddies…

When assembling the coin particle I ran into a ridiculous amount of problems when I was trying to edit it at home. Coins would only appear for a select few frames, wouldn’t appear at all, wouldn’t register as coins, but rather as “crosses,” would appear as multiple events in the particle viewer to the point where it confused me… (detailed below in screenshots) …just to name a few of the errors I ran into.


As I was becoming progressively more hindered by time constraints, my tweaking of the particle system (including redownloading the .zip file, restarting the program multiple times, reissuing the shape instance in the particle viewer, reordering the setting in the particle viewer, deleting the old files and bringing in new copies, messing around with the quantity multiplier – both the viewport and render settings, double-checking the timeline to make sure I wasn’t mistiming it, moving the position of the deflector, and double checking just about every other setting you could think of) I sent a .zip file to one of the lecturers containing all the assets and my scene. To my surprise, it worked perfectly on his device. With little time to waste, I assumed the problem was with my own laptop and just uploaded the .zip file to Google Drive to render at the university the next day.

Although I wasn’t terribly ambitious about the animations and didn’t see a progressive narrative (besides a crab ignoring his friends and getting excited over coins), I feel that it was a good introduction into animating in 3Ds Max.

Pirate’s Gold: Texturing

Although I do have a little more experience with digital art programs, they’re mainly limited to drawing human characters rather than texturing materials and surfaces. So, even with a degree of prior practice, I can’t say with confidence that this texture is going to be anything more than a little average!

In terms of the program itself, I typically use Paint Tool Sai – and although very similar in terms of function, has a very different layout to Photoshop. In most iterations of the chest I’ve seen thus far, artists have made use of gradients to further accentuate lighting and shadows. Immediately I ran into a problem: Sai doesn’t exactly have a gradient tool. I basically had to choose between badly blurred gradients, staying in my comfort zone or learning the ropes of a new program and achieving a better result…and I picked the harder option.
Although it was difficult to adjust (mainly confusing shortcuts and tools) the gradient tool was a godsend! The highlights on the metal looked clean and would have likely turned out a bit dodgy had I gone with the second option.


When covering the seams for the wooden panels, it was advised to add a “border line” to both deepen the shadows and mimic real-life wooden texture. In this case, I modified the default brush to be more textured.


The straight mesh lines were quite easy to do – using either the stroke tool or by simply using the Shift + Click straight line method. In terms of the wooden strokes, which are most effectively done so with a tablet and pen pressure, I ended up having to switch back over to Sai. This was due to the fact that, even though I installed the latest driver, the laptop I was using (with Photoshop installed) wasn’t registering my tablet in the slightest. Rather than trying to troubleshoot the problem (at this point time started becoming a constraint I needed to consider) which might have eaten up my time, I chose to just go back to the laptop where my tablet was working and add all the details there, since most of my gradients were applied anyways.

Sai’s default file format is .sai, it does have the option to open .psd files, although at the cost of several of Photoshop’s functions – mainly certain tools and layer types. There is a possibility that the absence of functions will change the appearance of the file itself, so I made an additional copy in the case that it does happen.


Now with the addition of pen pressure, I was able to add some of the recommended details, namely cracks in the wood, varying light textures (to create the illusion of a textured surface), highlights on the wood and nails along some of the chest edges. I finished the texture with a keyhole on the lock.

Here’s the finished product:


chest final texture.png

Pirate’s Gold: UV Mapping

Before applying any texture to the chest, the mesh needed to be flattened into a series of two dimensional shapes, taking care to not have any polygons out of portion (otherwise the texture will become either blurry or stretched), using the planar projection technique.

When unwrapping breaks were inserted to avoid having the texture stretched, such in the example below, wherein the green highlight indicates where the mesh has been broken. This is done because the highlighted polygons, whilst flattened on the axis, would have been squashed and distorted if the mesh had not been broken.


After breaking the edges in the corners, I was able to relax the mesh and flatten it out into an accurate representation of the chest faces.


Before (with “squished” faces) and after.

The unwrapped meshes will then correspond to the faces selected on the model. Success!


In cases where the texture will be the same on both sides, both corresponding meshes are flattened on top of each other. This is useful for when I need to avoid creating the same texture twice, when it will just be the same. When the two meshes occupy the same space on a UV map, they will also occupy the same texture. Although a bit tedious, the vertices of the second mesh were attached to the first one in order to ensure they both correlate exactly. In the example below, although only “one” mesh has been selected (though, in reality there’s two directly on top of each other), both areas are shown to be selected on the chest.


Unfortunately at some point into unwrapping the chest I realised that I had distorted an area on the lid’s rim. I didn’t feel particularly like going back to one of my earlier saves and repeating the unwrapping process all over again (that’s theoretically almost two hours wasted) so I simply collapsed the modifier list and reverted to the editable polygon mode.

It’s unlikely that this model going to be absolutely perfect now that I’ve encountered this error, but there’s nothing much I can do. Time to keep progressing!

Aside from a few hiccups in the beginning, the growth of the UV mapping progress became quite easy after practice – it makes up for in simplicity what it consumes in time. The overlapping process done prior also allowed the space to be used more efficiently within the UV space.

Chest UVs

Exported UV space, rendered into a 2048 x 2048 PNG file.

The UV space, now converted into two-dimensional image plane, will be used as a layout for the texture files – discussed in the next section of the production pipeline.


Pirate’s Gold: Modelling! …and lots of problems.

When I mentioned I was new to 3DS Max, I wasn’t exaggerating. It took me a solid week of editing, going back to the drawing board, restarting and contacting my lecturer for advice before I managed to construct a chest I was content with.

My first attempts during the early stages of the assignment were mainly to get a feel for the program and were below satisfactory and didn’t progress further than just preliminary shapes and details. Although it may seem like wasted time at base level, it was extremely useful for familiarizing myself with the program, particularly short-cuts, etc. which will make future construction much easier.

During one of my later attempts at modelling, although the main construction of the chest went smoothly, I ran into trouble assembling the chest lid. Under advice from a lecturer, I chose not to wrap an edge connection around the entirety of the chest, and so, when it came to extruding the underneath of the chest to form the interior, I was unable to use the connections to extrude upwards.


No guidelines for the extrusion.

When I tried to remedy this by insetting the pre-existing lines, the chamfer I had done previously to create the lock managed to distort the inset into a different shape than required for the interior.


In addition to pre-existing problems, at some point I had managed to change the former connections on the top portion of the lid. Although I’m not entirely sure how it happened, I assume it was because I selected some edges in the area whilst attempting to revise my previous mistakes regarding the chest interior. It was at this point I decided that constructing a separate lid would be an easier option than trying to fiddle with settings (when I most likely would not have achieved a desired result in any case), and to obviously follow the tutorial more closely.


Whilst going through the stages of constructing a new lid, I ran into another problem! This time it was something I had relative ease with during the first attempt: scaling the chest inwards along the X axis, as shown in the tutorial videos. The problem wasn’t that it was distorting the model or anything along those lines, but rather that I couldn’t do it in the first place.


Attempting to drag the X axis inwards using the scale tool and failing miserably.

After contacting a lecturer, we concluded that the problem was I had neglected to use the selection centre tool. I switched to scaling the vertices instead and achieved a similar result as the one in the video, without having to use the aforementioned tool.5

The selection centre option (credit to Steve).


Finally achieving the desired scale.

After the first few debacles, the remaining experience was devoid of any complications and I managed to construct a relatively average looking treasure chest!