|
Blender V4.3
|
#include <climits>#include <cstddef>#include <cstdlib>#include "MEM_guardedalloc.h"#include "BLI_listbase.h"#include "BLI_math_vector.h"#include "BLI_string_utf8.h"#include "BLI_array.hh"#include "BLI_math_geom.h"#include "BLI_math_matrix.h"#include "BLI_math_rotation.h"#include "BLI_math_vector.hh"#include "BLI_rand.h"#include "BLI_span.hh"#include "BLI_vector.hh"#include "DNA_collection_types.h"#include "DNA_curves_types.h"#include "DNA_grease_pencil_types.h"#include "DNA_mesh_types.h"#include "DNA_modifier_types.h"#include "DNA_pointcloud_types.h"#include "DNA_scene_types.h"#include "DNA_volume_types.h"#include "BKE_collection.hh"#include "BKE_duplilist.hh"#include "BKE_editmesh.hh"#include "BKE_editmesh_cache.hh"#include "BKE_geometry_set.hh"#include "BKE_geometry_set_instances.hh"#include "BKE_global.hh"#include "BKE_idprop.hh"#include "BKE_instances.hh"#include "BKE_main.hh"#include "BKE_mesh.hh"#include "BKE_object.hh"#include "BKE_object_types.hh"#include "BKE_particle.h"#include "BKE_vfont.hh"#include "DEG_depsgraph.hh"#include "DEG_depsgraph_query.hh"#include "BLI_hash.h"#include "DNA_world_types.h"#include "NOD_geometry_nodes_log.hh"#include "RNA_access.hh"#include "RNA_path.hh"#include "RNA_prototypes.hh"#include "MOD_nodes.hh"Go to the source code of this file.
Classes | |
| struct | DupliContext |
| struct | DupliGenerator |
| struct | VertexDupliData_Params |
| struct | VertexDupliData_Mesh |
| struct | VertexDupliData_EditMesh |
| struct | FaceDupliData_Params |
| struct | FaceDupliData_Mesh |
| struct | FaceDupliData_EditMesh |
Functions | |
Internal Data Access Utilities | |
| static const Mesh * | mesh_data_from_duplicator_object (Object *ob, BMEditMesh **r_em, Span< float3 > *r_vert_coords, Span< float3 > *r_vert_normals) |
Dupli-Container Implementation | |
| ListBase * | object_duplilist (Depsgraph *depsgraph, Scene *sce, Object *ob) |
| ListBase * | object_duplilist_preview (Depsgraph *depsgraph, Scene *sce, Object *ob_eval, const ViewerPath *viewer_path) |
| void | free_object_duplilist (ListBase *lb) |
Uniform attribute lookup | |
| static bool | find_geonode_attribute_rgba (const DupliObject *dupli, const char *name, float r_value[4]) |
| static bool | find_rna_property_rgba (PointerRNA *id_ptr, const char *name, float r_data[4]) |
| static bool | find_rna_property_rgba (const ID *id, const char *name, float r_data[4]) |
| bool | BKE_object_dupli_find_rgba_attribute (const Object *ob, const DupliObject *dupli, const Object *dupli_parent, const char *name, float r_value[4]) |
| bool | BKE_view_layer_find_rgba_attribute (const Scene *scene, const ViewLayer *layer, const char *name, float r_value[4]) |
Internal Child Duplicates (Used by Other Functions) | |
| using | MakeChildDuplisFunc = void (*)(const DupliContext *ctx, void *userdata, Object *child) |
| static bool | is_child (const Object *ob, const Object *parent) |
| static void | make_child_duplis (const DupliContext *ctx, void *userdata, MakeChildDuplisFunc make_child_duplis_cb) |
Internal Duplicate Context | |
| static constexpr short | GEOMETRY_SET_DUPLI_GENERATOR_TYPE = 1 |
| static const DupliGenerator * | get_dupli_generator (const DupliContext *ctx) |
| static void | init_context (DupliContext *r_ctx, Depsgraph *depsgraph, Scene *scene, Object *ob, const float space_mat[4][4], Vector< Object * > &instance_stack, Vector< short > &dupli_gen_type_stack) |
| static bool | copy_dupli_context (DupliContext *r_ctx, const DupliContext *ctx, Object *ob, const float mat[4][4], int index, const GeometrySet *geometry=nullptr, int64_t instance_index=0) |
| static DupliObject * | make_dupli (const DupliContext *ctx, Object *ob, const ID *object_data, const float mat[4][4], int index, const GeometrySet *geometry=nullptr, int64_t instance_index=0) |
| static DupliObject * | make_dupli (const DupliContext *ctx, Object *ob, const float mat[4][4], int index, const GeometrySet *geometry=nullptr, int64_t instance_index=0) |
| static void | make_recursive_duplis (const DupliContext *ctx, Object *ob, const float space_mat[4][4], int index, const GeometrySet *geometry=nullptr, int64_t instance_index=0) |
Dupli-Collection Implementation (#OB_DUPLICOLLECTION) | |
| static const DupliGenerator | gen_dupli_collection |
| static void | make_duplis_collection (const DupliContext *ctx) |
Dupli-Vertices Implementation (#OB_DUPLIVERTS for Geometry) | |
| static const DupliGenerator | gen_dupli_verts |
| static void | get_duplivert_transform (const float3 &co, const float3 &no, const bool use_rotation, const short axis, const short upflag, float r_mat[4][4]) |
| static DupliObject * | vertex_dupli (const DupliContext *ctx, Object *inst_ob, const float child_imat[4][4], int index, const float3 &co, const float3 &no, const bool use_rotation) |
| static void | make_child_duplis_verts_from_mesh (const DupliContext *ctx, void *userdata, Object *inst_ob) |
| static void | make_child_duplis_verts_from_editmesh (const DupliContext *ctx, void *userdata, Object *inst_ob) |
| static void | make_duplis_verts (const DupliContext *ctx) |
Dupli-Vertices Implementation (#OB_DUPLIVERTS for 3D Text) | |
| static const DupliGenerator | gen_dupli_verts_font |
| static Object * | find_family_object (Main *bmain, const char *family, size_t family_len, uint ch, GHash *family_gh) |
| static void | make_duplis_font (const DupliContext *ctx) |
Instances Geometry Component Implementation | |
| static const DupliGenerator | gen_dupli_geometry_set |
| static void | make_duplis_geometry_set_impl (const DupliContext *ctx, const GeometrySet &geometry_set, const float parent_transform[4][4], bool geometry_set_is_instance, bool use_new_curves_type) |
| static void | make_duplis_geometry_set (const DupliContext *ctx) |
Dupli-Faces Implementation (#OB_DUPLIFACES) | |
| static const DupliGenerator | gen_dupli_faces |
| static void | get_dupliface_transform_from_coords (Span< float3 > coords, const bool use_scale, const float scale_fac, float r_mat[4][4]) |
| static DupliObject * | face_dupli (const DupliContext *ctx, Object *inst_ob, const float child_imat[4][4], const int index, const bool use_scale, const float scale_fac, Span< float3 > coords) |
| static DupliObject * | face_dupli_from_mesh (const DupliContext *ctx, Object *inst_ob, const float child_imat[4][4], const int index, const bool use_scale, const float scale_fac, const Span< int > face_verts, const Span< float3 > vert_positions) |
| static DupliObject * | face_dupli_from_editmesh (const DupliContext *ctx, Object *inst_ob, const float child_imat[4][4], const int index, const bool use_scale, const float scale_fac, BMFace *f, const Span< float3 > vert_positions_deform) |
| static void | make_child_duplis_faces_from_mesh (const DupliContext *ctx, void *userdata, Object *inst_ob) |
| static void | make_child_duplis_faces_from_editmesh (const DupliContext *ctx, void *userdata, Object *inst_ob) |
| static void | make_duplis_faces (const DupliContext *ctx) |
Dupli-Particles Implementation (#OB_DUPLIPARTS) | |
| static const DupliGenerator | gen_dupli_particles |
| static void | make_duplis_particle_system (const DupliContext *ctx, ParticleSystem *psys) |
| static void | make_duplis_particles (const DupliContext *ctx) |
| using MakeChildDuplisFunc = void (*)(const DupliContext *ctx, void *userdata, Object *child) |
Definition at line 362 of file object_dupli.cc.
| bool BKE_object_dupli_find_rgba_attribute | ( | const Object * | ob, |
| const DupliObject * | dupli, | ||
| const Object * | dupli_parent, | ||
| const char * | name, | ||
| float | r_value[4] ) |
Look up the RGBA value of a uniform shader attribute.
Definition at line 1942 of file object_dupli.cc.
References copy_v4_fl(), Object::data, find_geonode_attribute_rgba(), find_rna_property_rgba(), Object::id, ParticleSystem::part, and DupliObject::particle_system.
Referenced by drw_uniform_attribute_lookup(), and lookup_instance_property().
| bool BKE_view_layer_find_rgba_attribute | ( | const Scene * | scene, |
| const ViewLayer * | layer, | ||
| const char * | name, | ||
| float | r_value[4] ) |
Look up the RGBA value of a view layer/scene/world shader attribute.
Definition at line 1983 of file object_dupli.cc.
References copy_v4_fl(), find_rna_property_rgba(), and RNA_pointer_create().
Referenced by drw_ensure_layer_attribute_buffer().
|
static |
Create sub-context for recursive duplis.
Definition at line 181 of file object_dupli.cc.
References DupliContext::collection, DupliContext::dupli_gen_type_stack, DupliContext::gen, GEOMETRY_SET_DUPLI_GENERATOR_TYPE, get_dupli_generator(), Object::instance_collection, DupliContext::instance_data, DupliContext::instance_idx, DupliContext::instance_stack, DupliContext::level, MAX_DUPLI_RECUR, mul_m4_m4m4(), OB_DUPLICOLLECTION, DupliContext::object, DupliContext::persistent_id, DupliContext::space_mat, and DupliGenerator::type.
Referenced by make_child_duplis(), make_duplis_geometry_set_impl(), make_duplis_particles(), and make_recursive_duplis().
|
static |
Definition at line 1118 of file object_dupli.cc.
References copy_m3_m4(), get_dupliface_transform_from_coords(), make_dupli(), make_recursive_duplis(), mul_m4_m3m4(), mul_m4_m4m4(), mul_mat3_m4_v3(), and Object::parentinv.
Referenced by face_dupli_from_editmesh(), and face_dupli_from_mesh().
|
static |
Definition at line 1178 of file object_dupli.cc.
References BM_elem_index_get, BM_FACE_FIRST_LOOP, BMVert::co, copy_v3_v3(), face_dupli(), blender::Span< T >::is_empty(), BMFace::len, BMLoop::next, and BMLoop::v.
Referenced by make_child_duplis_faces_from_editmesh().
|
static |
Definition at line 1158 of file object_dupli.cc.
References face_dupli(), and blender::Span< T >::size().
Referenced by make_child_duplis_faces_from_mesh().
|
static |
Definition at line 752 of file object_dupli.cc.
References BLI_ghash_insert(), BLI_ghash_lookup_p(), BLI_str_utf8_from_unicode(), BLI_UTF8_MAX, LISTBASE_FOREACH, Main::objects, POINTER_FROM_UINT, and STREQLEN.
Referenced by make_duplis_font().
|
static |
Lookup instance attributes assigned via geometry nodes.
Definition at line 1830 of file object_dupli.cc.
References ARRAY_SIZE, blender::bke::InstancesComponent::attributes(), copy_v4_v4(), blender::bke::GeometrySet::get_component(), DupliObject::instance_data, and DupliObject::instance_idx.
Referenced by BKE_object_dupli_find_rgba_attribute().
Definition at line 1936 of file object_dupli.cc.
References find_rna_property_rgba(), ptr, and RNA_id_pointer_create().
|
static |
Lookup an arbitrary RNA property and convert it to RGBA if possible.
Definition at line 1866 of file object_dupli.cc.
References copy_v4_fl4(), PointerRNA::data, float, IDP_GetPropertyFromGroup(), IDP_GROUP, PROP_BOOLEAN, PROP_FLOAT, PROP_INT, ptr, RNA_path_resolve(), RNA_property_array_length(), RNA_property_boolean_get(), RNA_property_float_get(), RNA_property_float_get_array(), RNA_property_int_get(), RNA_property_int_get_array(), RNA_property_type(), and RNA_struct_idprops().
Referenced by BKE_object_dupli_find_rgba_attribute(), BKE_view_layer_find_rgba_attribute(), and find_rna_property_rgba().
| void free_object_duplilist | ( | ListBase * | lb | ) |
Definition at line 1817 of file object_dupli.cc.
References BLI_freelistN(), and MEM_freeN().
Referenced by BKE_object_minmax_dupli(), BKE_scene_base_iter_next(), blender::ed::greasepencil::get_bake_targets(), iter_snap_objects(), and blender::ed::object::make_object_duplilist_real().
|
static |
Definition at line 1701 of file object_dupli.cc.
References DAG_EVAL_RENDER, DEG_get_mode(), DupliContext::depsgraph, gen_dupli_collection, gen_dupli_faces, gen_dupli_geometry_set, gen_dupli_particles, gen_dupli_verts, gen_dupli_verts_font, DupliContext::level, OB_DUPLI, OB_DUPLICOLLECTION, OB_DUPLIFACES, OB_DUPLIPARTS, OB_DUPLIVERTS, OB_FONT, OB_HIDE_RENDER, OB_HIDE_VIEWPORT, OB_MBALL, OB_MESH, DupliContext::object, blender::bke::object_has_geometry_set_instances(), Object::runtime, Object::transflag, Object::type, and Object::visibility_flag.
Referenced by copy_dupli_context(), and init_context().
|
static |
Definition at line 1085 of file object_dupli.cc.
References area_poly_v3(), blender::Span< T >::data(), float, loc_quat_size_to_mat4(), normalize(), blender::Span< T >::size(), sqrtf, and tri_to_quat_ex().
Referenced by face_dupli().
|
static |
| no | The direction, currently this is copied from a short[3] normal without division. Can be null when use_rotation is false. |
Definition at line 584 of file object_dupli.cc.
References loc_quat_size_to_mat4(), negate_v3_v3(), unit_qt(), and vec_to_quat().
Referenced by vertex_dupli().
|
static |
Create initial context for root object.
Definition at line 143 of file object_dupli.cc.
References DupliContext::collection, copy_m4_m4(), depsgraph, DupliContext::depsgraph, DupliContext::dupli_gen_type_stack, DupliContext::duplilist, DupliContext::gen, GEOMETRY_SET_DUPLI_GENERATOR_TYPE, get_dupli_generator(), DupliContext::instance_stack, DupliContext::level, DupliContext::obedit, OBEDIT_FROM_OBACT, DupliContext::object, DupliContext::preview_base_geometry, DupliContext::preview_instance_index, DupliContext::root_object, DupliContext::scene, scene, DupliContext::space_mat, DupliGenerator::type, and unit_m4().
Referenced by createTransTrackingTracksData(), markerToTransDataInit(), object_duplilist(), object_duplilist_preview(), planeMarkerToTransDataInit(), planeTrackToTransData(), planeTrackToTransDataIfNeeded(), trackToTransData(), and trackToTransDataIfNeeded().
Definition at line 364 of file object_dupli.cc.
References Object::parent.
Referenced by make_child_duplis(), blender::draw::particle_batch_cache_fill_segments(), and blender::draw::particle_batch_cache_fill_strands_data().
|
static |
Create duplis from every child in scene or collection.
Definition at line 379 of file object_dupli.cc.
References DupliContext::collection, copy_dupli_context(), DEG_get_mode(), DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY, DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET, DEG_OBJECT_ITER_BEGIN, DEG_OBJECT_ITER_END, DEGObjectIterSettings::depsgraph, DupliContext::depsgraph, DupliContext::dupli_gen_type_stack, FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN, FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_END, DupliContext::gen, GEOMETRY_SET_DUPLI_GENERATOR_TYPE, is_child(), OB_DONE, OB_MBALL, DupliContext::obedit, DupliContext::object, and DupliGenerator::type.
Referenced by make_duplis_faces(), and make_duplis_verts().
|
static |
Definition at line 1252 of file object_dupli.cc.
References BLI_assert, BMEditMesh::bm, BM_FACE_FIRST_LOOP, BM_face_uv_calc_center_median(), BM_FACES_OF_MESH, BM_ITER_MESH_INDEX, BM_VERT, FaceDupliData_EditMesh::cd_loop_uv_offset, BMVert::co, FaceDupliData_Params::ctx, BMesh::elem_index_dirty, FaceDupliData_EditMesh::em, face_dupli_from_editmesh(), float, FaceDupliData_EditMesh::has_orco, FaceDupliData_EditMesh::has_uvs, Object::instance_faces_scale, invert_m4_m4(), blender::Span< T >::is_empty(), BMFace::len, madd_v3_v3fl(), mul_m4_m4m4(), BMLoop::next, DupliContext::object, DupliObject::orco, FaceDupliData_EditMesh::params, Object::runtime, FaceDupliData_Params::use_scale, DupliObject::uv, BMLoop::v, FaceDupliData_EditMesh::vert_positions_deform, and w().
Referenced by make_duplis_faces().
|
static |
Definition at line 1209 of file object_dupli.cc.
References FaceDupliData_Mesh::corner_verts, FaceDupliData_Params::ctx, face_dupli_from_mesh(), FaceDupliData_Mesh::faces, float, Object::instance_faces_scale, invert_m4_m4(), madd_v2_v2fl(), madd_v3_v3fl(), FaceDupliData_Mesh::mloopuv, mul_m4_m4m4(), DupliContext::object, DupliObject::orco, FaceDupliData_Mesh::orco, FaceDupliData_Mesh::params, Object::runtime, FaceDupliData_Mesh::totface, FaceDupliData_Params::use_scale, DupliObject::uv, FaceDupliData_Mesh::vert_positions, and w().
Referenced by make_duplis_faces().
|
static |
Definition at line 666 of file object_dupli.cc.
References BMEditMesh::bm, BM_ITER_MESH_INDEX, BM_VERTS_OF_MESH, BMVert::co, copy_v3_v3(), VertexDupliData_Params::ctx, VertexDupliData_EditMesh::em, VertexDupliData_EditMesh::has_orco, invert_m4_m4(), blender::Span< T >::is_empty(), mul_m4_m4m4(), BMVert::no, DupliContext::object, DupliObject::orco, VertexDupliData_EditMesh::params, Object::runtime, VertexDupliData_Params::use_rotation, v, VertexDupliData_EditMesh::vert_normals_deform, VertexDupliData_EditMesh::vert_positions_deform, and vertex_dupli().
Referenced by make_duplis_verts().
|
static |
Definition at line 638 of file object_dupli.cc.
References copy_v3_v3(), VertexDupliData_Params::ctx, invert_m4_m4(), mul_m4_m4m4(), DupliContext::object, DupliObject::orco, VertexDupliData_Mesh::orco, VertexDupliData_Mesh::params, Object::runtime, VertexDupliData_Mesh::totvert, VertexDupliData_Params::use_rotation, VertexDupliData_Mesh::vert_normals, VertexDupliData_Mesh::vert_positions, and vertex_dupli().
Referenced by make_duplis_verts().
|
static |
Definition at line 310 of file object_dupli.cc.
References Object::data, and make_dupli().
|
static |
Generate a dupli instance.
| mat | is transform of the object relative to current context (including #Object.object_to_world). |
Definition at line 225 of file object_dupli.cc.
References ARRAY_SIZE, BLI_addtail(), BLI_hash_int(), BLI_hash_int_2d(), BLI_hash_string(), DupliContext::dupli_gen_type_stack, DupliContext::duplilist, DupliContext::gen, GS, Object::id, ID_MB, DupliContext::instance_data, DupliObject::instance_data, DupliContext::instance_idx, DupliObject::instance_idx, int, DupliContext::level, DupliObject::mat, MAX_DUPLI_RECUR, mul_m4_m4m4(), ID::name, DupliObject::no_draw, DupliObject::ob, DupliObject::ob_data, DupliContext::persistent_id, DupliObject::persistent_id, DupliContext::preview_base_geometry, DupliObject::preview_base_geometry, DupliContext::preview_instance_index, DupliObject::preview_instance_index, DupliObject::random_id, DupliContext::root_object, DupliContext::space_mat, and DupliObject::type.
Referenced by face_dupli(), make_dupli(), make_duplis_collection(), make_duplis_font(), make_duplis_geometry_set_impl(), make_duplis_particle_system(), and vertex_dupli().
|
static |
Definition at line 495 of file object_dupli.cc.
References DEG_get_mode(), DupliContext::depsgraph, FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN, FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_END, Object::instance_collection, make_dupli(), make_recursive_duplis(), mul_m4_m4m4(), DupliContext::object, sub_v3_v3(), and unit_m4().
|
static |
Definition at line 1291 of file object_dupli.cc.
References BMEditMesh::bm, CD_ORCO, CD_PROP_FLOAT2, Mesh::corner_data, CustomData_get_layer(), CustomData_get_layer_n(), CustomData_get_n_offset(), CustomData_get_render_layer(), Mesh::faces_num, float, blender::Span< T >::is_empty(), BMesh::ldata, make_child_duplis(), make_child_duplis_faces_from_editmesh(), make_child_duplis_faces_from_mesh(), mesh_data_from_duplicator_object(), OB_DUPLIFACES_SCALE, DupliContext::object, FaceDupliData_EditMesh::params, FaceDupliData_Mesh::params, Object::transflag, and Mesh::vert_data.
|
static |
Definition at line 782 of file object_dupli.cc.
References axis_angle_to_mat4_single(), BKE_vfont_to_curve_ex(), BLI_ghash_free(), BLI_ghash_int_new_ex(), DupliContext::collection, copy_m4_m4(), copy_v3_v3(), Object::data, DEG_get_evaluated_object(), DEG_is_evaluated_id(), DupliContext::depsgraph, Curve::family, find_family_object(), FO_DUPLI, Curve::fsize, G, Curve::id, make_dupli(), MEM_freeN(), mul_m4_m4m4(), mul_m4_v3(), DupliContext::object, CharTrans::rot, text_free(), UNLIKELY, CharTrans::xof, Curve::xof, CharTrans::yof, Curve::yof, and zero_v3().
|
static |
Definition at line 1034 of file object_dupli.cc.
References make_duplis_geometry_set_impl(), DupliContext::object, and Object::runtime.
|
static |
Definition at line 880 of file object_dupli.cc.
References blender::bke::InstanceReference::Collection, copy_dupli_context(), DEG_get_mode(), DupliContext::depsgraph, ELEM, FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN, FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_END, blender::bke::InstanceReference::GeometrySet, blender::bke::GeometrySet::get_component(), blender::bke::GeometrySet::get_grease_pencil(), blender::bke::GeometrySet::get_instances(), blender::bke::GeometrySet::get_mesh(), blender::bke::GeometrySet::get_pointcloud(), blender::bke::GeometrySet::get_volume(), Object::id, blender::Span< T >::index_range(), make_dupli(), make_duplis_geometry_set_impl(), make_recursive_duplis(), mul_m4_m4_pre(), mul_m4_m4m4(), blender::bke::InstanceReference::None, OB_CURVES, OB_CURVES_LEGACY, OB_FONT, OB_GREASE_PENCIL, OB_MESH, OB_POINTCLOUD, OB_VOLUME, blender::bke::InstanceReference::Object, DupliContext::object, DupliContext::preview_base_geometry, DupliContext::preview_instance_index, ptr, sub_v3_v3(), Object::type, and unit_m4().
Referenced by make_duplis_geometry_set(), make_duplis_geometry_set_impl(), and object_duplilist_preview().
|
static |
Definition at line 1347 of file object_dupli.cc.
References add_v3_v3v3(), b, BKE_collection_object_cache_get(), BLI_findptr(), BLI_listbase_is_empty(), BLI_rng_free(), BLI_rng_get_int(), BLI_rng_new_srandom(), ParticleSystem::child, ParticleSystem::childcache, ParticleCacheKey::co, copy_m4_m4(), copy_v3_v3(), DAG_EVAL_RENDER, DEG_get_ctime(), DEG_get_mode(), DupliContext::depsgraph, ParticleSimulationData::depsgraph, ParticleSettings::draw, ELEM, ParticleData::flag, ParticleSystem::flag, FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN, FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_END, invert_m4(), invert_m4_m4(), LISTBASE_FOREACH, make_dupli(), mat4_to_size(), MEM_callocN, MEM_freeN(), mul_m4_m4m4(), mul_mat3_m4_fl(), mul_v3_fl(), normalize_qt_qt(), ParticleData::num, ParticleSimulationData::ob, DupliContext::object, offsetof, DupliObject::orco, PARS_NO_DISP, PARS_UNEXIST, ParticleSystem::part, PART_DRAW_COUNT_GR, PART_DRAW_GLOBAL_OB, PART_DRAW_GR, PART_DRAW_NO_SCALE_OB, PART_DRAW_OB, PART_DRAW_PARENT, PART_DRAW_RAND_GR, PART_DRAW_REND, PART_DRAW_ROTATE_OB, PART_DRAW_WHOLE_GR, PART_HAIR, DupliObject::particle_system, ParticleSystem::particles, ParticleSystem::pathcache, ParticleSimulationData::psmd, ParticleSimulationData::psys, psys_check_enabled(), psys_find_group_weights(), psys_get_child_size(), psys_get_dupli_path_transform(), psys_get_dupli_texture(), psys_get_modifier(), psys_get_particle_state(), PSYS_HAIR_DONE, psys_sim_data_free(), psys_sim_data_init(), ptr, quat_to_mat4(), Object::runtime, DupliContext::scene, ParticleSimulationData::scene, scene, ParticleSystem::seed, ParticleCacheKey::segments, ParticleData::size, size_to_mat4(), state, sub_v3_v3(), ParticleSystem::totcached, ParticleSystem::totchild, ParticleSystem::totchildcache, ParticleSystem::totpart, Object::trackflag, Object::upflag, DupliObject::uv, vec_to_quat(), and zero_v3().
Referenced by make_duplis_particles().
|
static |
Definition at line 1677 of file object_dupli.cc.
References copy_dupli_context(), LISTBASE_FOREACH_INDEX, make_duplis_particle_system(), DupliContext::object, and Object::particlesystem.
|
static |
Definition at line 703 of file object_dupli.cc.
References CD_ORCO, CustomData_get_layer(), float, blender::Span< T >::is_empty(), make_child_duplis(), make_child_duplis_verts_from_editmesh(), make_child_duplis_verts_from_mesh(), mesh_data_from_duplicator_object(), OB_DUPLIROT, DupliContext::object, VertexDupliData_EditMesh::params, VertexDupliData_Mesh::params, Object::transflag, Mesh::vert_data, and Mesh::verts_num.
|
static |
Recursive dupli-objects.
| space_mat | is the local dupli-space (excluding dupli #Object.object_to_world). |
Definition at line 325 of file object_dupli.cc.
References copy_dupli_context(), DupliContext::dupli_gen_type_stack, DupliContext::gen, GEOMETRY_SET_DUPLI_GENERATOR_TYPE, Object::id, DupliContext::instance_stack, DupliContext::level, DupliGenerator::make_duplis, MAX_DUPLI_RECUR, ID::name, printf, and DupliGenerator::type.
Referenced by face_dupli(), make_duplis_collection(), make_duplis_geometry_set_impl(), and vertex_dupli().
|
static |
Definition at line 445 of file object_dupli.cc.
References BKE_editmesh_cache_ensure_vert_normals(), BKE_editmesh_from_object(), BKE_object_get_editmesh_eval_cage(), BKE_object_get_evaluated_mesh(), blender::Array< T, InlineBufferCapacity, Allocator >::is_empty(), ME_WRAPPER_TYPE_BMESH, Mesh::runtime, and blender::bke::EditMeshData::vert_positions.
Referenced by make_duplis_faces(), and make_duplis_verts().
Definition at line 1764 of file object_dupli.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), depsgraph, DupliContext::duplilist, DupliContext::gen, init_context(), and DupliGenerator::make_duplis.
Referenced by BKE_object_minmax_dupli(), BKE_scene_base_iter_next(), blender::ed::greasepencil::get_bake_targets(), iter_snap_objects(), and blender::ed::object::make_object_duplilist_real().
| ListBase * object_duplilist_preview | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| const ViewerPath * | viewer_path ) |
Definition at line 1780 of file object_dupli.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), DEG_get_original_object(), depsgraph, DupliContext::duplilist, eModifierType_Nodes, init_context(), LISTBASE_FOREACH, make_duplis_geometry_set_impl(), Object::modifiers, OB_CURVES, DupliContext::preview_base_geometry, NodesModifierData::runtime, and Object::type.
|
static |
Definition at line 607 of file object_dupli.cc.
References get_duplivert_transform(), make_dupli(), make_recursive_duplis(), mul_m4_m4m4(), mul_mat3_m4_v3(), Object::trackflag, and Object::upflag.
Referenced by make_child_duplis_verts_from_editmesh(), and make_child_duplis_verts_from_mesh().
|
static |
Definition at line 529 of file object_dupli.cc.
Referenced by get_dupli_generator().
|
static |
Definition at line 1336 of file object_dupli.cc.
Referenced by get_dupli_generator().
|
static |
Definition at line 1041 of file object_dupli.cc.
Referenced by get_dupli_generator().
|
static |
Definition at line 1690 of file object_dupli.cc.
Referenced by get_dupli_generator().
|
static |
Definition at line 742 of file object_dupli.cc.
Referenced by get_dupli_generator().
|
static |
Definition at line 870 of file object_dupli.cc.
Referenced by get_dupli_generator().
|
staticconstexpr |
Definition at line 81 of file object_dupli.cc.
Referenced by copy_dupli_context(), init_context(), make_child_duplis(), and make_recursive_duplis().