Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/geometry/nodes/node_geo_point_instance.cc
| Show First 20 Lines • Show All 155 Lines • ▼ Show 20 Lines | Array<std::optional<InstancedData>> instances_data = get_instanced_data( | ||||
| params, src_geometry, domain_size); | params, src_geometry, domain_size); | ||||
| Float3ReadAttribute positions = src_geometry.attribute_get_for_read<float3>( | Float3ReadAttribute positions = src_geometry.attribute_get_for_read<float3>( | ||||
| "position", domain, {0, 0, 0}); | "position", domain, {0, 0, 0}); | ||||
| Float3ReadAttribute rotations = src_geometry.attribute_get_for_read<float3>( | Float3ReadAttribute rotations = src_geometry.attribute_get_for_read<float3>( | ||||
| "rotation", domain, {0, 0, 0}); | "rotation", domain, {0, 0, 0}); | ||||
| Float3ReadAttribute scales = src_geometry.attribute_get_for_read<float3>( | Float3ReadAttribute scales = src_geometry.attribute_get_for_read<float3>( | ||||
| "scale", domain, {1, 1, 1}); | "scale", domain, {1, 1, 1}); | ||||
| Int32ReadAttribute ids = src_geometry.attribute_get_for_read<int>("id", domain, -1); | |||||
| for (const int i : IndexRange(domain_size)) { | for (const int i : IndexRange(domain_size)) { | ||||
| if (instances_data[i].has_value()) { | if (instances_data[i].has_value()) { | ||||
| instances.add_instance(*instances_data[i], positions[i], rotations[i], scales[i]); | instances.add_instance(*instances_data[i], positions[i], rotations[i], scales[i], ids[i]); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| static void geo_node_point_instance_exec(GeoNodeExecParams params) | static void geo_node_point_instance_exec(GeoNodeExecParams params) | ||||
| { | { | ||||
| GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry"); | GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry"); | ||||
| GeometrySet geometry_set_out; | GeometrySet geometry_set_out; | ||||
| Show All 25 Lines | |||||