diff options
author | Gaia Clary <gaia.clary@machinimatrix.org> | 2019-05-23 13:17:17 +0300 |
---|---|---|
committer | Gaia Clary <gaia.clary@machinimatrix.org> | 2019-05-23 13:29:20 +0300 |
commit | 6be9d19951ed460829d379aa90953b14a9f281f2 (patch) | |
tree | 45fe275c232ff0b4fb0e4e7205d53c8fdd6f8e9a /source/blender/collada/collada_utils.h | |
parent | e9cf9e0a397f9589e00d980f0c0489641e7ed57e (diff) |
Collada exporter update
Added new feature: Collada: global axis rotation upon export (UI)
The new feature allows to specify the target rest coordinate system upon export.
This allows for example to export a character that is in Blender orientation (Y forward)
to match the Secondlife orientation where (-X forward)
- Refactor:Added new utility methods to collada_utils
Made BCMatrix class more powerfull
moved Blender related structures into new BlenderContext class
added class wrapper to encapsulate ExportSettings structure
Added blender context getters to ExportSettings
added access methods to BlenderContext into ExportSettings class
Moved class BCMatrix into BlenderContext
moved utility functions from collada_util into BlenderContext
replace own function for parenting by a call to ED_object_parent_set()
- Cleanup: removed obsolete parameters from methods
renamed parameters for better understanding
cleanup whitespace and indentation
removed obsolete comments
Diffstat (limited to 'source/blender/collada/collada_utils.h')
-rw-r--r-- | source/blender/collada/collada_utils.h | 69 |
1 files changed, 54 insertions, 15 deletions
diff --git a/source/blender/collada/collada_utils.h b/source/blender/collada/collada_utils.h index 522aeb1ad1e..810b9056193 100644 --- a/source/blender/collada/collada_utils.h +++ b/source/blender/collada/collada_utils.h @@ -133,10 +133,9 @@ std::string bc_get_action_id(std::string action_name, extern float bc_get_float_value(const COLLADAFW::FloatOrDoubleArray &array, unsigned int index); extern int bc_test_parent_loop(Object *par, Object *ob); -extern void bc_get_children(std::vector<Object *> &child_set, Object *ob, ViewLayer *view_layer); extern bool bc_validateConstraints(bConstraint *con); -extern int bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space = true); +bool bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space = true); extern Object *bc_add_object( Main *bmain, Scene *scene, ViewLayer *view_layer, int type, const char *name); extern Mesh *bc_get_mesh_copy(BlenderContext &blender_context, @@ -146,15 +145,8 @@ extern Mesh *bc_get_mesh_copy(BlenderContext &blender_context, bool triangulate); extern Object *bc_get_assigned_armature(Object *ob); -extern Object *bc_get_highest_selected_ancestor_or_self(LinkNode *export_set, Object *ob); -extern bool bc_is_base_node(LinkNode *export_set, Object *ob); -extern bool bc_is_in_Export_set(LinkNode *export_set, Object *ob, ViewLayer *view_layer); extern bool bc_has_object_type(LinkNode *export_set, short obtype); -extern int bc_is_marked(Object *ob); -extern void bc_remove_mark(Object *ob); -extern void bc_set_mark(Object *ob); - extern char *bc_CustomData_get_layer_name(const CustomData *data, int type, int n); extern char *bc_CustomData_get_active_layer_name(const CustomData *data, int type); @@ -238,11 +230,58 @@ extern bool bc_is_animated(BCMatrixSampleMap &values); extern bool bc_has_animations(Scene *sce, LinkNode *node); extern bool bc_has_animations(Object *ob); -extern void bc_create_restpose_mat(const ExportSettings *export_settings, - Bone *bone, - float to_mat[4][4], - float world[4][4], - bool use_local_space); +extern void bc_add_global_transform(Matrix &to_mat, + const Matrix &from_mat, + const BCMatrix &global_transform, + const bool invert = false); +extern void bc_add_global_transform(Vector &to_vec, + const Vector &from_vec, + const BCMatrix &global_transform, + const bool invert = false); +extern void bc_add_global_transform(Vector &to_vec, + const BCMatrix &global_transform, + const bool invert = false); +extern void bc_add_global_transform(Matrix &to_mat, + const BCMatrix &global_transform, + const bool invert = false); +extern void bc_apply_global_transform(Matrix &to_mat, + const BCMatrix &global_transform, + const bool invert = false); +extern void bc_apply_global_transform(Vector &to_vec, + const BCMatrix &global_transform, + const bool invert = false); +extern void bc_create_restpose_mat(BCExportSettings &export_settings, + Bone *bone, + float to_mat[4][4], + float from_mat[4][4], + bool use_local_space); + +class ColladaBaseNodes { + private: + std::vector<Object *> base_objects; + + public: + void add(Object *ob) + { + base_objects.push_back(ob); + } + + bool contains(Object *ob) + { + std::vector<Object *>::iterator it = std::find(base_objects.begin(), base_objects.end(), ob); + return (it != base_objects.end()); + } + + int size() + { + return base_objects.size(); + } + + Object *get(int index) + { + return base_objects[index]; + } +}; class BCPolygonNormalsIndices { std::vector<unsigned int> normal_indices; @@ -293,7 +332,7 @@ class BoneExtended { bool has_roll(); float get_roll(); - void set_tail(float *vec); + void set_tail(float vec[]); float *get_tail(); bool has_tail(); |