Monday, August 25, 2014

Houdini Great War Frontline v0.4

The title is only slightly referring to the number of times I've blogged about this subject, but since I find it so fascinating here's another one. I figured a monthly blog update is pretty sweet especially since this project is running into its final week (hopefully) and next week I'm going to start a whole new one win a completely different area.

Next week I'm entering the "specialization" phase of my education. The penultimate course of my education which allows me to fully surround myself with software I've hardly or never had the chance of working with before.

But for now, screenshots below of my progress and small notes in which I explain what's going on. You'll notice much has been cleaned and many more subnet's have been placed in a 'for each' kind of node setup using stamp functions in Delete and Copy nodes. I've had help from a friend and colleague at Grid-VFX. 

The Original Curve. Dictates the placement of No Man's Land. The piece of land between two opposing forces, usually surrounded by a trench. The term is mostly commonly associated with the First World War.

Application of the Original Curve. The flattened land is almost unnoticeable in the top left corner of this image but work wonders for the trench curves that are projected onto the surface later. Especially the SAP's (forward listening posts) are prospering in flatter area's as they're short in length and don't feature a stepped pattern.

The Front-line, Support Trench and Reserve Trench are now three separate curves combined in a merge node. After the merge a delete with a stamp expression and a copy node repeat the operations located between the two to mimic the operations of a 'for each' node. A trench digital asset does the rest.


After this, a friend helped me out with creating a selection set that I would be able to use indefinitely for each collection of trench curves, given that I precede it with a digital trench asset. Between the selected curved I spawn a number of curves using the parameter in the top right part of the image. The random seed changes the direction and strength of its control points but.. the real trick is being able to adjust the end points of each individual curve to adjust it's direction. The curvature is preserved and the curves never intersect, unless you spawn thirty of them.

Both the placement of SAP's and additional reserve trenches have been applied in this image. The SAP's are created by duplicating the front-line trench in order to maintain their direction; which is pointing at the opposing trench. The same concept is applied to the additional reserve trenches but I used a group selection to cut off the parts of the trench I don't need as it falls out of the 'combat zone'; as dictated by the bounding box of the terrain.

Today I've been bug fixing mostly. Some of which didn't make much sense and others that seemed to be so incredibly persistent on just, for example, the second primitive in a sequence that the easiest solution would have simply been to adjust just the second primitive and leave the rest as is... Coincidentally this is what I did and I've tried a least a dozen completely different input expression to try to break it but it won't anymore. I can't get over how weird Houdini is sometimes, though I guess somewhere it has to make sense.

For next time I want:

  • Funk holes and dugouts between communication trenches the same way as the communication trenches are currently located between the regular trenches. However, they must not connect to the other side and cannot end in a linear fashion.
  • Sweep across each individual curve with a previously created shape. Invert all three curves and calculate their curve points against the Original Curve's curve point positions to create an opposing trench network with the same customization as the original one.

That's it again. Not much time left on this project. Hopefully I can finish these things before I hand it in!

Thanks for reading,


Friday, August 1, 2014

Astérix Le Domaine Des Dieux, Houdini Great War Frontline and SolidAngle Arnold

Some time has passed and since I didn't write anything last month I figured I'd give it another go. During these past few weeks it has become clear that the production I have been working on is on schedule and will air in French cinema's around November 27th. So as far as I know I am totally allowed to tell you what it is!  Yay!

So I've been working on "Astérix: Le Domaine Des Dieux"; in English "Asterix: The Mansion of the Gods". Unfortunately the IMDB page is empty but there's an unofficial Facebook page which you can go ahead and like. At least I think it's unofficial... I'm not sure... Oh well. Here are some promotional posters.

So in my last blog update I wrote about duplicated curve projections on a procedural landscape and some problems that arose with the technique I used. Firstly it wasn't entirely procedural and secondly it featured a gigantic node system; one that could be easily fit into multiple Digital Assets. Below a duplication of what my comments were on the progress I had made and how I addressed them with the help of a colleague and friend.

  • Create non-stretched UV's for the additional 3 sweeped curves using the length of the line used for the sweep and the measured length of the curve.

  • In the copy node above I output 7 curves which I blend between a blendshape node like you would in Maya, however each curve of my output will be added to it's own separate group. Using a blast node I can now select the copyGroup I need and delete the rest (non-selected). This will then allow me to measure the curve along it's length and apply accurate UV's onto a sweeped mesh. This happens later.

  • Ability to adjust the sweep distance for each individual curve so I can determine the amount of land they smooth out.

  • This turned out to be a different issue than I had first anticipated as it didn't just incorporate the sweeping distance; it would also incorporate the size and shape of the trench. In the first image of the previous paragraph a solution is already present in the shape of a trenchnet digital asset.

    I used an L-system to create a curve that would allow me to duplicate it along a resampled curved but with the premise that the L-system curve's size would be the same as the distance between two adjacent points on a resampled curve. I achieve this by adding a transform node that uses the following expression in the Uniform Scale attribute:

    The first part normalizes the bounding box volume of the L system and the second part multiplies it with the edge length determined by the resample node. Then I add normals, copy the l-system along the curve and clean up until I have something I desire.

    Below are some examples of the shapes it can take on in it's current state of development. I'm contemplating whether I should add a few more functions like degradation and additional offset, but for now I'm satisfied.

    A three dimensional result of the above with a sweep looks pretty sweet.

  • Find a way to get rid of the holes that are currently created in the landscape mesh. I know these are created by a group selection a tiny bit back up the selection creation grouping but I can't seem to figure out how to make that selection smaller.

  • This is one where I had to do the exact opposite and increase the reference instead of decreasing the size of the selection to avoid it taking point positions from a location that was not correct yet.

    The solution was to take the curve that creates the height of the reference mesh and increase it along it's own normals by creating a vector between the last and second-to-last point. This is high school math where using an if statement (compare node) calls both the top result as the one below as an output. The normalize node at the end makes sure that we're extending the normal of the curve at the same rate.

  • Create a polygonal bridge between the existing sweeps so I can create a selection for the area's between the trenches. This may become handy for the distribution of details later.

  • This one... I didn't think this through as it's not something I would like to have. I think it would be much better to use the bounding shape of the trench to sweep across the curve and act as a smoother for the landscape than to have a whole general area that flattens everything. Not a fan of this idea anymore. Going to do it differently.

    For now the most difficult step will be to find a way to have all the different trenches connect to one another. I will definitely update this blog as soon as I have a solution for that... And that was it for Houdini. But I did do some other stuff also!

    I can't keep my hands off of Arnold. Such a great rendering tool. Even crappy light setups can turn out to be great physically correct calculations. I also discovered this amazing website with free high quality models ready for everyone to render.

    I specifically want to add that the two renders above are not an exercise in my lighting capabilities but more of a test whether I want to use Arnold for my graduation phase. I'll be starting my specialization soon and I'd like to know some render engine specific things before I even start researching software and hardware packages.

    Anyways, that was it. Thanks a lot for reading!

    ps. Arnold coming to Houdini? The best of both worlds? GWAAAAAAaaaaaaa