|
@@ -78,7 +78,7 @@ namespace Assimp {
|
|
|
|
|
|
#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000L
|
|
#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000L
|
|
|
|
|
|
- FBXConverter::FBXConverter(aiScene* out, const Document& doc, bool removeEmptyBones, FbxUnit unit )
|
|
|
|
|
|
+ FBXConverter::FBXConverter(aiScene* out, const Document& doc, bool removeEmptyBones )
|
|
: defaultMaterialIndex()
|
|
: defaultMaterialIndex()
|
|
, lights()
|
|
, lights()
|
|
, cameras()
|
|
, cameras()
|
|
@@ -90,8 +90,7 @@ namespace Assimp {
|
|
, mNodeNames()
|
|
, mNodeNames()
|
|
, anim_fps()
|
|
, anim_fps()
|
|
, out(out)
|
|
, out(out)
|
|
- , doc(doc)
|
|
|
|
- , mCurrentUnit(FbxUnit::cm) {
|
|
|
|
|
|
+ , doc(doc) {
|
|
// animations need to be converted first since this will
|
|
// animations need to be converted first since this will
|
|
// populate the node_anim_chain_bits map, which is needed
|
|
// populate the node_anim_chain_bits map, which is needed
|
|
// to determine which nodes need to be generated.
|
|
// to determine which nodes need to be generated.
|
|
@@ -119,7 +118,6 @@ namespace Assimp {
|
|
|
|
|
|
ConvertGlobalSettings();
|
|
ConvertGlobalSettings();
|
|
TransferDataToScene();
|
|
TransferDataToScene();
|
|
- ConvertToUnitScale(unit);
|
|
|
|
|
|
|
|
// if we didn't read any meshes set the AI_SCENE_FLAGS_INCOMPLETE
|
|
// if we didn't read any meshes set the AI_SCENE_FLAGS_INCOMPLETE
|
|
// to make sure the scene passes assimp's validation. FBX files
|
|
// to make sure the scene passes assimp's validation. FBX files
|
|
@@ -3537,46 +3535,6 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial* out_mat, const PropertyTa
|
|
out->mMetaData->Set(14, "CustomFrameRate", doc.GlobalSettings().CustomFrameRate());
|
|
out->mMetaData->Set(14, "CustomFrameRate", doc.GlobalSettings().CustomFrameRate());
|
|
}
|
|
}
|
|
|
|
|
|
- void FBXConverter::ConvertToUnitScale( FbxUnit unit ) {
|
|
|
|
- if (mCurrentUnit == unit) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- ai_real scale = 1.0;
|
|
|
|
- if (mCurrentUnit == FbxUnit::cm) {
|
|
|
|
- if (unit == FbxUnit::m) {
|
|
|
|
- scale = (ai_real)0.01;
|
|
|
|
- } else if (unit == FbxUnit::km) {
|
|
|
|
- scale = (ai_real)0.00001;
|
|
|
|
- }
|
|
|
|
- } else if (mCurrentUnit == FbxUnit::m) {
|
|
|
|
- if (unit == FbxUnit::cm) {
|
|
|
|
- scale = (ai_real)100.0;
|
|
|
|
- } else if (unit == FbxUnit::km) {
|
|
|
|
- scale = (ai_real)0.001;
|
|
|
|
- }
|
|
|
|
- } else if (mCurrentUnit == FbxUnit::km) {
|
|
|
|
- if (unit == FbxUnit::cm) {
|
|
|
|
- scale = (ai_real)100000.0;
|
|
|
|
- } else if (unit == FbxUnit::m) {
|
|
|
|
- scale = (ai_real)1000.0;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- for (auto mesh : meshes) {
|
|
|
|
- if (nullptr == mesh) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (mesh->HasPositions()) {
|
|
|
|
- for (unsigned int i = 0; i < mesh->mNumVertices; ++i) {
|
|
|
|
- aiVector3D &pos = mesh->mVertices[i];
|
|
|
|
- pos *= scale;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
void FBXConverter::TransferDataToScene()
|
|
void FBXConverter::TransferDataToScene()
|
|
{
|
|
{
|
|
ai_assert(!out->mMeshes);
|
|
ai_assert(!out->mMeshes);
|
|
@@ -3630,9 +3588,9 @@ void FBXConverter::SetShadingPropertiesRaw(aiMaterial* out_mat, const PropertyTa
|
|
}
|
|
}
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
// ------------------------------------------------------------------------------------------------
|
|
- void ConvertToAssimpScene(aiScene* out, const Document& doc, bool removeEmptyBones, FbxUnit unit)
|
|
|
|
|
|
+ void ConvertToAssimpScene(aiScene* out, const Document& doc, bool removeEmptyBones)
|
|
{
|
|
{
|
|
- FBXConverter converter(out, doc, removeEmptyBones, unit);
|
|
|
|
|
|
+ FBXConverter converter(out, doc, removeEmptyBones);
|
|
}
|
|
}
|
|
|
|
|
|
} // !FBX
|
|
} // !FBX
|