Blender V5.0
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
MutableSpan< InstanceReferencereferences_for_write ()
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 > 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
bke::AttributeStorageattribute_storage ()
const bke::AttributeStorageattribute_storage () const

Detailed Description

Definition at line 112 of file BKE_instances.hh.

Constructor & Destructor Documentation

◆ Instances() [1/3]

◆ Instances() [2/3]

Definition at line 151 of file instances.cc.

◆ Instances() [3/3]

Definition at line 160 of file instances.cc.

◆ ~Instances()

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 204 of file instances.cc.

◆ add_new_reference()

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

Definition at line 269 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 261 of file instances.cc.

◆ attribute_storage() [1/2]

◆ attribute_storage() [2/2]

Definition at line 314 of file BKE_instances.hh.

◆ attributes()

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

Definition at line 64 of file instances.cc.

◆ attributes_for_write()

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

Definition at line 69 of file instances.cc.

◆ count_memory()

Definition at line 423 of file instances.cc.

◆ 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 107 of file geometry_set_instances.cc.

◆ ensure_owns_direct_data()

◆ find_reference_handle()

Definition at line 250 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 75 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 241 of file instances.cc.

◆ instances_num()

Definition at line 393 of file instances.cc.

◆ operator=() [1/2]

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

Definition at line 171 of file instances.cc.

◆ operator=() [2/2]

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

Definition at line 181 of file instances.cc.

◆ owns_direct_data()

Definition at line 403 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_for_write()

◆ references_num()

Definition at line 398 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 285 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 191 of file instances.cc.

◆ tag_reference_handles_changed()

◆ transforms()

Definition at line 228 of file instances.cc.

◆ transforms_for_write()

◆ unique_ids()

Get an id for every instance. These can be used e.g. motion blur. This is based on the "id" attribute but makes sure that the ids are actually unique.

Definition at line 505 of file instances.cc.


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