1
$\begingroup$

I have a node setup as in the screen below. I try to create a curve line between every two instances (at index and index+1) given by the "Instance on points" node. When I try to do it for the specific two indices - it works as expected, but once I connect the "Index" node, the Sample at Index node output, become a function, and Quadratic Bezier does not accept it's result anymore. I understand why it's happening and this is indeed expected, but I have no idea how to achieve my goal - is it even possible? I use Blender 3.5.0

Current: enter image description here

Wanted (but for every two instance, not just first ones):enter image description here

$\endgroup$
3
  • 1
    $\begingroup$ The Quadratic-Bezier's input sockets are always round when you instance it. They are not diamond-shaped. This means that they generate geometry objectwise (once) not instance-wise (per point). Try instancing a curve with two points on each position, realize them and continue with that real geometry. $\endgroup$
    – Leander
    Apr 26, 2023 at 6:20
  • $\begingroup$ look at this answer, retry solving your issues, then update your question. blender.stackexchange.com/a/291514/165102 $\endgroup$
    – shmuel
    Apr 26, 2023 at 19:47
  • $\begingroup$ @shmuel I did understand the "no loop" thing, however I hoped maybe I just don't see some "magic" combination of Duplicate Elements and Set Position that I just can't figure out or something like that. I don't know exactly - if I knew I wouldn't ask :) but based on the link you gave, basically - the thing I want is impossible right? I just need to try different approach like for example in the answer below $\endgroup$ Apr 27, 2023 at 6:24

1 Answer 1

1
$\begingroup$

I don't know if something more concise or shorter can be done. But that may be a solution.

enter image description here

Here is the result from six mesh points:

enter image description here

The group input has three slots:

  • the mesh line
  • the resolution for each quadratic line
  • a Z delta for the bottom part of the quadratic line

Top part:

enter image description here

From the input geometry, it creates a mesh line that as a vertex count that is the resolution multiplied by the vertex amount (one resolution amount for each interval + one for the last vertex).

The "set position" is calculated below.

Second part:

enter image description here

This is calculating the vertex position from the quadratic formula given three points.

The formula (parametric on "t") is the following:

P(t) = P0*t^2 + P1*2*t*(1-t) + P2*(1-t)^2

Next, calculating the 3 points we need for each segment of the initial shape/mesh:

enter image description here

which cuts the indices into chunks that are at the resolution size. Then takes mesh points and their middle lowered on Z by the input parameter.

PS: I would be very interested to see a solution that uses only three points on a bezier curve with the good tuning of the handles to have the same result. Is it possible? What is the math?

$\endgroup$
3
  • $\begingroup$ it's not exactly what I wanted, but it looks good - as mentioned in the comment above, the thing that I want, is most likely impossible at the moment. I'll mark your answer $\endgroup$ Apr 28, 2023 at 8:11
  • $\begingroup$ you may encounter index order issues. To avoid that prefer starting from (for instance) a poly line instead of a mesh (as I did in the example above). $\endgroup$
    – lemon
    Apr 28, 2023 at 8:15
  • $\begingroup$ @MattNomatter if you're focused on the implementation detail - connecting fields to circular fields - yes, it's impossible. If there's a particular result you want to achieve which lemon's solution doesn't - you have to explain it, because he solves the problem exactly as I understood it. $\endgroup$ Sep 2, 2023 at 14:09

You must log in to answer this question.

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