|
Blender V4.5
|
#include <SkinInfo.h>
Public Member Functions | |
| SkinInfo () | |
| SkinInfo (const SkinInfo &skin) | |
| SkinInfo (UnitConverter *conv) | |
| template<typename T> | |
| void | transfer_array_data (T &src, T &dest) |
| void | transfer_int_array_data_const (const COLLADAFW::IntValuesArray &src, COLLADAFW::IntValuesArray &dest) |
| void | transfer_uint_array_data_const (const COLLADAFW::UIntValuesArray &src, COLLADAFW::UIntValuesArray &dest) |
| void | borrow_skin_controller_data (const COLLADAFW::SkinControllerData *skin) |
| void | free () |
| void | add_joint (const COLLADABU::Math::Matrix4 &matrix) |
| void | set_controller (const COLLADAFW::SkinController *co) |
| Object * | create_armature (Main *bmain, Scene *scene, ViewLayer *view_layer) |
| Object * | set_armature (Object *ob_arm) |
| bool | get_joint_inv_bind_matrix (float inv_bind_mat[4][4], COLLADAFW::Node *node) |
| Object * | BKE_armature_from_object () |
| const COLLADAFW::UniqueId & | get_controller_uid () |
| bool | uses_joint_or_descendant (COLLADAFW::Node *node) |
| void | link_armature (bContext *C, Object *ob, std::map< COLLADAFW::UniqueId, COLLADAFW::Node * > &joint_by_uid, TransformReader *tm) |
| bPoseChannel * | get_pose_channel_from_node (COLLADAFW::Node *node) |
| void | set_parent (Object *_parent) |
| Object * | get_parent () |
| void | find_root_joints (const std::vector< COLLADAFW::Node * > &root_joints, std::map< COLLADAFW::UniqueId, COLLADAFW::Node * > &joint_by_uid, std::vector< COLLADAFW::Node * > &result) |
| bool | find_node_in_tree (COLLADAFW::Node *node, COLLADAFW::Node *tree_root) |
This is used to store data passed in write_controller_data. Arrays from #COLLADAFW::SkinControllerData lose ownership, so do this class members so that arrays don't get freed until we free them explicitly.
Definition at line 31 of file SkinInfo.h.
|
default |
References C, result, SkinInfo(), and T.
Referenced by SkinInfo(), and SkinInfo().
| SkinInfo::SkinInfo | ( | const SkinInfo & | skin | ) |
Definition at line 39 of file SkinInfo.cpp.
References copy_m4_m4(), SkinInfo(), transfer_int_array_data_const(), and transfer_uint_array_data_const().
| SkinInfo::SkinInfo | ( | UnitConverter * | conv | ) |
Definition at line 54 of file SkinInfo.cpp.
References nullptr.
| void SkinInfo::add_joint | ( | const COLLADABU::Math::Matrix4 & | matrix | ) |
Using inverse bind matrices to construct armature it is safe to invert them to get the original matrices because if they are inverse matrices, they can be inverted.
Definition at line 101 of file SkinInfo.cpp.
References UnitConverter::dae_matrix_to_mat4_().
Referenced by ArmatureImporter::write_skin_controller_data().
| Object * SkinInfo::BKE_armature_from_object | ( | ) |
Definition at line 156 of file SkinInfo.cpp.
Referenced by ArmatureImporter::get_armature_for_joint(), and ArmatureImporter::make_armatures().
| void SkinInfo::borrow_skin_controller_data | ( | const COLLADAFW::SkinControllerData * | skin | ) |
Definition at line 77 of file SkinInfo.cpp.
References bc_get_float_value(), UnitConverter::dae_matrix_to_mat4_(), i, and transfer_array_data().
Referenced by ArmatureImporter::write_skin_controller_data().
Called from write_controller.
Definition at line 126 of file SkinInfo.cpp.
References bc_add_object(), and OB_ARMATURE.
| bool SkinInfo::find_node_in_tree | ( | COLLADAFW::Node * | node, |
| COLLADAFW::Node * | tree_root ) |
Definition at line 309 of file SkinInfo.cpp.
References find_node_in_tree(), and i.
Referenced by find_node_in_tree(), and find_root_joints().
| void SkinInfo::find_root_joints | ( | const std::vector< COLLADAFW::Node * > & | root_joints, |
| std::map< COLLADAFW::UniqueId, COLLADAFW::Node * > & | joint_by_uid, | ||
| std::vector< COLLADAFW::Node * > & | result ) |
Definition at line 283 of file SkinInfo.cpp.
References find_node_in_tree(), and result.
| void SkinInfo::free | ( | ) |
Definition at line 93 of file SkinInfo.cpp.
Referenced by ArmatureImporter::make_armatures().
| const COLLADAFW::UniqueId & SkinInfo::get_controller_uid | ( | ) |
Definition at line 161 of file SkinInfo.cpp.
Referenced by ArmatureImporter::make_armatures().
| bool SkinInfo::get_joint_inv_bind_matrix | ( | float | inv_bind_mat[4][4], |
| COLLADAFW::Node * | node ) |
Definition at line 142 of file SkinInfo.cpp.
References copy_m4_m4().
Referenced by ArmatureImporter::get_joint_bind_mat().
| Object * SkinInfo::get_parent | ( | ) |
Definition at line 278 of file SkinInfo.cpp.
Referenced by ArmatureImporter::make_armatures().
| bPoseChannel * SkinInfo::get_pose_channel_from_node | ( | COLLADAFW::Node * | node | ) |
Definition at line 268 of file SkinInfo.cpp.
References bc_get_joint_name(), and BKE_pose_channel_find_name().
| void SkinInfo::link_armature | ( | bContext * | C, |
| Object * | ob, | ||
| std::map< COLLADAFW::UniqueId, COLLADAFW::Node * > & | joint_by_uid, | ||
| TransformReader * | tm ) |
Definition at line 186 of file SkinInfo.cpp.
References ARM_DEF_VGROUP, bc_get_joint_name(), bc_set_parent(), BKE_object_apply_mat4(), BKE_object_calc_parent(), BKE_object_defgroup_add_name(), BKE_object_defgroup_list(), BKE_object_is_child_recursive(), BLI_findlink(), C, copy_m4_m4(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_main(), CTX_data_scene(), ArmatureModifierData::deformflag, DEG_id_tag_update(), depsgraph, eModifierType_Armature, ID_RECALC_GEOMETRY, ID_RECALC_TRANSFORM, invert_m4_m4(), blender::ed::object::modifier_add(), ArmatureModifierData::object, Object::parent, Object::parentinv, PAROBJECT, Object::partype, ptr, Object::runtime, blender::ed::object::vgroup_vert_add(), and WEIGHT_REPLACE.
Referenced by ArmatureImporter::make_armatures().
Definition at line 132 of file SkinInfo.cpp.
| void SkinInfo::set_controller | ( | const COLLADAFW::SkinController * | co | ) |
Definition at line 108 of file SkinInfo.cpp.
References i.
| void SkinInfo::set_parent | ( | Object * | _parent | ) |
Definition at line 273 of file SkinInfo.cpp.
Nobody owns the data after this, so it should be freed manually with releaseMemory.
Definition at line 56 of file SkinInfo.cpp.
References T.
Referenced by borrow_skin_controller_data().
| void SkinInfo::transfer_int_array_data_const | ( | const COLLADAFW::IntValuesArray & | src, |
| COLLADAFW::IntValuesArray & | dest ) |
When src is const we cannot src.yieldOwnerShip, this is used by copy constructor.
Definition at line 63 of file SkinInfo.cpp.
Referenced by SkinInfo().
| void SkinInfo::transfer_uint_array_data_const | ( | const COLLADAFW::UIntValuesArray & | src, |
| COLLADAFW::UIntValuesArray & | dest ) |
Definition at line 70 of file SkinInfo.cpp.
Referenced by SkinInfo().
| bool SkinInfo::uses_joint_or_descendant | ( | COLLADAFW::Node * | node | ) |
Check if this skin controller references a joint or any descendant of it
some nodes may not be referenced by SkinController, in this case to determine if the node belongs to this armature, we need to search down the tree.
Definition at line 166 of file SkinInfo.cpp.
References i, and uses_joint_or_descendant().
Referenced by ArmatureImporter::get_armature_for_joint(), and uses_joint_or_descendant().