Started by Nov 02 2011 05:45 AM

,
1 reply to this topic

Posted 02 November 2011 - 05:45 AM

Hi all,

I have to make some fractal trees for one of my assignments.

It has to use cylinders and it has to use fractals, and it has to have leaves.

What is the simplest and easiest way to go about making a 3D procedural tree with those requirements?

I looked at the weber paper and it seems interesting but it might be a bit too much for a simple assignment.

Anyone done something similar before and have a very simple solution to what I need?

I have to make some fractal trees for one of my assignments.

It has to use cylinders and it has to use fractals, and it has to have leaves.

What is the simplest and easiest way to go about making a 3D procedural tree with those requirements?

I looked at the weber paper and it seems interesting but it might be a bit too much for a simple assignment.

Anyone done something similar before and have a very simple solution to what I need?

Posted 06 November 2011 - 08:16 PM

The rule is that you should be able to generate exactly the same tree with the same random seed number, if you can't achieve that then you might not get the best grade....

http://en.wikipedia.org/wiki/Fractal

So basically come up with a list of requirements for your fractal tree algorithm and go from there.

1. Repeatable by seed

2. Is it exact self similarity, quasi or statistical self similarity ?

3. Use interpolation of constraints, such as length, radius. Where the delta for the lerp is 0 at the trunk and 1 at the leaf (in the tree graph) ( don't use this for size, radius if you're going to scale an item in step 5 )

3-a: You cannot interpolate directions well, you will have to use a constant direction constraint, and then transform the branch by it's parent's direction to get it's actual direction if you want an easy to build fractal tree.

4. Use constant for number of branches, branch direction constraints etc

5. Just build everything it it's own scale and own direction, then transform it to the parent. So if you have a branch that's pointing to the left, you transform it to it's parent which is also pointing to the left, so the child branch is now pointing to the ground.

5-a: Use the exact same code without modification of values to generate all parts of the tree, then scale, rotate and move the child part to it's position on the parent, simplest way of doing it if you know your transforms well.

(6. If you want to make a good looking tree and not a 'fractal' one, you'll use interpolation for number 4, and carefully set your rules to transition from different direction constraints etc to make trees that arc their branches towards the up vector or branch out more to create a bushy tree )

http://en.wikipedia.org/wiki/Fractal

So basically come up with a list of requirements for your fractal tree algorithm and go from there.

1. Repeatable by seed

2. Is it exact self similarity, quasi or statistical self similarity ?

3. Use interpolation of constraints, such as length, radius. Where the delta for the lerp is 0 at the trunk and 1 at the leaf (in the tree graph) ( don't use this for size, radius if you're going to scale an item in step 5 )

3-a: You cannot interpolate directions well, you will have to use a constant direction constraint, and then transform the branch by it's parent's direction to get it's actual direction if you want an easy to build fractal tree.

4. Use constant for number of branches, branch direction constraints etc

5. Just build everything it it's own scale and own direction, then transform it to the parent. So if you have a branch that's pointing to the left, you transform it to it's parent which is also pointing to the left, so the child branch is now pointing to the ground.

5-a: Use the exact same code without modification of values to generate all parts of the tree, then scale, rotate and move the child part to it's position on the parent, simplest way of doing it if you know your transforms well.

(6. If you want to make a good looking tree and not a 'fractal' one, you'll use interpolation for number 4, and carefully set your rules to transition from different direction constraints etc to make trees that arc their branches towards the up vector or branch out more to create a bushy tree )

I say Code! You say Build! Code! Build! Code! Build! Can I get a woop-woop? Woop! Woop!