diff --git a/code/AssetLib/FBX/FBXConverter.cpp b/code/AssetLib/FBX/FBXConverter.cpp index d742af447..257845384 100644 --- a/code/AssetLib/FBX/FBXConverter.cpp +++ b/code/AssetLib/FBX/FBXConverter.cpp @@ -152,7 +152,7 @@ void FBXConverter::ConvertRootNode() { mSceneOut->mRootNode->mName.Set(unique_name); // root has ID 0 - ConvertNodes(0L, mSceneOut->mRootNode, mSceneOut->mRootNode, aiMatrix4x4()); + ConvertNodes(0L, mSceneOut->mRootNode, mSceneOut->mRootNode); } static std::string getAncestorBaseName(const aiNode *node) { @@ -196,7 +196,7 @@ struct FBXConverter::PotentialNode { /// todo: get bone from stack /// todo: make map of aiBone* to aiNode* /// then update convert clusters to the new format -void FBXConverter::ConvertNodes(uint64_t id, aiNode *parent, aiNode *root_node, const aiMatrix4x4 &globalTransform) { +void FBXConverter::ConvertNodes(uint64_t id, aiNode *parent, aiNode *root_node) { const std::vector &conns = doc.GetConnectionsByDestinationSequenced(id, "Model"); std::vector nodes; @@ -290,15 +290,14 @@ void FBXConverter::ConvertNodes(uint64_t id, aiNode *parent, aiNode *root_node, } // recursion call - child nodes - aiMatrix4x4 newGlobalMatrix = globalTransform * nodes_chain.front().mNode->mTransformation; - ConvertNodes(model->ID(), last_parent, root_node, newGlobalMatrix); + ConvertNodes(model->ID(), last_parent, root_node); if (doc.Settings().readLights) { ConvertLights(*model, node_name); } if (doc.Settings().readCameras) { - ConvertCameras(*model, node_name, newGlobalMatrix); + ConvertCameras(*model, node_name); } nodes.push_back(std::move(nodes_chain.front())); @@ -328,14 +327,12 @@ void FBXConverter::ConvertLights(const Model &model, const std::string &orig_nam } } -void FBXConverter::ConvertCameras(const Model &model, - const std::string &orig_name, - const aiMatrix4x4 &transform) { +void FBXConverter::ConvertCameras(const Model &model, const std::string &orig_name) { const std::vector &node_attrs = model.GetAttributes(); for (const NodeAttribute *attr : node_attrs) { const Camera *const cam = dynamic_cast(attr); if (cam) { - ConvertCamera(*cam, orig_name, transform); + ConvertCamera(*cam, orig_name); } } } @@ -416,9 +413,7 @@ void FBXConverter::ConvertLight(const Light &light, const std::string &orig_name } } -void FBXConverter::ConvertCamera(const Camera &cam, - const std::string &orig_name, - aiMatrix4x4 transform) { +void FBXConverter::ConvertCamera(const Camera &cam, const std::string &orig_name) { cameras.push_back(new aiCamera()); aiCamera *const out_camera = cameras.back(); @@ -426,16 +421,9 @@ void FBXConverter::ConvertCamera(const Camera &cam, out_camera->mAspect = cam.AspectWidth() / cam.AspectHeight(); - aiVector3D pos = cam.Position(); - out_camera->mLookAt = cam.InterestPosition(); - out_camera->mUp = pos + cam.UpVector(); - transform.Inverse(); - pos *= transform; - out_camera->mLookAt *= transform; - out_camera->mUp *= transform; - out_camera->mLookAt -= pos; - out_camera->mUp -= pos; out_camera->mPosition = aiVector3D(0.0f); + out_camera->mLookAt = aiVector3D(1.0f, 0.0f, 0.0f); + out_camera->mUp = aiVector3D(0.0f, 1.0f, 0.0f); out_camera->mHorizontalFOV = AI_DEG_TO_RAD(cam.FieldOfView()); diff --git a/code/AssetLib/FBX/FBXConverter.h b/code/AssetLib/FBX/FBXConverter.h index b9b6c46b0..41acb6ffe 100644 --- a/code/AssetLib/FBX/FBXConverter.h +++ b/code/AssetLib/FBX/FBXConverter.h @@ -134,22 +134,19 @@ private: // ------------------------------------------------------------------------------------------------ // collect and assign child nodes - void ConvertNodes(uint64_t id, aiNode *parent, aiNode *root_node, - const aiMatrix4x4 &globalTransform); + void ConvertNodes(uint64_t id, aiNode *parent, aiNode *root_node); // ------------------------------------------------------------------------------------------------ void ConvertLights(const Model& model, const std::string &orig_name ); // ------------------------------------------------------------------------------------------------ - void ConvertCameras(const Model& model, const std::string &orig_name, - const aiMatrix4x4 &transform); + void ConvertCameras(const Model& model, const std::string &orig_name ); // ------------------------------------------------------------------------------------------------ void ConvertLight( const Light& light, const std::string &orig_name ); // ------------------------------------------------------------------------------------------------ - void ConvertCamera(const Camera& cam, const std::string &orig_name, - aiMatrix4x4 transform); + void ConvertCamera( const Camera& cam, const std::string &orig_name ); // ------------------------------------------------------------------------------------------------ void GetUniqueName( const std::string &name, std::string& uniqueName );