Eco Tales : Dev Blog #16

Procedural assets and 3D-printing, doesn't get much more exciting than this!

Posted by on

Paint me like one of your French girls, is not something I've ever said, however, Krister did it without my asking and now I exist outside of screen space.

Speaking of France, the lazy bum Jona spent his entire week there! Luckily, due to the SAS strike he had all of Monday to work on proceduralism and enemy lore.

Jona : Monday was my only full working day, from Tuesday I was on vay-cay, but I did find some time to study Houdini and got a lot of reference images for plants in Monaco!

Seen in the image above is a set of two procedural entities made in Houdini, let's break them down! Here starts technical mumbo-jumbo, for art, check Kristers post!?

Above you can see a basic Terrain, which inside of Unity is nothing more than a plane which can be edited in real-time using the sliders seen on the right.

While this is currently only around to test the wall system, it does bring some pretty cool and unique features, as you can clearly tell, the entire terrain is not built up by sets of quads, why and how is this?

The answer then, less triangles is better for performance, and by configuring Houdini's inbuilt optimization algorithm to force the outline of the terrain to stay true to the original and to remove less mesh density where changes in elevation on the terrain are greater, we get a very optimized terrain!

Now ponder this, in the above image I've created a small terrain and drawn out a Houdini curve to create a set of walls which are (almost) exactly as wide and deep as the terrain. Imagine if instead we take the bounding box of the wall and auto-generate a terrain of the correct size and with an optimization level based upon its area as well as the difference between its highest and lowest point!

Math, as you can tell isn't really my main area of expertise but above are my thoughts on how to procedurally generate a room based terrain, let's take a walk through the notes together!

The first line is Terrain Size = the length of wall bounding box axis x * the length of wall bounding box axis y, in this case Y is depth, I'm an avid 3ds Max user!

The second and third line are Terrain Density x/y = wall bounding box x/y * global division frequency * terrain type frequency, these lines decide how densely packed the quads we start out with are.

Finally, the fourth line decides how much we optimize the terrain clamped between 0 and 100 [percent] (where 100 is keep all quads and 0 is remove all definition except for border edges), starting from 50 we take the absolute value of the terrain bounding box z length multiplied arbitrarily by 10, we then add or subtract based on terrain type optimization.

I'll come back in a week or so to tell you about my results!

On to the wall, based upon the curve outlined in the image above, a wall is generated, in each corner we place a corner piece and then, based upon a specified distance, we place additional columns, in the future, a lot of different objects will be randomly spawned here.

Currently the wall along with the corner points are put onto the wall and moved to the terrain, based upon the wall segment amount, we can make the wall more or less able to follow the curve of the terrain.

You can also see the hideous colors, these are simply areas of different vertex colors, next week we'll take a look at how these look with a custom vertex blend shader.

Krister : Hi there, hope you are as happy as me as I sit here first week of vacation.

Last week I had some real fun working on or should I rather say next to Eco Tales as my work was not exactly on the game itself. We have finally been able to do our first 3d print of Lech, now it is a quick test print and a quick paint job on it and as you can se it has its faults.

The print is roughly 5.5 cm (2.16 inches) tall so it's quite small and that might have brought it shares of the issues with he print.

I snapped the tiny hands right off while removing the support beams as they were really fragile, it also broke free between the layers at the hips and at the middle of the feet so we need to study how to make stronger layers to keep this from happening. Spending more time on it I might sand the rough parts down a bit but maybe we can get a cleaner print as well learning more as we go.

Anyways, after gluing it all back together I applied a quick undercoat of primer and after that dried a few layers of flesh base coat from Vallejo and then adding the few details like eyes, brows and lips.

As you all know Lech is a hard working man, don't mind getting his hands dirty and as you can see that is exactly what he did, after hours of cleaning the shop naked (as you can see, because let's be honest, who in their right mind does anything fully clothed), he was ready for a nice hot bath.

First test print of Lech

That is it for me, time to put on some pants and head out into the morning sun for a nice run and come back to some coding with a fresh mind, see you in a week.