LodNumber
LodNumber
#Overview
name: LodNumber
The value of this variable can be defined or overridden in .ini config files. 1
.ini config file referencing this setting variable.
It is referenced in 21
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of LodNumber is to control the number of Levels of Detail (LODs) for static meshes imported from FBX files in Unreal Engine 5. Here’s a detailed explanation:
-
The LodNumber variable is part of the FBX import options in Unreal Engine’s FBX importer system. It is primarily used for static mesh imports.
-
This setting is utilized by the Unreal Engine subsystem responsible for importing and processing static meshes, which is part of the UnrealEd module.
-
The value of LodNumber is typically set through the FBX import UI or programmatically when importing FBX files. It can be found in the UFbxImportUI class, which is part of the import settings.
-
LodNumber interacts with other LOD-related variables, such as MinimumLodNumber and bAutoComputeLodDistances. These variables work together to determine how LODs are handled during import.
-
Developers should be aware that:
- Setting LodNumber to 0 imports all LODs found in the FBX file (up to the engine’s maximum).
- Setting it to a specific number will import that many LODs, potentially creating or removing LODs to match the specified number.
- This setting can override the LOD structure in the original FBX file.
-
Best practices when using this variable include:
- Use it in conjunction with bAutoComputeLodDistances for automatic LOD setup.
- Ensure the value doesn’t exceed MAX_STATIC_MESH_LODS (usually 8 in UE5).
- Consider the performance implications of importing too many or too few LODs.
- When reimporting, be cautious about changing this value as it might affect existing LOD setups.
-
The variable is clamped between 0 and MAX_STATIC_MESH_LODS to prevent invalid values.
-
It’s important to note that this setting primarily affects static meshes and may not have the same impact on skeletal meshes or other asset types.
By carefully setting LodNumber, developers can control the LOD structure of imported static meshes, balancing between visual quality and performance in their Unreal Engine projects.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:632, section: [/Script/UnrealEd.FbxImportUI]
- INI Section:
/Script/UnrealEd.FbxImportUI
- Raw value:
0
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Plugins/Interchange/Runtime/Source/Pipelines/Private/InterchangePipelineMeshesUtilities.cpp:68
Scope (from outer to inner):
file
namespace UE::Private::InterchangeMeshPipeline
function void FindNamedLodGroup
lambda-function
Source code excerpt:
if (LODXNumber.IsNumeric())
{
int32 LodNumber = FPlatformString::Atoi(*LODXNumber);
FString MatchName = ParentUniqueID;
TArray<FString>& LodChildUids = SceneMeshNodeUidsPerLodParentUidMap.FindOrAdd(MatchName);
//Add LOD at the correct index
if (LodNumber >= LodChildUids.Num())
{
int32 AddCount = LodNumber + 1 - LodChildUids.Num();
LodChildUids.AddDefaulted(AddCount);
}
LodChildUids[LodNumber] = SceneNode->GetUniqueID();
}
}
}
}
);
#Loc: <Workspace>/Engine/Plugins/Tests/EditorTests/Source/EditorTests/Private/UnrealEd/FbxAutomationTests.cpp:146
Scope (from outer to inner):
file
function void FFbxImportAssetsAutomationTest::GetTests
Source code excerpt:
{
FString FileEndSuffixe = FileTestName.RightChop(FileTestName.Find(TEXT("_lod"), ESearchCase::IgnoreCase, ESearchDir::FromEnd));
FString LodNumber = FileEndSuffixe.RightChop(4);
FString LodBaseSuffixe = FileEndSuffixe.LeftChop(2);
if (LodBaseSuffixe.Compare(TEXT("_lod"), ESearchCase::IgnoreCase) == 0)
{
if (LodNumber.Compare(TEXT("00")) != 0)
{
//Don't add lodmodel has test
continue;
}
}
}
#Loc: <Workspace>/Engine/Plugins/Tests/EditorTests/Source/EditorTests/Private/UnrealEd/FbxAutomationTests.cpp:817
Scope (from outer to inner):
file
function BEGIN_FUNCTION_BUILD_OPTIMIZATION bool F
Source code excerpt:
{
UObject *Object = ImportedObjects[0];
int32 LodNumber = 0;
if (Object->IsA(UStaticMesh::StaticClass()))
{
UStaticMesh *StaticMesh = Cast<UStaticMesh>(Object);
LodNumber = StaticMesh->GetNumLODs();
}
else if (Object->IsA(USkeletalMesh::StaticClass()))
{
USkeletalMesh *SkeletalMesh = Cast<USkeletalMesh>(Object);
LodNumber = SkeletalMesh->GetResourceForRendering()->LODRenderData.Num();
}
if (LodNumber != ExpectedResult.ExpectedPresetsDataInteger[0])
{
ExecutionInfo.AddError(FString::Printf(TEXT("%s [%d LODs but expected %d]"),
*GetFormatedMessageErrorInExpectedResult(*CleanFilename, *(TestPlan->TestPlanName), TEXT("Lod_Number"), ExpectedResultIndex), LodNumber, ExpectedResult.ExpectedPresetsDataInteger[0]));
}
}
}
break;
case Vertex_Number_Lod:
#Loc: <Workspace>/Engine/Plugins/Tests/FbxAutomationTestBuilder/Source/FbxAutomationTestBuilder/Private/FbxAutomationBuilder.cpp:277
Scope (from outer to inner):
file
namespace FbxAutomationBuilder
function TSharedRef<SWidget> SFbxAutomationBuilder::OnGetFbxMenuContent
Source code excerpt:
{
FString FileEndSuffixe = FileBaseName.RightChop(FileBaseName.Find(TEXT("_lod"), ESearchCase::IgnoreCase, ESearchDir::FromEnd));
FString LodNumber = FileEndSuffixe.RightChop(4);
FString LodBaseSuffixe = FileEndSuffixe.LeftChop(2);
if (LodBaseSuffixe.Compare(TEXT("_lod"), ESearchCase::IgnoreCase) == 0)
{
if (LodNumber.Compare(TEXT("00")) != 0)
{
//Don't add lodmodel has test
continue;
}
}
}
#Loc: <Workspace>/Engine/Source/Editor/DetailCustomizations/Private/FbxImportUIDetails.cpp:339
Scope (from outer to inner):
file
function void FFbxImportUIDetails::CustomizeDetails
Source code excerpt:
MinimumLodNumberProp->SetOnPropertyValueChanged(FSimpleDelegate::CreateSP(this, &FFbxImportUIDetails::ValidateLodSettingsChanged, MinimumLodNumberID));
//Validate static mesh input
TSharedRef<IPropertyHandle> LodNumberProp = DetailBuilder.GetProperty(GET_MEMBER_NAME_CHECKED(UFbxImportUI, LodNumber));
LodNumberProp->SetOnPropertyValueChanged(FSimpleDelegate::CreateSP(this, &FFbxImportUIDetails::ValidateLodSettingsChanged, LodNumberID));
CollectChildPropertiesRecursive(StaticMeshDataProp, ExtraProperties);
}
break;
case FBXIT_SkeletalMesh:
#Loc: <Workspace>/Engine/Source/Editor/DetailCustomizations/Private/FbxImportUIDetails.cpp:371
Scope (from outer to inner):
file
function void FFbxImportUIDetails::CustomizeDetails
Source code excerpt:
else
{
int32 ShowMaxLodIndex = (ImportUI->bAutoComputeLodDistances ? 0 : ImportUI->LodNumber > 0 ? ImportUI->LodNumber : MAX_STATIC_MESH_LODS) - 1;
for (int32 LodIndex = 0; LodIndex < MAX_STATIC_MESH_LODS; ++LodIndex)
{
if (LodIndex <= ShowMaxLodIndex)
{
continue;
}
#Loc: <Workspace>/Engine/Source/Editor/DetailCustomizations/Private/FbxImportUIDetails.cpp:1173
Scope (from outer to inner):
file
function void FFbxImportUIDetails::ValidateLodSettingsChanged
Source code excerpt:
ImportUI->MinimumLodNumber = FMath::Clamp<int32>(ImportUI->MinimumLodNumber, 0, MAX_STATIC_MESH_LODS -1);
}
if (ImportUI->LodNumber < 0 || ImportUI->LodNumber >= MAX_STATIC_MESH_LODS)
{
ImportUI->LodNumber = FMath::Clamp<int32>(ImportUI->LodNumber, 0, MAX_STATIC_MESH_LODS);
}
if (ImportUI->LodNumber > 0 && ImportUI->MinimumLodNumber >= ImportUI->LodNumber)
{
ImportUI->MinimumLodNumber = FMath::Clamp<int32>(ImportUI->MinimumLodNumber, 0, ImportUI->LodNumber - 1);
}
if (!ImportUI->bAutoComputeLodDistances && MemberID == LodNumberID)
{
RefreshCustomDetail();
}
#Loc: <Workspace>/Engine/Source/Editor/Persona/Private/AnimationEditorViewportClient.cpp:981
Scope (from outer to inner):
file
function FText FAnimationViewportClient::GetDisplayInfo
Source code excerpt:
const TIndirectArray<FSkeletalMeshLODModel>& LODModels = PreviewMeshComponent->GetSkeletalMeshAsset()->GetImportedModel()->LODModels;
const TArray<FSkeletalMaterial>& SkeletalMeshMaterials = PreviewMeshComponent->GetSkeletalMeshAsset()->GetMaterials();
int32 LodNumber = LODModels.Num();
TArray<UMaterialInterface*> MaterialUsingMorphTarget;
for (UMorphTarget *MorphTarget : PreviewMeshComponent->GetSkeletalMeshAsset()->GetMorphTargets())
{
if (MorphTarget == nullptr)
{
continue;
#Loc: <Workspace>/Engine/Source/Editor/Persona/Private/AnimationEditorViewportClient.cpp:993
Scope (from outer to inner):
file
function FText FAnimationViewportClient::GetDisplayInfo
Source code excerpt:
for (int32 SectionIndex : MorphTargetLODModel.SectionIndices)
{
for (int32 LodIdx = 0; LodIdx < LodNumber; LodIdx++)
{
const TArray<int32>& LODMaterialMap = PreviewMeshComponent->GetSkeletalMeshAsset()->GetLODInfo(LodIdx)->LODMaterialMap;
const FSkeletalMeshLODModel& LODModel = LODModels[LodIdx];
if (LODModel.Sections.IsValidIndex(SectionIndex))
{
int32 SectionMaterialIndex = LODModel.Sections[SectionIndex].MaterialIndex;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Classes/Factories/FbxImportUI.h:171
Scope (from outer to inner):
file
class class UFbxImportUI : public UObject, public IImportSettingsParser
Source code excerpt:
/** Set the number of LODs for the editor to import. Setting the value to 0 imports the number of LODs found in the file (up to the maximum). */
UPROPERTY(EditAnywhere, BlueprintReadWrite, config, AdvancedDisplay, Category = LODSettings, meta = (ImportType = "StaticMesh", UIMin = "0", DisplayName = "Number of LODs"))
int32 LodNumber;
/** True to import animations from the FBX File */
UPROPERTY(EditAnywhere, BlueprintReadWrite, config, Category=Animation, meta=(ImportType="SkeletalMesh|Animation|RigOnly"))
uint32 bImportAnimations:1;
/** Override for the name of the animation to import. By default, it will be the name of FBX **/
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Factories/EditorFactories.cpp:6207
Scope (from outer to inner):
file
function EReimportResult::Type UReimportFbxStaticMeshFactory::Reimport
Source code excerpt:
//We set the LODDistance only when the value is false.
ImportOptions->bAutoComputeLodDistances = true;
ImportOptions->LodNumber = 0;
ImportOptions->MinimumLodNumber = 0;
//Make sure the LODGroup do not change when re-importing a mesh
ImportOptions->StaticMeshLODGroup = Mesh->LODGroup;
if( !bOperationCanceled && ensure(ImportData) )
{
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxMainImport.cpp:368
Scope (from outer to inner):
file
namespace UnFbx
function void ApplyImportUIToImportOptions
Source code excerpt:
InOutImportOptions.LodDistances.Add(ImportUI->LodDistance6);
InOutImportOptions.LodDistances.Add(ImportUI->LodDistance7);
InOutImportOptions.LodNumber = ImportUI->LodNumber;
InOutImportOptions.MinimumLodNumber = ImportUI->MinimumLodNumber;
}
InOutImportOptions.bBuildNanite = ImportUI->StaticMeshImportData->bBuildNanite;
//Animation and skeletal mesh options
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxMainImport.cpp:1671
Scope (from outer to inner):
file
namespace UnFbx
function bool FFbxImporter::ImportFromFile
Source code excerpt:
* @EventParam MorphThresholdPosition float Returns the morph target threshold delta to compute deltas
* @EventParam AutoComputeLodDistances boolean Returns whether the importer should set the auto compute LOD distance
* @EventParam LodNumber integer Returns the LOD number we should have after the import
* @EventParam BuildReversedIndexBuffer boolean Returns whether the importer should fill the reverse index buffer when building the static mesh
* @EventParam GenerateLightmapUVs boolean Returns whether the importer should generate light map UVs
* @EventParam ImportStaticMeshLODs boolean Returns whether the importer should import the LODs
* @EventParam RemoveDegenerates boolean Returns whether the importer should remove the degenerated triangles when building the static mesh
* @EventParam MinimumLodNumber integer Returns the minimum LOD use by the rendering
* @EventParam StaticMeshLODGroup string Returns the LOD Group settings we use to build this imported static mesh
* @EventParam VertexColorImportOption string Returns how the importer should import the vertex color
* @EventParam VertexOverrideColor string Returns the color use if we need to override the vertex color
* @EventParam AnimationLengthImportType string Returns how we choose the animation time span
* @EventParam DeleteExistingMorphTargetCurves boolean Returns whether the importer should delete the existing morph target curves
* @EventParam AnimationRange string Returns the range of animation the importer should sample if the time span is custom
* @EventParam DoNotImportCurveWithZero boolean Returns whether the importer should import curves containing only zero value
* @EventParam ImportBoneTracks boolean Returns whether the importer should import the bone tracks
* @EventParam ImportCustomAttribute boolean Returns whether the importer should import the custom attribute curves
* @EventParam PreserveLocalTransform boolean Returns whether the importer should preserve the local transform when importing the animation
* @EventParam RemoveRedundantKeys boolean Returns whether the importer should remove all redundant key in an animation
* @EventParam Resample boolean Returns whether the importer should re-sample the animation
* @EventParam SetMaterialDriveParameterOnCustomAttribute boolean Returns whether the importer should hook all custom attribute curve to unreal material attribute
* @EventParam SetMaterialDriveParameterOnCustomAttribute boolean Returns whether the importer should hook some custom attribute (having the suffix) curve to unreal material attribute
* @EventParam ResampleRate float Returns the rate the exporter is suppose to re-sample any imported animations
*
* @Owner Alexis.Matte
*/
FbxDocumentInfo* DocInfo = Scene->GetSceneInfo();
if (DocInfo)
{
if( FEngineAnalytics::IsAvailable() )
{
const static UEnum* FBXImportTypeEnum = StaticEnum<EFBXImportType>();
const static UEnum* FBXAnimationLengthImportTypeEnum = StaticEnum<EFBXAnimationLengthImportType>();
const static UEnum* MaterialSearchLocationEnum = StaticEnum<EMaterialSearchLocation>();
const static UEnum* FBXNormalGenerationMethodEnum = StaticEnum<EFBXNormalGenerationMethod::Type>();
const static UEnum* FBXNormalImportMethodEnum = StaticEnum<EFBXNormalImportMethod>();
const static UEnum* VertexColorImportOptionEnum = StaticEnum<EVertexColorImportOption::Type>();
TArray<FAnalyticsEventAttribute> Attribs;
FString LastSavedVendor(UTF8_TO_TCHAR(DocInfo->LastSaved_ApplicationVendor.Get().Buffer()));
FString LastSavedAppName(UTF8_TO_TCHAR(DocInfo->LastSaved_ApplicationName.Get().Buffer()));
FString LastSavedAppVersion(UTF8_TO_TCHAR(DocInfo->LastSaved_ApplicationVersion.Get().Buffer()));
Attribs.Add(FAnalyticsEventAttribute(TEXT("LastSaved Application Vendor"), LastSavedVendor));
Attribs.Add(FAnalyticsEventAttribute(TEXT("LastSaved Application Name"), LastSavedAppName));
Attribs.Add(FAnalyticsEventAttribute(TEXT("LastSaved Application Version"), LastSavedAppVersion));
Attribs.Add(FAnalyticsEventAttribute(TEXT("FBX Version"), FbxFileVersion));
//////////////////////////////////////////////////////////////////////////
//FBX import options
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ImportType"), FBXImportTypeEnum->GetNameStringByValue(ImportOptions->ImportType)));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ConvertScene"), ImportOptions->bConvertScene));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ConvertSceneUnit"), ImportOptions->bConvertSceneUnit));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ForceFrontXAxis"), ImportOptions->bForceFrontXAxis));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ImportMaterials"), ImportOptions->bImportMaterials));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ImportTextures"), ImportOptions->bImportTextures));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt InvertNormalMap"), ImportOptions->bInvertNormalMap));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt RemoveNameSpace"), ImportOptions->bRemoveNameSpace));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt UsedAsFullName"), ImportOptions->bUsedAsFullName));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ImportTranslation"), ImportOptions->ImportTranslation.ToString()));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ImportRotation"), ImportOptions->ImportRotation.ToString()));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ImportUniformScale"), ImportOptions->ImportUniformScale));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt MaterialBasePath"), ImportOptions->MaterialBasePath));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt MaterialSearchLocation"), MaterialSearchLocationEnum->GetNameStringByValue((uint64)(ImportOptions->MaterialSearchLocation))));
Attribs.Add(FAnalyticsEventAttribute(TEXT("GenOpt ReorderMaterialToFbxOrder"), ImportOptions->bReorderMaterialToFbxOrder));
//We cant capture a this member, so just assign the pointer here
FBXImportOptions* CaptureImportOptions = ImportOptions;
auto AddMeshAnalytic = [&Attribs, &CaptureImportOptions]()
{
Attribs.Add(FAnalyticsEventAttribute(TEXT("MeshOpt AutoGenerateCollision"), CaptureImportOptions->bAutoGenerateCollision));
Attribs.Add(FAnalyticsEventAttribute(TEXT("MeshOpt CombineToSingle"), CaptureImportOptions->bCombineToSingle));
Attribs.Add(FAnalyticsEventAttribute(TEXT("MeshOpt BakePivotInVertex"), CaptureImportOptions->bBakePivotInVertex));
Attribs.Add(FAnalyticsEventAttribute(TEXT("MeshOpt TransformVertexToAbsolute"), CaptureImportOptions->bTransformVertexToAbsolute));
Attribs.Add(FAnalyticsEventAttribute(TEXT("MeshOpt ImportRigidMesh"), CaptureImportOptions->bImportRigidMesh));
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxMainImport.cpp:1773
Scope (from outer to inner):
file
lambda-function
Source code excerpt:
{
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt AutoComputeLodDistances"), CaptureImportOptions->bAutoComputeLodDistances));
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt LodNumber"), CaptureImportOptions->LodNumber));
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt BuildReversedIndexBuffer"), CaptureImportOptions->bBuildReversedIndexBuffer));
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt GenerateLightmapUVs"), CaptureImportOptions->bGenerateLightmapUVs));
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt ImportStaticMeshLODs"), CaptureImportOptions->bImportStaticMeshLODs));
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt RemoveDegenerates"), CaptureImportOptions->bRemoveDegenerates));
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt MinimumLodNumber"), CaptureImportOptions->MinimumLodNumber));
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt StaticMeshLODGroup"), CaptureImportOptions->StaticMeshLODGroup));
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxMainImport.cpp:2316
Scope (from outer to inner):
file
namespace UnFbx
function void FFbxImporter::ConvertLodPrefixToLodGroup
Source code excerpt:
{
NodeMap.FindOrAdd(SceneNode->GetUniqueID()) = SceneNode;
int32 LodNumber = FPlatformString::Atoi(*FString(&SceneNodeName[3]));
FString MatchName = SceneNodeName.RightChop(5);
if (SceneNode->GetParent())
{
uint64 ParentUniqueID = SceneNode->GetParent()->GetUniqueID();
FString ParentID = FString::FromInt((int32)ParentUniqueID);
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxMainImport.cpp:2331
Scope (from outer to inner):
file
namespace UnFbx
function void FFbxImporter::ConvertLodPrefixToLodGroup
Source code excerpt:
TArray<uint64>& LodPrefixNodeValues = LodPrefixNodeMap.FindOrAdd(MatchName);
//Add LOD in the correct order
if (LodNumber >= LodPrefixNodeValues.Num())
{
int32 AddCount = LodNumber + 1 - LodPrefixNodeValues.Num();
for (int32 AddIndex = 0; AddIndex < AddCount; ++AddIndex)
{
LodPrefixNodeValues.Add(MAX_uint64);
}
}
LodPrefixNodeValues[LodNumber] = SceneNode->GetUniqueID();
}
}
}
}
for (const auto& Kvp : LodPrefixNodeMap)
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxStaticMeshImport.cpp:2324
Scope (from outer to inner):
file
function void UnFbx::FFbxImporter::PostImportStaticMesh
Source code excerpt:
bool bOriginalGenerateMeshDistanceField = StaticMesh->bGenerateMeshDistanceField;
//Prebuild the static mesh when we use LodGroup and we want to modify the LodNumber
if (!ImportOptions->bImportScene)
{
//Set the minimum LOD
if (ImportOptions->MinimumLodNumber > 0)
{
StaticMesh->SetMinLODIdx(ImportOptions->MinimumLodNumber);
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxStaticMeshImport.cpp:2334
Scope (from outer to inner):
file
function void UnFbx::FFbxImporter::PostImportStaticMesh
Source code excerpt:
//User specify a number of LOD.
if (ImportOptions->LodNumber > 0)
{
//In case we plan to change the LodNumber we will build the static mesh 2 time
//We have to disable the distance field calculation so it get calculated only during the second build
bool bSpecifiedLodGroup = ImportOptions->StaticMeshLODGroup != NAME_None;
if (bSpecifiedLodGroup)
{
//Avoid building the distance field when we prebuild
if (OriginalCVarDistanceFieldValue != 0 && CVarDistanceFieldInterface)
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxStaticMeshImport.cpp:2363
Scope (from outer to inner):
file
function void UnFbx::FFbxImporter::PostImportStaticMesh
Source code excerpt:
//Set the Number of LODs, this has to be done after we build the specified LOD Group
int32 LODCount = ImportOptions->LodNumber;
if (LODCount < 0)
{
LODCount = 0;
}
if (LODCount > MAX_STATIC_MESH_LODS)
{
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/ReimportFbxSceneFactory.cpp:243
Scope (from outer to inner):
file
function bool GetFbxSceneReImportOptions
Source code excerpt:
//Make sure we do not mess with AutoComputeLodDistances when re-importing
GlobalImportSettings->bAutoComputeLodDistances = true;
GlobalImportSettings->LodNumber = 0;
GlobalImportSettings->MinimumLodNumber = 0;
GlobalImportSettings->ImportTranslation = FVector(0);
GlobalImportSettings->ImportRotation = FRotator(0);
GlobalImportSettings->ImportUniformScale = 1.0f;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Public/FbxImporter.h:160
Scope (from outer to inner):
file
namespace UnFbx
Source code excerpt:
TArray<float> LodDistances;
int32 MinimumLodNumber;
int32 LodNumber;
// Material import options
class UMaterialInterface *BaseMaterial;
FString BaseColorName;
FString BaseDiffuseTextureName;
FString BaseEmissiveColorName;
FString BaseNormalTextureName;