Blender V4.3
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< intfind_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< intreference_handles () const
MutableSpan< intreference_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< intalmost_unique_ids () const
Span< intreference_user_counts () const
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 ()
Geometry Component Implementation
bke::AttributeAccessor attributes () const
bke::MutableAttributeAccessor attributes_for_write ()
#InstanceReference Inline Methods
CustomDatacustom_data_attributes ()
const CustomDatacustom_data_attributes () const

Detailed Description

Definition at line 112 of file BKE_instances.hh.

Constructor & Destructor Documentation

◆ Instances() [1/3]

blender::bke::Instances::Instances ( )

Definition at line 140 of file instances.cc.

◆ Instances() [2/3]

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

Definition at line 145 of file instances.cc.

◆ Instances() [3/3]

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

Definition at line 155 of file instances.cc.

◆ ~Instances()

blender::bke::Instances::~Instances ( )

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

◆ add_new_reference()

int blender::bke::Instances::add_new_reference ( const InstanceReference & reference)

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

Definition at line 271 of file instances.cc.

◆ add_reference()

int blender::bke::Instances::add_reference ( const InstanceReference & 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 263 of file instances.cc.

◆ almost_unique_ids()

Span< int > blender::bke::Instances::almost_unique_ids ( ) const

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

Definition at line 497 of file instances.cc.

◆ attributes()

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

Definition at line 215 of file geometry_component_instances.cc.

◆ attributes_for_write()

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

Definition at line 220 of file geometry_component_instances.cc.

◆ count_memory()

void blender::bke::Instances::count_memory ( MemoryCounter & memory) const

Definition at line 420 of file instances.cc.

◆ custom_data_attributes() [1/2]

CustomData & blender::bke::Instances::custom_data_attributes ( )
inline

Definition at line 307 of file BKE_instances.hh.

◆ custom_data_attributes() [2/2]

const CustomData & blender::bke::Instances::custom_data_attributes ( ) const
inline

Definition at line 312 of file BKE_instances.hh.

◆ ensure_geometry_instances()

void blender::bke::Instances::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 104 of file geometry_set_instances.cc.

◆ ensure_owns_direct_data()

void blender::bke::Instances::ensure_owns_direct_data ( )

Definition at line 410 of file instances.cc.

◆ find_reference_handle()

std::optional< int > blender::bke::Instances::find_reference_handle ( const InstanceReference & query)

Definition at line 252 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 72 of file geometry_set_instances.cc.

◆ geometry_set_from_reference()

GeometrySet & blender::bke::Instances::geometry_set_from_reference ( int reference_index)

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

◆ instances_num()

int blender::bke::Instances::instances_num ( ) const

Definition at line 390 of file instances.cc.

◆ operator=() [1/2]

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

Definition at line 169 of file instances.cc.

◆ operator=() [2/2]

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

Definition at line 179 of file instances.cc.

◆ owns_direct_data()

bool blender::bke::Instances::owns_direct_data ( ) const

Definition at line 400 of file instances.cc.

◆ reference_handles()

Span< int > blender::bke::Instances::reference_handles ( ) const

Definition at line 207 of file instances.cc.

◆ reference_handles_for_write()

MutableSpan< int > blender::bke::Instances::reference_handles_for_write ( )

Definition at line 214 of file instances.cc.

◆ reference_user_counts()

Span< int > blender::bke::Instances::reference_user_counts ( ) const

Get cached user counts for every reference.

Definition at line 480 of file instances.cc.

◆ references()

Span< InstanceReference > blender::bke::Instances::references ( ) const

Definition at line 277 of file instances.cc.

◆ references_num()

int blender::bke::Instances::references_num ( ) const

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

◆ remove_unused_references()

void blender::bke::Instances::remove_unused_references ( )

Definition at line 308 of file instances.cc.

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

◆ tag_reference_handles_changed()

void blender::bke::Instances::tag_reference_handles_changed ( )
inline

Definition at line 223 of file BKE_instances.hh.

◆ transforms()

Span< float4x4 > blender::bke::Instances::transforms ( ) const

Definition at line 225 of file instances.cc.

◆ transforms_for_write()

MutableSpan< float4x4 > blender::bke::Instances::transforms_for_write ( )

Definition at line 232 of file instances.cc.


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