|
19 | 19 | #include "Materials/MaterialExpressionConstant.h" |
20 | 20 | #include "Factories/FbxImportUI.h" |
21 | 21 | #include "Factories/FbxStaticMeshImportData.h" |
| 22 | +#include "Factories/FbxSkeletalMeshImportData.h" |
| 23 | +#include "Factories/FbxAnimSequenceImportData.h" |
22 | 24 |
|
23 | 25 | #define LOCTEXT_NAMESPACE "FBlender_ImporterModule" |
24 | 26 |
|
@@ -56,11 +58,65 @@ UFbxImportUI* FImport_Processer::Process_Options() { |
56 | 58 |
|
57 | 59 | FBX_Options->bImportTextures = false; |
58 | 60 |
|
| 61 | + FBX_Options->bImportMesh = json->GetBoolField(TEXT("ImportMesh")); |
59 | 62 | FBX_Options->bImportMaterials = json->GetBoolField(TEXT("ImportMaterials")); |
60 | 63 | FBX_Options->bImportAnimations = json->GetBoolField(TEXT("ImportAnimations")); |
61 | 64 | FBX_Options->bCreatePhysicsAsset = json->GetBoolField(TEXT("CreatePhysicsAsset")); |
| 65 | + FBX_Options->bAutoComputeLodDistances = json->GetBoolField(TEXT("AutoComputeLodDistances")); |
62 | 66 |
|
63 | | - FBX_Options->StaticMeshImportData->NormalImportMethod = EFBXNormalImportMethod::FBXNIM_ImportNormalsAndTangents; |
| 67 | + // Static Mesh |
| 68 | + |
| 69 | + TSharedPtr<FJsonObject> json_static_mesh = json->GetObjectField(TEXT("static_mesh")); |
| 70 | + |
| 71 | + FBX_Options->StaticMeshImportData->bImportMeshLODs = json_static_mesh->GetBoolField(TEXT("ImportMeshLODs")); |
| 72 | + FBX_Options->StaticMeshImportData->bCombineMeshes = json_static_mesh->GetBoolField(TEXT("CombineMeshes")); |
| 73 | + FBX_Options->StaticMeshImportData->bAutoGenerateCollision = json_static_mesh->GetBoolField(TEXT("AutoGenerateCollision")); |
| 74 | + |
| 75 | + const FString options_static_mesh_normal_import_method = json_static_mesh->GetStringField(TEXT("NormalImportMethod")); |
| 76 | + if (options_static_mesh_normal_import_method == "ImportNormalsAndTangents") { |
| 77 | + FBX_Options->StaticMeshImportData->NormalImportMethod = EFBXNormalImportMethod::FBXNIM_ImportNormalsAndTangents; |
| 78 | + } else if (options_static_mesh_normal_import_method == "ComputeNormals") { |
| 79 | + FBX_Options->StaticMeshImportData->NormalImportMethod = EFBXNormalImportMethod::FBXNIM_ComputeNormals; |
| 80 | + } else if (options_static_mesh_normal_import_method == "ImportNormals") { |
| 81 | + FBX_Options->StaticMeshImportData->NormalImportMethod = EFBXNormalImportMethod::FBXNIM_ImportNormals; |
| 82 | + } |
| 83 | + |
| 84 | + // Skeletal Mesh |
| 85 | + |
| 86 | + TSharedPtr<FJsonObject> json_skeletal_mesh = json->GetObjectField(TEXT("skeletal_mesh")); |
| 87 | + |
| 88 | + FBX_Options->SkeletalMeshImportData->bImportMeshLODs = json_skeletal_mesh->GetBoolField(TEXT("ImportMeshLODs")); |
| 89 | + FBX_Options->SkeletalMeshImportData->bUseT0AsRefPose = json_skeletal_mesh->GetBoolField(TEXT("UseT0AsRefPose")); |
| 90 | + FBX_Options->SkeletalMeshImportData->bPreserveSmoothingGroups = json_skeletal_mesh->GetBoolField(TEXT("PreserveSmoothingGroups")); |
| 91 | + FBX_Options->SkeletalMeshImportData->bImportMorphTargets = json_skeletal_mesh->GetBoolField(TEXT("ImportMorphTargets")); |
| 92 | + |
| 93 | + const FString options_skeletal_mesh_normal_import_method = json_skeletal_mesh->GetStringField(TEXT("NormalImportMethod")); |
| 94 | + if (options_skeletal_mesh_normal_import_method == "ImportNormalsAndTangents") { |
| 95 | + FBX_Options->SkeletalMeshImportData->NormalImportMethod = EFBXNormalImportMethod::FBXNIM_ImportNormalsAndTangents; |
| 96 | + } else if (options_skeletal_mesh_normal_import_method == "ComputeNormals") { |
| 97 | + FBX_Options->SkeletalMeshImportData->NormalImportMethod = EFBXNormalImportMethod::FBXNIM_ComputeNormals; |
| 98 | + } else if (options_skeletal_mesh_normal_import_method == "ImportNormals") { |
| 99 | + FBX_Options->SkeletalMeshImportData->NormalImportMethod = EFBXNormalImportMethod::FBXNIM_ImportNormals; |
| 100 | + } |
| 101 | + |
| 102 | + // Animation |
| 103 | + |
| 104 | + TSharedPtr<FJsonObject> json_animation = json->GetObjectField(TEXT("animation")); |
| 105 | + |
| 106 | + FBX_Options->AnimSequenceImportData->bImportMeshesInBoneHierarchy = json_animation->GetBoolField(TEXT("ImportMeshesInBoneHierarchy")); |
| 107 | + FBX_Options->AnimSequenceImportData->bUseDefaultSampleRate = json_animation->GetBoolField(TEXT("UseDefaultSampleRate")); |
| 108 | + FBX_Options->AnimSequenceImportData->CustomSampleRate = json_animation->GetNumberField(TEXT("CustomSampleRate")); |
| 109 | + FBX_Options->AnimSequenceImportData->bConvertScene = json_animation->GetBoolField(TEXT("ConvertScene")); |
| 110 | + |
| 111 | + const FString options_animation_time = json_animation->GetStringField(TEXT("animation_time")); |
| 112 | + if (options_animation_time == "AnimatedKey") { |
| 113 | + FBX_Options->AnimSequenceImportData->AnimationLength = EFBXAnimationLengthImportType::FBXALIT_AnimatedKey; |
| 114 | + } else if (options_animation_time == "ExportedTime") { |
| 115 | + FBX_Options->AnimSequenceImportData->AnimationLength = EFBXAnimationLengthImportType::FBXALIT_ExportedTime; |
| 116 | + } else if (options_animation_time == "SetRange") { |
| 117 | + FBX_Options->AnimSequenceImportData->AnimationLength = EFBXAnimationLengthImportType::FBXALIT_SetRange; |
| 118 | + FBX_Options->AnimSequenceImportData->FrameImportRange = FInt32Interval(json_animation->GetNumberField(TEXT("frame_range_min")), json_animation->GetNumberField(TEXT("frame_range_max"))); |
| 119 | + } |
64 | 120 |
|
65 | 121 | return FBX_Options; |
66 | 122 |
|
|
0 commit comments