3
$\begingroup$

I can change points density along quadratic Bezier by moving central handle, like in example_1.

Example_1. enter image description here

But if quadratic Bezier will not be straight, I could not change its points density without changing its shape. Also it will not work, if I want to manage quadratic Bezier points density by curve parameter node.

The best solution will be if resample curve node will work, as I need. But it doesn't. Resample curve node input "count" field does not work like a field on the same curve to which it is applied.

In the example_2 resample curve node works like a charm when I feed it with curve parameter of the first curve.

Example_2. enter image description here

But in the example_3, when I feed it with the curve parameter of its own curve, it works very similar with example_2.

Example_3. enter image description here

Is it a bug?

So my question is: How to force curves in example_3 to be sampled like curves in example_1?

Better resample curve node, let's called it "asymmetrical resample curve node", is very needful for generating plants. Because plants usually have progressive or regressive density of branches along trunk, and leaves along branch.

My goal is to build realistic environments with lots of different full-procedural plants, using geometry nodes in Blender 3.1. I made a giant research and proved that it is already possible. To imagine how far I am you can take a look at couple of my answers here Geonodes: Apply point index to group node input and here Geometry Nodes - Generating geometry per instance

Example_4. Thanks to Hans Goudey. enter image description here In this example i use Hans Goudey answer. It gives me ability to change samples for bended curves. But unfortunatly in this example i lost the ability to change samples of second range curve along first range curve like i did in examples 2 and 3. So my question is not solved yet.

$\endgroup$

2 Answers 2

6
$\begingroup$

The resample node has a single count or length parameter for every spline in the curve data. That's just how the node works, it's not a bug. However, with a bit of work, the sample curve node can give you any distribution of points in the curve that you want.

Also, It might be better to use a different order when building the tree of instances-- first build the geometry to instance with the curve sample node, and then instance it on the "stem" of the plant.

The float curve node combined with the sample curve node can give any density of points along the curve that you would like, though the float curve node could be replaced with any set of nodes that remap the distribution between 0 and 1.

Non-uniform sampling of a curve

$\endgroup$
7
  • $\begingroup$ Thank you! :) But if we will firstly build a leaf and then instance it along the branch, then all leaves will be identical. And if we will firstly build a branch and then instance it along the trunk, then all branches will be identical. And if we firstly build a tree and then instance it along landscape, then all trees will be identical. So this is philosophy of ready collections. This philosophy is not bad, but it is not new, and it already have been realised everywhere. We even do not need geonodes to do so. $\endgroup$
    – 3Dhedgehog
    Commented Jan 19, 2022 at 1:24
  • $\begingroup$ In fact this philosophy is quit opposite to philosophy of full procedural 3D environments, where all things are unique, and are generated at there place. $\endgroup$
    – 3Dhedgehog
    Commented Jan 19, 2022 at 1:25
  • $\begingroup$ The only solution to creating true-procedural plants and environments is to manage, change, and make things unique after instancing. We should put a branch at its place and then the geonodes should look around and say: “Aha, this branch is at 77% of larger parent branch, witch is at 39% of trunk, and on the north side of the tree. That’s why this branch will have this shape.” $\endgroup$
    – 3Dhedgehog
    Commented Jan 19, 2022 at 1:26
  • $\begingroup$ Please take a look at my question again. I edited it, and added your solution as example 4 with illustration and comments. $\endgroup$
    – 3Dhedgehog
    Commented Jan 19, 2022 at 2:49
  • 1
    $\begingroup$ For now, I think the only way to make each branch unique is to use the realize instances node. The process is probably a bit different, but maybe it will work. Eventually we'll have loop nodes and the whole thing might become a bit easier. $\endgroup$ Commented Jan 20, 2022 at 2:50
2
$\begingroup$

Finally the solution is to use "subdivide curve" node. Because this node input field works correctly with curve parameter of the same curve.

Fun:

enter image description here

All setup:

enter image description here

Inside "Curve_To_Points+" Group:

enter image description here

Group input field "Point_Density" works well with curve parameter of the parent curve. So i can control density along all curves. At all ranges of the plant model.

Using "Modulo" math node i select and delete all unneeded points. This way i can keep original count of the points after curve subdivision.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .