Wednesday, 20 April 2016
Tree Maker Tool - part 3
The following rendered trees, demonstrate some of the variations of tree types that can be generated with the Tree Maker Tool.
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.
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.

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.
Wednesday, 23 December 2015
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
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
Subscribe to:
Posts (Atom)