Geometry Nodes

The trick is to add the Join geometry node before the group output for the source object and plug the pointcloud that you need in there:


Then that pointcloud can be read by other geo nodes with all the attributes.

2 Likes

Ahaaaaaaaa Nice trick !!! :exploding_head:
I hope this has no impact on performances tho

@slowburn
I tried and itā€™s partially working but, thereā€™s a problem with this technique,
if you do your instancing is coming from emitter vertices, then thereā€™s no point cloud componement

so is there a way to a mesh type to a pointcloud type? :face_with_raised_eyebrow:

or a task for this perhaps? perhaps a component convert node in the work?

No, thereā€™s no way to convert vertices directly into a point cloud AFAIK. Maybe developers didnā€™t see a point to do that. But for interacting between different GN modifiers it would be useful.

Well a node that convert vertices to point could resolve a lot of the issues,
because per vertices distribution is often forgotten.

just to give an example, we donā€™t have proper ID seeds

Capture dā€™Ć©cran 2021-06-22 222241

TBH there is no need for an specific vertex to points convert node, just a point distribution mode that places one point per vĆ©rtice, thatā€™s it, or could be part of the actual point distribution node, the one with random or poisson disk :slight_smile:

2 Likes

Well for flexibility of course :smile: converting vertices to point and points back to vertices seems a no-brainer

Let say you just distributed your point clouds with the scatter node and want use modifiers on your cloud?
well you canā€™t because point clouds types are not supported by modifiers and other nodes dedicated to meshesā€¦

Vertices and point cloud are extremely tied anyway, to be honest i donā€™t understand why they go splitted back in 2020

I know that these kind of ā€œdetailsā€ are boring comparing to working on new features but at some point we need to tackle the workflows incoherencies like this IMHO

But thatā€™s not converting vertex to points, what you want is to convert from one object data type to another, thatā€™s a different thing.

AFAIK thatā€™s not going to happen, at least for now, but I can be wrong.

What you are asking for is that if your output in the modifier is a point cloud, then the object data should turn into a point cloud type, however AFAIK that cannot happen.

What you can do is to create a mesh object and then get the data from the point cloud, that way you will be able to use the mesh modifiers.

Just like you can convert a volume to a mesh and a mesh to a volume, i donā€™t see why we couldnā€™t do that with vertices & points :face_with_raised_eyebrow:

I think thereā€™s some misunderstanding here, because mostly everything you can do with points you can also do with mesh vertices. The idea of point clouds is to have a more basic storage for data with none of the complications like edges, faces, etc.

So in any current workflow, converting from mesh vertices directly to points will not get you anything. If you want the id attribute for instancing, just use attribute randomize with id as the result. The result should be the same.

I honestly donā€™t understand what youā€™re skeptical about. The point to volume node already does this, and a Point Distribute Volume node will cover the other direction.


What might actually be helpful is a way to generate one point per mesh face, that would be simple to add and possibly a nice improvement.

6 Likes

That would be very useful :slight_smile:

@JskJ I may have missundertood you, but you want is this:

1.- You create a point cloud object
2.- You create a GN modifier and distribute some point clouds
3.- You create some geometry inside GN from that point cloud
4.- You want to modify that PointCloud object with some other modifier put after the GN modifier

Since PointCloud is an specific data type you cannot add a Subdivision Surface Modifier to that point cloud object.

That does not mean that you cannot use nodes internally in the GN modifier/tree, but in the end you cannot treat that object as a mesh data object because in the end itā€™s a point cloud data object.

Thatā€™s what I meant :slight_smile:

Iā€™m not sure if thatā€™s what they were talking about, but yes : a more ā€œrationalā€ scattering method would be very welcome. Iā€™ve seen people trying to instance objects in regular patterns to make tires, for instance. Of course itā€™s possible to use the points directly, but more often than not youā€™ll want to instance the object on the face itself. Same goes for edges, although this is most likely less useful than faces.
OR this could be covered by a loop and some mesh analysis variablesā€¦ something like ā€œfor each edge in mesh, create a point on edge centerpoint and inherit normalā€

2 Likes

A nice tool would be something similar to the Component Analyser in Sverchok. Lotā€™s of super handy analytical outputs that can be use for all sorts of selections and masking like face centres, face areas, boundary edges, edge angle etc. That would give people access to things like face centres but also other data that is invaluable

2 Likes

Hehe that canā€™t work because the randomize node need id as the seed
But I get it, yeah we can create the id attribute ourselves. By default it will use listing order, we also could use their local position, both have their cons but itā€™s indeed possible

I was just explaining to @JuanGea that converting one type to another is possible and already happening, ( because ā€œAFAIK thatā€™s not going to happenā€ as he said )

If complex type conversion such as volume to point already exists, why couldnā€™t we have a simple node that convert a mesh type to a pointcloud type (with option per vertices/edges/face for example) and another node that convert pointcloud to back to meshes? :face_with_raised_eyebrow:

And the argument of ā€œthey are mostly the same thing hence no need for conversionā€ do not make sense, because otherwise the separation between the two type wouldnā€™t be done at the first place.

From a methodology & flexibility standpoint, once we propose two similar type, a way to convert them seems quite obvious. And yes, would be useful in a lot of cases too. Let say we want to store a suzanne mesh with itā€™s point cloud emitted from their vertices in a geometry?

Just like @slowburn teached me above

The trick is to add the Join geometry node before the group output for the source object and plug the pointcloud that you need in there:

well right now itā€™s not possible if I made my scatter from vertices because we have no conversion bridge between mesh/point cloud.

I think I demonstrated quite clearly in this case that having to bridge between these two similar type can cause issues

What might actually be helpful is a way to generate one point per mesh face, that would be simple to add and possibly a nice improvement.

Note aside, Thatā€™s already possible By subdividing the faces and using the attr proximity node
But yes that would be nice to have a node that can create points out from meshes vert/faces/edges with all the attr weā€™d need

Yes and thatā€™s the problem !

having a node that convert pointcloud back to vertices would let us use features exclusive to the mesh type, aka all current modifiers.
Subdivision is a bad example in this case because subdividing a mesh only made from vertices do not make sense, but think about every other modifiers that the pointcloud type cannot use.

Which modifiers exactly do you wish you could use with point cloud objects ?

All of them?
Iā€™m simply pointing out a design that leads to a limitation/ lack of flexibility

Maybe you know this already, but point clouds in the output of the nodes modifier are automatically converted to mesh vertices if the next modifier does not support working with points directly.

Iā€™m not challenging you, @JskJ
I am trying to help point out the use case, the lack and the need

Ah no i didnā€™t knew that,
last time i checked it did not worked,

itā€™s a bit weird that this is done automatically tho

Iā€™m not challenging you, @JskJ
I am trying to help point out the use case, the lack and the need

Sure
here is an example where Iā€™m stuck because I canā€™t convert points back to vertices
I canā€™t save my points by joining them in the geometry to split the component later because thereā€™s no way to convert my vertices into a pointcloud

and here are examples on how a node that convert mesh to point can be useful:
-place points on middle of edges/ per faces/ per vertices with id/normal attr already set up

@HooglyBoogly I think he means that if he uses a point cloud object for GN, and then the end geometry is a cube for example, after the GN modifier he canā€™t add any Mesh modifier, like a subdivision surface or a boolean.