Blender V4.5
blender::geometry::Instances Class Reference

#include <BKE_instances.hh>

Public Member Functions

 Instances ()
 Instances (Instances &&other)
 Instances (const Instances &other)
 ~Instances ()
Instancesoperator= (const Instances &other)
Instancesoperator= (Instances &&other)
void resize (int capacity)
int add_reference (const InstanceReference &reference)
int add_new_reference (const InstanceReference &reference)
std::optional< int > find_reference_handle (const InstanceReference &query)
void add_instance (int instance_handle, const float4x4 &transform)
Span< InstanceReferencereferences () const
void remove_unused_references ()
void ensure_geometry_instances ()
GeometrySetgeometry_set_from_reference (int reference_index)
Span< int > reference_handles () const
MutableSpan< int > reference_handles_for_write ()
Span< float4x4transforms () const
MutableSpan< float4x4transforms_for_write ()
int instances_num () const
int references_num () const
void remove (const IndexMask &mask, const AttributeFilter &attribute_filter)
Span< int > almost_unique_ids () const
Span< int > reference_user_counts () const
bke::AttributeAccessor attributes () const
bke::MutableAttributeAccessor attributes_for_write ()
void foreach_referenced_geometry (FunctionRef< void(const GeometrySet &geometry_set)> callback) const
bool owns_direct_data () const
void ensure_owns_direct_data ()
void count_memory (MemoryCounter &memory) const
void tag_reference_handles_changed ()
#InstanceReference Inline Methods
CustomDatacustom_data_attributes ()
const CustomDatacustom_data_attributes () const

Detailed Description

Definition at line 113 of file BKE_instances.hh.

Constructor & Destructor Documentation

◆ Instances() [1/3]

Definition at line 148 of file instances.cc.

◆ Instances() [2/3]

Definition at line 153 of file instances.cc.

◆ Instances() [3/3]

Definition at line 163 of file instances.cc.

◆ ~Instances()

Definition at line 172 of file instances.cc.

Member Function Documentation

◆ add_instance()

void blender::bke::Instances::add_instance ( int instance_handle,
const float4x4 & transform )

Add a reference to the instance reference with an index specified by the #instance_handle argument. For adding many instances, using resize and accessing the transform array directly is preferred.

Definition at line 203 of file instances.cc.

◆ add_new_reference()

Same as above, but does not deduplicate with existing references.

Definition at line 279 of file instances.cc.

◆ add_reference()

Returns a handle for the given reference. If the reference exists already, the handle of the existing reference is returned. Otherwise a new handle is added.

Definition at line 271 of file instances.cc.

◆ almost_unique_ids()

Get an id for every instance. These can be used e.g. motion blur.

Definition at line 505 of file instances.cc.

◆ attributes()

AttributeAccessor blender::bke::Instances::attributes ( ) const

Definition at line 63 of file instances.cc.

◆ attributes_for_write()

MutableAttributeAccessor blender::bke::Instances::attributes_for_write ( )

Definition at line 68 of file instances.cc.

◆ count_memory()

Definition at line 428 of file instances.cc.

◆ custom_data_attributes() [1/2]

◆ custom_data_attributes() [2/2]

Definition at line 314 of file BKE_instances.hh.

◆ ensure_geometry_instances()

If references have a collection or object type, convert them into geometry instances recursively. After that, the geometry sets can be edited. There may still be instances of other types of they can't be converted to geometry sets.

Definition at line 115 of file geometry_set_instances.cc.

◆ ensure_owns_direct_data()

◆ find_reference_handle()

Definition at line 260 of file instances.cc.

◆ foreach_referenced_geometry()

void blender::bke::Instances::foreach_referenced_geometry ( FunctionRef< void(const GeometrySet &geometry_set)> callback) const

Definition at line 83 of file geometry_set_instances.cc.

◆ geometry_set_from_reference()

With write access to the instances component, the data in the instanced geometry sets can be changed. This is a function on the component rather than each reference to ensure const correctness for that reason.

Definition at line 251 of file instances.cc.

◆ instances_num()

Definition at line 398 of file instances.cc.

◆ operator=() [1/2]

Instances & blender::bke::Instances::operator= ( const Instances & other)

Definition at line 177 of file instances.cc.

◆ operator=() [2/2]

Instances & blender::bke::Instances::operator= ( Instances && other)

Definition at line 187 of file instances.cc.

◆ owns_direct_data()

Definition at line 408 of file instances.cc.

◆ reference_handles()

Definition at line 215 of file instances.cc.

◆ reference_handles_for_write()

◆ reference_user_counts()

Get cached user counts for every reference.

Definition at line 488 of file instances.cc.

◆ references()

◆ references_num()

Definition at line 403 of file instances.cc.

◆ remove()

void blender::bke::Instances::remove ( const IndexMask & mask,
const AttributeFilter & attribute_filter )

Remove the indices that are not contained in the mask input, and remove unused instance references afterwards.

Definition at line 290 of file instances.cc.

◆ remove_unused_references()

◆ resize()

void blender::bke::Instances::resize ( int capacity)

Resize the transform, handles, and attributes to the specified capacity.

Note
This function should be used carefully, only when it's guaranteed that the data will be filled.

Definition at line 197 of file instances.cc.

◆ tag_reference_handles_changed()

◆ transforms()

Definition at line 233 of file instances.cc.

◆ transforms_for_write()


The documentation for this class was generated from the following files: