February 6, 2021, 00:30 (GMT) |
Correct transform of instances |
February 6, 2021, 00:00 (GMT) |
Merge branch 'master' into temp-geometry-nodes-instances-api-v2 |
February 5, 2021, 23:56 (GMT) |
Add implicit make instances real operation for "write" nodes Other nodes that create new geometry instead of modifying existing geometry should read the geometry like the point distribute node does in this branch. |
February 5, 2021, 17:39 (GMT) |
Merge branch 'temp-geometry-nodes-instances-api-v2' of git.blender.org:blender into temp-geometry-nodes-instances-api-v2 |
February 5, 2021, 15:40 (GMT) |
Geometry Nodes: Instances API, support in point distribute node This patch changes the object info node to always output an instance. Theoretically, this change should be invisible to the user, because we plan to make instances real on demand. The benefit is improved performance because we can avoiding copying the input geometry when it's only needed for read operations. To make this work, we need a proper API to enable recursive reading of instanced geometry. This is essential, because we can even have collection instances in the `InstancesComponent`, which have no geometry of their own. And then any object in that collection could also contain an instance with a reference to another collection, etc. That might seem crazy, but it's essential for many more complicated workflows like the tree sample file. Another consideration is that currently, every single instance contains a reference to its data. This is inefficient since most of the time there are many locations and only a few sets of unique data. When we add the ability to instance a geometry set directly, this will be more important. So this patch adds a `GeometryInstanceGroup` to support this future optimization. Two APIs to the instances component are provided here. First is a callback approach that executes a function for every "final" geometry set. This can be used to optimize for many instances, to avoid heap allocations for each instance. The second API is one that returns a vector of `GeometryInstanceGroup`. This may be less efficient when there are many instances, but it makes more complicated operations like point distribution that need to iterate over input geometry multiple times much simpler. Even then, this patch makes the point distribute code much more complicated. It may be possible to simplify it further. The last TODO is support for making instances real on demand, which I am currently working on. The change to the object info node can't land without it. The transform spaces may be incorrect too. Differential Revision: https://developer.blender.org/D10327 |
February 5, 2021, 15:13 (GMT) |
Merge branch 'master' into temp-geometry-nodes-instances-api-v2 |
February 5, 2021, 03:26 (GMT) |
Add comments |
February 5, 2021, 03:20 (GMT) |
Remove debugging code |
February 5, 2021, 03:18 (GMT) |
Geometry Nodes: Point distribute support for instances This completes the work to implement instancing on instances. The density attribute works, and attributes are interpolated to the output like before. The code is much more complicated than before, and harder to understand. Some cleanup is likely possible to help, but to an extent it is unavoidable. |
February 4, 2021, 05:56 (GMT) |
Geometry Nodes: Better support instances in point instance node This does the elimination by distance in a single step for all instances instead of treating each input mesh separately. This needs some cleanup, but the bigger TODO is that attribute interpolation gets a fair amount more complex with this implementation. Needs more thought. |
February 3, 2021, 23:51 (GMT) |
WIP implementation, double vectors, sort of weird |
Revision 8b11d36 by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 3, 2021, 18:58 (GMT) |
More progress converting the point distribute node to operations I might not continue with this approach, it seems like building a temporary vector of geometry components will be much simpler |
Revision d726aae by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 3, 2021, 17:59 (GMT) |
Merge branch 'master' into temp-geometry-nodes-instances-api |
Revision c407647 by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 3, 2021, 05:27 (GMT) |
WIP: Rewrite point distribute node to correctly support instances This does not compile, and isn't close to finished. |
Revision c938399 by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 3, 2021, 05:22 (GMT) |
Add a second idea for the instances API |
Revision 89d5710 by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 3, 2021, 04:16 (GMT) |
Merge branch 'master' into temp-geometry-nodes-instances-api |
Revision 7746c56 by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 2, 2021, 13:47 (GMT) |
Merge branch 'master' into temp-geometry-nodes-instances-api |
Revision 525d368 by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 1, 2021, 23:18 (GMT) |
Geometry Nodes: Support instances in the point instance node |
Revision 5494ad4 by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 1, 2021, 23:17 (GMT) |
Geometry Nodes: Output instanced geometry from the object info node |
Revision 8268e73 by Hans Goudey (temp-geometry-nodes-instances-api, temp-geometry-nodes-instances-api-v2) February 1, 2021, 23:17 (GMT) |
Geometry Nodes: First pass on instance geometry set API I think a fair amount of this will change, but this API uses a callback on each component of a geometry set and its instances recursively. Example uses will come in a following commit. |
|