Pages

Tuesday, 29 March 2016

Tree Maker Tool - part 2

Tree Maker Tool - Test Renders



5 unique trees used in following instance renders

20,000 instanced trees recycling 5 unique trees

40,000 instanced trees recycling 5 unique trees


Thursday, 17 March 2016

Tree Maker Tool - part 1

Here's some trees procedurally created with the Tree Maker tool I've been working on. For those that might be interested in the internal implementation detail, it doesn't use l-systems, it's amazing what you can be done with a few nodes, copy sop inside a for loop each and some python code, obviously a bit more to it than that but that's the core of it.
























Monday, 22 February 2016

Branch Joints - part 4


Tree Multi Joint Complex New by nick.sullivan.now on Sketchfab

Each branch now has a unique value based on it's intersection with the other branches in the joint, giving much more natural look compared to the previous version Branch Joint - part 3. This approach also gives much more artistic control over the joint construction, allowing refinement of each joint based various attributes such as per branch, generation and joint.

Friday, 12 February 2016

Branch Joints - part 3


Tree Multi Joint Complex by nick.sullivan.now on Sketchfab

Finally got the joint intersection calculations done, this means that branch joints are dynamically generated based on the intersecting geometry. Quite a complex network was employed to enable this functionality, lots of  ForEach nodes.



Tuesday, 10 November 2015

Branch Joints - part 1

Branching joints is a topic I've been interested in for a while. In researching this area I've read a variety of techniques, each having interesting ideas in their own right but not altogether robust solutions for my needs.

Recently I came across a great article which presents a pro/cons and comparison of the various techniques, then presents a different and more robust branch joint solution. Basically the key realisation is that the problem can be boiled down to 2 main areas convex hull construction and subdivision loop method.


Procedural Tree Generation: Modelling Branching Structures as Subdivision Surfaces


The following proof of concept demonstrates a trivial case for performing branching joints


In order to test the join process, firstly copying Tubes of various size and resolution to Tetrahedron points resulting in the above geometry



The tubes are Mesh geometry not polygons, this allows to carve off the end edge loops
Number simply illustrate that each has different point counts



 Tetrahedralize SOP is used to generate a convex hull geometry



The convex hull creates geometry superfluous to need, which can be rectified by taking the dot product of the primitive normals of the convex hull source geometry and convex hull itself
Geometry can be removed where it satisfies certain criteria produced by the dot product



Merging tubes with convex hull, perform cleaning with PolyDoctor SOP correct winding of polygons and creating vertex normals



Finally a Subdivision SOP using the method of OpenSubDiv Loop generates the best results, others cause rippling effects










Tuesday, 13 October 2015

Polygon Curve Carving

After finding that the Carve SOP doesn't allow the use of attributes, thought I'd give making my own version that handles custom attributes and parameter expressions. Currently for my purposes I only need to carve polygon curves, so it shouldn't be too difficult. Later I might tackle other curve types, nurbs, bezier. If all goes well and I have the time, I would like to try surface carving but it might out of reach.

To define the polygon curve carve tool for development, I started by analysing the workings of Houdini's native Carve SOP. Firstly, there's quite a significant difference in the way it handles polygons v nurbs curves. In short the poly curve carving implementation is basically a case of removing and positioning points, where as with nurbs it's quite a different story, involving a number of high order concepts, eg. Knot insertion, corner cutting, interpolation etc.

I generally begin by nutting out the implementation detail, when developing any tool. This process helps break down a problem into manageable pieces and involves lots of sketching, working through scenarios to build an idea of how the carve tool in this case should operate.






POLYCARVE
DIGITAL ASSET
HIP
Version
1.0.0
Build
14.0.361