53 float leaf_bone_length;
59 struct ArmatureJoints {
61 std::vector<COLLADAFW::Node *> root_joints;
63 std::vector<ArmatureJoints> armature_joints;
68 std::map<COLLADAFW::UniqueId, COLLADAFW::UniqueId> geom_uid_by_controller_uid;
69 std::map<COLLADAFW::UniqueId, COLLADAFW::Node *> joint_by_uid;
70 std::vector<COLLADAFW::Node *> root_joints;
71 std::vector<COLLADAFW::Node *> finished_joints;
72 std::vector<COLLADAFW::MorphController *> morph_controllers;
73 std::map<COLLADAFW::UniqueId, Object *> joint_parent_map;
74 std::map<COLLADAFW::UniqueId, Object *> unskinned_armature_map;
82 std::map<COLLADAFW::UniqueId, SkinInfo>
85 JointData *get_joint_data(COLLADAFW::Node *node);
89 COLLADAFW::Node *node,
92 float parent_mat[4][4],
94 std::vector<std::string> &layer_labels);
97 COLLADAFW::Node *node,
99 std::vector<std::string> &layer_labels,
108 void fix_leaf_bone_hierarchy(
bArmature *armature,
Bone *bone,
bool fix_orientation);
111 void connect_bone_chains(
bArmature *armature,
Bone *bone,
int max_chain_length);
113 void set_pose(
Object *ob_arm,
114 COLLADAFW::Node *root_node,
115 const char *parentname,
116 float parent_mat[4][4]);
118 void set_bone_transformation_type(
const COLLADAFW::Node *node,
Object *ob_arm);
119 bool node_is_decomposed(
const COLLADAFW::Node *node);
121 void set_leaf_bone_shapes(
Object *ob_arm);
122 void set_euler_rotmode();
125 Object *get_empty_for_leaves();
128 Object *find_armature(COLLADAFW::Node *node);
130 ArmatureJoints &get_armature_joints(
Object *ob_arm);
134 void create_armature_bones(
Main *bmain, std::vector<Object *> &arm_objs);
137 typedef std::map<std::string, ExtraTags *> TagsMap;
138 TagsMap uid_tags_map;
163 void link_armature(
Object *ob_arm,
164 const COLLADAFW::UniqueId &geom_id,
165 const COLLADAFW::UniqueId &controller_data_id);
172 COLLADAFW::UniqueId *
get_geometry_uid(
const COLLADAFW::UniqueId &controller_uid);