bBuildReversedIndexBuffer
bBuildReversedIndexBuffer
#Overview
name: bBuildReversedIndexBuffer
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 41
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of bBuildReversedIndexBuffer is to control whether a reversed index buffer should be built for static meshes. This setting is part of the mesh build settings in Unreal Engine 5’s rendering system.
Key points about bBuildReversedIndexBuffer:
-
It is primarily used in the static mesh rendering pipeline and affects how meshes are processed during build time.
-
The variable is referenced in various subsystems and modules related to mesh processing, including:
- StaticMeshEditor
- MeshBuilder
- FbxImporter
- DataprepEditor
- InterchangeEditor
-
The value is typically set in the mesh build settings, either programmatically or through the editor UI. It can be modified in the Static Mesh Editor or when importing meshes (e.g., FBX import options).
-
It interacts with other mesh building settings like bRemoveDegenerates, bGenerateLightmapUVs, and bRecomputeNormals.
-
Developers should be aware that enabling this option will increase memory usage, as it creates an additional index buffer for the mesh.
-
Best practices:
- Enable this option if you need to render the mesh with reversed winding order (e.g., for two-sided materials or specific rendering techniques).
- Consider the performance and memory implications, especially for complex meshes or projects with many static meshes.
- Be consistent with its usage across related meshes to ensure correct rendering behavior.
In summary, bBuildReversedIndexBuffer is an important setting for controlling the generation of reversed index buffers in static meshes, which can be crucial for certain rendering scenarios but comes with memory and performance considerations.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:659, section: [/Script/UnrealEd.FbxStaticMeshImportData]
- INI Section:
/Script/UnrealEd.FbxStaticMeshImportData
- Raw value:
True
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Plugins/Enterprise/DataprepEditor/Source/DataprepCore/Private/DataprepCorePrivateUtils.cpp:130
Scope (from outer to inner):
file
function void DataprepCorePrivateUtils::BuildStaticMeshes
Source code excerpt:
SourceModel.BuildSettings.bRecomputeTangents = false;
SourceModel.BuildSettings.DistanceFieldResolutionScale = 0;
//SourceModel.BuildSettings.bBuildReversedIndexBuffer = false;
}
// As soon as StaticMeshes are built, the mesh description can be released
// This generate a significant freeing of memory
StaticMesh->ClearMeshDescription(Index);
}
#Loc: <Workspace>/Engine/Plugins/Enterprise/DataprepEditor/Source/DataprepEditor/Private/Widgets/SDataprepEditorViewport.cpp:1754
Scope (from outer to inner):
file
namespace DataprepEditor3DPreviewUtils
function void BuildStaticMeshes
Source code excerpt:
SourceModel.BuildSettings.bRecomputeNormals = false;
SourceModel.BuildSettings.bRecomputeTangents = false;
SourceModel.BuildSettings.bBuildReversedIndexBuffer = false;
}
StaticMeshesSettings.Add(MoveTemp(BuildSettings));
}
// Disable warnings from LogStaticMesh. Not useful
#Loc: <Workspace>/Engine/Plugins/Enterprise/DataprepEditor/Source/DataprepLibraries/Private/DataprepOperationsLibraryUtil.cpp:164
Scope (from outer to inner):
file
namespace DataprepOperationsLibraryUtil
function TArray< FMeshBuildSettings > FScopedStaticMeshEdit::PreventStaticMeshBuild
Source code excerpt:
SourceModel.BuildSettings.bRecomputeNormals = false;
SourceModel.BuildSettings.bRecomputeTangents = false;
SourceModel.BuildSettings.bBuildReversedIndexBuffer = false;
SourceModel.BuildSettings.bComputeWeightedNormals = false;
}
return BuildSettingsBackup;
}
#Loc: <Workspace>/Engine/Plugins/Enterprise/DataprepEditor/Source/DataprepLibraries/Private/DataprepOperationsLibraryUtil.cpp:191
Scope (from outer to inner):
file
namespace DataprepOperationsLibraryUtil
function void FScopedStaticMeshEdit::RestoreStaticMeshBuild
Source code excerpt:
BuildSettings.bRecomputeNormals = CachedBuildSettings.bRecomputeNormals;
BuildSettings.bRecomputeTangents = CachedBuildSettings.bRecomputeTangents;
BuildSettings.bBuildReversedIndexBuffer = CachedBuildSettings.bBuildReversedIndexBuffer;
BuildSettings.bComputeWeightedNormals = CachedBuildSettings.bComputeWeightedNormals;
}
}
}
/** Customized version of UStaticMesh::SetMaterial avoiding the triggering of UStaticMesh::Build and its side-effects */
#Loc: <Workspace>/Engine/Plugins/Enterprise/DataprepEditor/Source/DataprepLibraries/Private/DataprepOperationsLibraryUtil.cpp:297
Scope (from outer to inner):
file
namespace DataprepOperationsLibraryUtil
function TArray<UStaticMesh*> BuildStaticMeshes
Source code excerpt:
SourceModel.BuildSettings.bRecomputeNormals = !(Attributes.GetVertexInstanceNormals().IsValid() && Attributes.GetVertexInstanceNormals().GetNumChannels() > 0);
SourceModel.BuildSettings.bRecomputeTangents = false;
//SourceModel.BuildSettings.bBuildReversedIndexBuffer = false;
}
}
StaticMeshesSettings.Add(MoveTemp(BuildSettings));
}
#Loc: <Workspace>/Engine/Plugins/Enterprise/LidarPointCloud/Source/LidarPointCloudEditor/Private/LidarPointCloudEditorHelper.cpp:264
Scope (from outer to inner):
file
namespace anonymous
function void AssignMeshDescriptionToMesh
Source code excerpt:
SourceModelLOD0.BuildSettings.bRecomputeNormals = false;
SourceModelLOD0.BuildSettings.bRecomputeTangents = false;
SourceModelLOD0.BuildSettings.bBuildReversedIndexBuffer = false;
SourceModelLOD0.BuildSettings.bGenerateLightmapUVs = false;
TArray<FStaticMaterial> StaticMaterials;
static UMaterialInterface* Material = Cast<UMaterialInterface>(FSoftObjectPath(TEXT("/LidarPointCloud/Materials/M_MeshedCloud.M_MeshedCloud")).TryLoad());
StaticMaterials.Emplace(Material);
StaticMesh->SetStaticMaterials(StaticMaterials);
#Loc: <Workspace>/Engine/Plugins/Importers/USDImporter/Source/USDSchemas/Private/USDGeomMeshTranslator.cpp:739
Scope (from outer to inner):
file
namespace UsdGeomMeshTranslatorImpl
function UStaticMesh* CreateStaticMesh
Source code excerpt:
SourceModel.BuildSettings.bRecomputeNormals = false;
SourceModel.BuildSettings.bRecomputeTangents = false;
SourceModel.BuildSettings.bBuildReversedIndexBuffer = GBuildReversedIndexBuffer;
SourceModel.BuildSettings.bUseFullPrecisionUVs = GUseFullPrecisionUVs;
SourceModel.BuildSettings.bUseHighPrecisionTangentBasis = GUseHighPrecisionTangentBasis;
SourceModel.BuildSettings.bRemoveDegenerates = true; // Note: This may get rid of the entire mesh if it is all invalid
FMeshDescription* StaticMeshDescription = StaticMesh->CreateMeshDescription(LODIndex);
check(StaticMeshDescription);
#Loc: <Workspace>/Engine/Plugins/Interchange/Editor/Source/InterchangeEditor/Private/InterchangeFbxAssetImportDataConverter.cpp:150
Scope (from outer to inner):
file
namespace UE::Interchange::Private
function void FillInterchangeGenericAssetsPipelineFromFbxStaticMeshImportData
Source code excerpt:
GenericAssetPipeline->MeshPipeline->bImportCollision = StaticMeshImportData->bAutoGenerateCollision;
GenericAssetPipeline->MeshPipeline->bBuildNanite = StaticMeshImportData->bBuildNanite;
GenericAssetPipeline->MeshPipeline->bBuildReversedIndexBuffer = StaticMeshImportData->bBuildReversedIndexBuffer;
GenericAssetPipeline->MeshPipeline->bCombineStaticMeshes = StaticMeshImportData->bCombineMeshes;
GenericAssetPipeline->MeshPipeline->bGenerateLightmapUVs = StaticMeshImportData->bGenerateLightmapUVs;
GenericAssetPipeline->MeshPipeline->bOneConvexHullPerUCX = StaticMeshImportData->bOneConvexHullPerUCX;
GenericAssetPipeline->CommonMeshesProperties->bRemoveDegenerates = StaticMeshImportData->bRemoveDegenerates;
GenericAssetPipeline->MeshPipeline->DistanceFieldResolutionScale = StaticMeshImportData->DistanceFieldResolutionScale;
GenericAssetPipeline->MeshPipeline->LodGroup = StaticMeshImportData->StaticMeshLODGroup;
#Loc: <Workspace>/Engine/Plugins/Interchange/Editor/Source/InterchangeEditor/Private/InterchangeFbxAssetImportDataConverter.cpp:315
Scope (from outer to inner):
file
namespace UE::Interchange::Private
function UAssetImportData* ConvertToLegacyFbx
Source code excerpt:
DestinationStaticMeshImportData->bAutoGenerateCollision = GenericAssetPipeline->MeshPipeline->bImportCollision;
DestinationStaticMeshImportData->bBuildNanite = GenericAssetPipeline->MeshPipeline->bBuildNanite;
DestinationStaticMeshImportData->bBuildReversedIndexBuffer = GenericAssetPipeline->MeshPipeline->bBuildReversedIndexBuffer;
DestinationStaticMeshImportData->bCombineMeshes = GenericAssetPipeline->MeshPipeline->bCombineStaticMeshes;
DestinationStaticMeshImportData->bGenerateLightmapUVs = GenericAssetPipeline->MeshPipeline->bGenerateLightmapUVs;
DestinationStaticMeshImportData->bOneConvexHullPerUCX = GenericAssetPipeline->MeshPipeline->bOneConvexHullPerUCX;
DestinationStaticMeshImportData->bRemoveDegenerates = GenericAssetPipeline->CommonMeshesProperties->bRemoveDegenerates;
DestinationStaticMeshImportData->DistanceFieldResolutionScale = GenericAssetPipeline->MeshPipeline->DistanceFieldResolutionScale;
DestinationStaticMeshImportData->StaticMeshLODGroup = GenericAssetPipeline->MeshPipeline->LodGroup;
#Loc: <Workspace>/Engine/Plugins/Interchange/Runtime/Source/FactoryNodes/Private/InterchangeStaticMeshFactoryNode.cpp:216
Scope (from outer to inner):
file
function bool UInterchangeStaticMeshFactoryNode::FillCustomBuildReversedIndexBufferFromAsset
Source code excerpt:
bool UInterchangeStaticMeshFactoryNode::FillCustomBuildReversedIndexBufferFromAsset(UObject* Asset)
{
IMPLEMENT_STATICMESH_BUILD_ASSET_TO_VALUE(BuildReversedIndexBuffer, bBuildReversedIndexBuffer);
}
bool UInterchangeStaticMeshFactoryNode::GetCustomGenerateLightmapUVs(bool& AttributeValue) const
{
IMPLEMENT_NODE_ATTRIBUTE_GETTER(GenerateLightmapUVs, bool)
}
#Loc: <Workspace>/Engine/Plugins/Interchange/Runtime/Source/Pipelines/Private/InterchangeGenericStaticMeshPipeline.cpp:462
Scope (from outer to inner):
file
function UInterchangeStaticMeshFactoryNode* UInterchangeGenericMeshPipeline::CreateStaticMeshFactoryNode
Source code excerpt:
StaticMeshFactoryNode->SetCustomRemoveDegenerates(CommonMeshesProperties->bRemoveDegenerates);
//Static meshes build options
StaticMeshFactoryNode->SetCustomBuildReversedIndexBuffer(bBuildReversedIndexBuffer);
StaticMeshFactoryNode->SetCustomGenerateLightmapUVs(bGenerateLightmapUVs);
StaticMeshFactoryNode->SetCustomGenerateDistanceFieldAsIfTwoSided(bGenerateDistanceFieldAsIfTwoSided);
StaticMeshFactoryNode->SetCustomSupportFaceRemap(bSupportFaceRemap);
StaticMeshFactoryNode->SetCustomMinLightmapResolution(MinLightmapResolution);
StaticMeshFactoryNode->SetCustomSrcLightmapIndex(SrcLightmapIndex);
StaticMeshFactoryNode->SetCustomDstLightmapIndex(DstLightmapIndex);
#Loc: <Workspace>/Engine/Plugins/Interchange/Runtime/Source/Pipelines/Public/InterchangeGenericMeshPipeline.h:83
Scope (from outer to inner):
file
class class UInterchangeGenericMeshPipeline : public UInterchangePipelineBase
Source code excerpt:
/** If enabled, builds a reversed index buffer for each static mesh. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Static Meshes", meta = (SubCategory = "Build"))
bool bBuildReversedIndexBuffer = true;
/** If enabled, generates lightmap UVs for each static mesh. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Static Meshes", meta = (SubCategory = "Build"))
bool bGenerateLightmapUVs = true;
/**
#Loc: <Workspace>/Engine/Plugins/Tests/EditorTests/Source/EditorTests/Private/UnrealEd/FbxAutomationTests.cpp:383
Scope (from outer to inner):
file
function BEGIN_FUNCTION_BUILD_OPTIMIZATION bool F
Source code excerpt:
ImportData->VertexOverrideColor = TestPlan->ImportUI->StaticMeshImportData->VertexOverrideColor;
ImportData->bRemoveDegenerates = TestPlan->ImportUI->StaticMeshImportData->bRemoveDegenerates;
ImportData->bBuildReversedIndexBuffer = TestPlan->ImportUI->StaticMeshImportData->bBuildReversedIndexBuffer;
ImportData->bGenerateLightmapUVs = TestPlan->ImportUI->StaticMeshImportData->bGenerateLightmapUVs;
ImportData->bOneConvexHullPerUCX = TestPlan->ImportUI->StaticMeshImportData->bOneConvexHullPerUCX;
ImportData->bAutoGenerateCollision = TestPlan->ImportUI->StaticMeshImportData->bAutoGenerateCollision;
//Copy UFbxMeshImportData
ImportData->bTransformVertexToAbsolute = TestPlan->ImportUI->StaticMeshImportData->bTransformVertexToAbsolute;
ImportData->bBakePivotInVertex = TestPlan->ImportUI->StaticMeshImportData->bBakePivotInVertex;
#Loc: <Workspace>/Engine/Plugins/Tests/EditorTests/Source/EditorTests/Private/UnrealEd/FbxAutomationTests.cpp:491
Scope (from outer to inner):
file
function BEGIN_FUNCTION_BUILD_OPTIMIZATION bool F
Source code excerpt:
ImportData->VertexOverrideColor = TestPlan->ImportUI->StaticMeshImportData->VertexOverrideColor;
ImportData->bRemoveDegenerates = TestPlan->ImportUI->StaticMeshImportData->bRemoveDegenerates;
ImportData->bBuildReversedIndexBuffer = TestPlan->ImportUI->StaticMeshImportData->bBuildReversedIndexBuffer;
ImportData->bGenerateLightmapUVs = TestPlan->ImportUI->StaticMeshImportData->bGenerateLightmapUVs;
ImportData->bOneConvexHullPerUCX = TestPlan->ImportUI->StaticMeshImportData->bOneConvexHullPerUCX;
ImportData->bAutoGenerateCollision = TestPlan->ImportUI->StaticMeshImportData->bAutoGenerateCollision;
//Copy UFbxMeshImportData
ImportData->bTransformVertexToAbsolute = TestPlan->ImportUI->StaticMeshImportData->bTransformVertexToAbsolute;
ImportData->bBakePivotInVertex = TestPlan->ImportUI->StaticMeshImportData->bBakePivotInVertex;
#Loc: <Workspace>/Engine/Source/Developer/HierarchicalLODUtilities/Private/HierarchicalLODUtilities.cpp:313
Scope (from outer to inner):
file
function static UStaticMesh* CreateImposterStaticMesh
Source code excerpt:
SrcModel.BuildSettings.bUseFullPrecisionUVs = false;
SrcModel.BuildSettings.bGenerateLightmapUVs = InProxySettings.bGenerateLightmapUVs;
SrcModel.BuildSettings.bBuildReversedIndexBuffer = false;
if (!InProxySettings.bAllowDistanceField)
{
SrcModel.BuildSettings.DistanceFieldResolutionScale = 0.0f;
}
ImposterStaticMesh->CreateMeshDescription(0, SourceMeshDesc);
#Loc: <Workspace>/Engine/Source/Developer/MeshBuilder/Private/StaticMeshBuilder.cpp:1209
Scope (from outer to inner):
file
function void BuildAllBufferOptimizations
Source code excerpt:
// Build the reversed index buffer.
if (LODBuildSettings.bBuildReversedIndexBuffer)
{
TArray<uint32> InversedIndices;
const int32 IndexCount = IndexBuffer.Num();
InversedIndices.AddUninitialized(IndexCount);
for (int32 SectionIndex = 0; SectionIndex < StaticMeshLOD.Sections.Num(); ++SectionIndex)
#Loc: <Workspace>/Engine/Source/Developer/MeshBuilder/Private/StaticMeshBuilder.cpp:1247
Scope (from outer to inner):
file
function void BuildAllBufferOptimizations
Source code excerpt:
// Build the inversed depth only index buffer.
if (LODBuildSettings.bBuildReversedIndexBuffer)
{
TArray<uint32> ReversedDepthOnlyIndices;
const int32 IndexCount = DepthOnlyIndices.Num();
ReversedDepthOnlyIndices.AddUninitialized(IndexCount);
for (int32 i = 0; i < IndexCount; ++i)
{
#Loc: <Workspace>/Engine/Source/Developer/MeshMergeUtilities/Private/ProxyGenerationProcessor.cpp:217
Scope (from outer to inner):
file
function void FProxyGenerationProcessor::ProcessJob
Source code excerpt:
SrcModel.BuildSettings.bUseFullPrecisionUVs = false;
SrcModel.BuildSettings.bGenerateLightmapUVs = Data->MergeData->InProxySettings.bGenerateLightmapUVs;
SrcModel.BuildSettings.bBuildReversedIndexBuffer = false;
if (!Data->MergeData->InProxySettings.bAllowDistanceField)
{
SrcModel.BuildSettings.DistanceFieldResolutionScale = 0.0f;
}
const bool bContainsImposters = Data->MergeData->ImposterComponents.Num() > 0;
#Loc: <Workspace>/Engine/Source/Developer/MeshUtilities/Private/MeshUtilities.cpp:2888
Scope (from outer to inner):
file
class class FStaticMeshUtilityBuilder
function bool GenerateRenderingMeshes
Source code excerpt:
// Build the reversed index buffer.
if (LODModel.AdditionalIndexBuffers && StaticMesh->GetSourceModel(0).BuildSettings.bBuildReversedIndexBuffer)
{
TArray<uint32> InversedIndices;
const int32 IndexCount = CombinedIndices.Num();
InversedIndices.AddUninitialized(IndexCount);
for (int32 SectionIndex = 0; SectionIndex < LODModel.Sections.Num(); ++SectionIndex)
#Loc: <Workspace>/Engine/Source/Developer/MeshUtilities/Private/MeshUtilities.cpp:2926
Scope (from outer to inner):
file
class class FStaticMeshUtilityBuilder
function bool GenerateRenderingMeshes
Source code excerpt:
// Build the inversed depth only index buffer.
if (LODModel.AdditionalIndexBuffers && StaticMesh->GetSourceModel(0).BuildSettings.bBuildReversedIndexBuffer)
{
TArray<uint32> ReversedDepthOnlyIndices;
const int32 IndexCount = DepthOnlyIndices.Num();
ReversedDepthOnlyIndices.AddUninitialized(IndexCount);
for (int32 i = 0; i < IndexCount; ++i)
{
#Loc: <Workspace>/Engine/Source/Editor/StaticMeshEditor/Private/StaticMeshEditorTools.cpp:901
Scope (from outer to inner):
file
function ECheckBoxState FMeshBuildSettingsLayout::ShouldBuildReversedIndexBuffer
Source code excerpt:
ECheckBoxState FMeshBuildSettingsLayout::ShouldBuildReversedIndexBuffer() const
{
return BuildSettings.bBuildReversedIndexBuffer ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
ECheckBoxState FMeshBuildSettingsLayout::ShouldUseHighPrecisionTangentBasis() const
{
return BuildSettings.bUseHighPrecisionTangentBasis ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
#Loc: <Workspace>/Engine/Source/Editor/StaticMeshEditor/Private/StaticMeshEditorTools.cpp:1042
Scope (from outer to inner):
file
function void FMeshBuildSettingsLayout::OnBuildReversedIndexBufferChanged
Source code excerpt:
void FMeshBuildSettingsLayout::OnBuildReversedIndexBufferChanged(ECheckBoxState NewState)
{
const bool bBuildReversedIndexBuffer = (NewState == ECheckBoxState::Checked) ? true : false;
if (BuildSettings.bBuildReversedIndexBuffer != bBuildReversedIndexBuffer)
{
if (FEngineAnalytics::IsAvailable())
{
FEngineAnalytics::GetProvider().RecordEvent(TEXT("Editor.Usage.StaticMesh.BuildSettings"), TEXT("bBuildReversedIndexBuffer"), bBuildReversedIndexBuffer ? TEXT("True") : TEXT("False"));
}
BuildSettings.bBuildReversedIndexBuffer = bBuildReversedIndexBuffer;
}
}
void FMeshBuildSettingsLayout::OnUseHighPrecisionTangentBasisChanged(ECheckBoxState NewState)
{
const bool bUseHighPrecisionTangents = (NewState == ECheckBoxState::Checked) ? true : false;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Classes/Factories/FbxSceneImportOptionsStaticMesh.h:70
Scope (from outer to inner):
file
class class UFbxSceneImportOptionsStaticMesh : public UObject
Source code excerpt:
UPROPERTY(EditAnywhere, config, Category = StaticMesh)
uint32 bBuildReversedIndexBuffer : 1;
UPROPERTY(EditAnywhere, config, Category = StaticMesh)
uint32 bGenerateLightmapUVs : 1;
/** If checked, one convex hull per UCX_ prefixed collision mesh will be generated instead of decomposing into multiple hulls */
UPROPERTY(EditAnywhere, config, Category = StaticMesh)
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Classes/Factories/FbxStaticMeshImportData.h:35
Scope (from outer to inner):
file
class class UFbxStaticMeshImportData : public UFbxMeshImportData
Source code excerpt:
UPROPERTY(EditAnywhere, BlueprintReadWrite, AdvancedDisplay, config, Category = Mesh, meta = (ImportType = "StaticMesh", ReimportRestrict = "true"))
uint32 bBuildReversedIndexBuffer:1;
/** For static meshes, enabling this option will allow you to use Nanite rendering at runtime. Can only be used with simple opaque materials. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, config, Category = Mesh, meta = (ToolTip = "If enabled, allows to render objects with Nanite", ReimportRestrict = "true", ImportType = "StaticMesh"))
uint32 bBuildNanite : 1;
UPROPERTY(EditAnywhere, BlueprintReadWrite, config, AdvancedDisplay, Category= Mesh, meta=(ImportType="StaticMesh", ReimportRestrict = "true"))
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxMainImport.cpp:489
Scope (from outer to inner):
file
namespace UnFbx
function void ApplyImportUIToImportOptions
Source code excerpt:
InOutImportOptions.bCombineToSingle = ImportUI->StaticMeshImportData->bCombineMeshes;
InOutImportOptions.bRemoveDegenerates = ImportUI->StaticMeshImportData->bRemoveDegenerates;
InOutImportOptions.bBuildReversedIndexBuffer = ImportUI->StaticMeshImportData->bBuildReversedIndexBuffer;
InOutImportOptions.bGenerateLightmapUVs = ImportUI->StaticMeshImportData->bGenerateLightmapUVs;
InOutImportOptions.bOneConvexHullPerUCX = ImportUI->StaticMeshImportData->bOneConvexHullPerUCX;
InOutImportOptions.bAutoGenerateCollision = ImportUI->StaticMeshImportData->bAutoGenerateCollision;
InOutImportOptions.StaticMeshLODGroup = ImportUI->StaticMeshImportData->StaticMeshLODGroup;
}
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxMainImport.cpp:1774
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));
Attribs.Add(FAnalyticsEventAttribute(TEXT("StaticMeshOpt VertexColorImportOption"), VertexColorImportOptionEnum->GetNameStringByValue(CaptureImportOptions->VertexColorImportOption)));
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxSceneImportData.cpp:102
Scope (from outer to inner):
file
function UnFbx::FBXImportOptions *JSONToFbxOption
Source code excerpt:
}
OptionObj->TryGetBoolField(TEXT("bRemoveDegenerates"), Option->bRemoveDegenerates);
OptionObj->TryGetBoolField(TEXT("bBuildReversedIndexBuffer"), Option->bBuildReversedIndexBuffer);
OptionObj->TryGetBoolField(TEXT("bGenerateLightmapUVs"), Option->bGenerateLightmapUVs);
OptionObj->TryGetBoolField(TEXT("bOneConvexHullPerUCX"), Option->bOneConvexHullPerUCX);
OptionObj->TryGetBoolField(TEXT("bAutoGenerateCollision"), Option->bAutoGenerateCollision);
FString LODGroup;
if (OptionObj->TryGetStringField(TEXT("StaticMeshLODGroup"), LODGroup))
{
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxSceneImportData.cpp:197
Scope (from outer to inner):
file
function FString FbxOptionToJSON
Source code excerpt:
JsonString += FString::Printf(TEXT("\"bRemoveDegenerates\" : \"%d\", \"bBuildReversedIndexBuffer\" : \"%d\", \"bGenerateLightmapUVs\" : \"%d\", \"bOneConvexHullPerUCX\" : \"%d\", \"bAutoGenerateCollision\" : \"%d\", \"StaticMeshLODGroup\" : \"%s\", \"bImportStaticMeshLODs\" : \"%d\", "),
Option->bRemoveDegenerates ? 1 : 0,
Option->bBuildReversedIndexBuffer ? 1 : 0,
Option->bGenerateLightmapUVs ? 1 : 0,
Option->bOneConvexHullPerUCX ? 1 : 0,
Option->bAutoGenerateCollision ? 1 : 0,
*(Option->StaticMeshLODGroup.ToString()),
Option->bImportStaticMeshLODs ? 1 : 0
);
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxSceneImportOptionsStaticMesh.cpp:18
Scope (from outer to inner):
file
function UFbxSceneImportOptionsStaticMesh::UFbxSceneImportOptionsStaticMesh
Source code excerpt:
, bAutoGenerateCollision(true)
, bRemoveDegenerates(true)
, bBuildReversedIndexBuffer(true)
, bGenerateLightmapUVs(true)
, bOneConvexHullPerUCX(true)
{
VertexOverrideColor = FColor(255, 255, 255, 255);
NormalImportMethod = EFBXSceneNormalImportMethod::FBXSceneNIM_ComputeNormals;
NormalGenerationMethod = EFBXSceneNormalGenerationMethod::MikkTSpace;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxSceneImportOptionsStaticMesh.cpp:32
Scope (from outer to inner):
file
function void UFbxSceneImportOptionsStaticMesh::FillStaticMeshInmportData
Source code excerpt:
check(SceneImportOptions != nullptr);
StaticMeshImportData->bAutoGenerateCollision = bAutoGenerateCollision;
StaticMeshImportData->bBuildReversedIndexBuffer = bBuildReversedIndexBuffer;
StaticMeshImportData->bGenerateLightmapUVs = bGenerateLightmapUVs;
StaticMeshImportData->bOneConvexHullPerUCX = bOneConvexHullPerUCX;
StaticMeshImportData->bRemoveDegenerates = bRemoveDegenerates;
StaticMeshImportData->StaticMeshLODGroup = StaticMeshLODGroup;
switch (VertexColorImportOption)
{
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxStaticMeshImport.cpp:2045
Scope (from outer to inner):
file
function UStaticMesh* UnFbx::FFbxImporter::ImportStaticMeshAsSingle
Source code excerpt:
FStaticMeshSourceModel& SrcModel = StaticMesh->GetSourceModel(LODIndex);
SrcModel.BuildSettings.bRemoveDegenerates = ImportOptions->bRemoveDegenerates;
SrcModel.BuildSettings.bBuildReversedIndexBuffer = ImportOptions->bBuildReversedIndexBuffer;
SrcModel.BuildSettings.bRecomputeNormals = ImportOptions->NormalImportMethod == FBXNIM_ComputeNormals;
SrcModel.BuildSettings.bRecomputeTangents = ImportOptions->NormalImportMethod != FBXNIM_ImportNormalsAndTangents;
SrcModel.BuildSettings.bUseMikkTSpace = (ImportOptions->NormalGenerationMethod == EFBXNormalGenerationMethod::MikkTSpace) && (!ImportOptions->ShouldImportNormals() || !ImportOptions->ShouldImportTangents());
SrcModel.BuildSettings.bComputeWeightedNormals = ImportOptions->bComputeWeightedNormals;
StaticMesh->NaniteSettings.bEnabled = ImportOptions->bBuildNanite;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxStaticMeshImport.cpp:2081
Scope (from outer to inner):
file
function UStaticMesh* UnFbx::FFbxImporter::ImportStaticMeshAsSingle
Source code excerpt:
FMeshBuildSettings& ExistingBuildSettings = MutableExistMeshDataPtr->ExistingLODData[LODIndex].ExistingBuildSettings;
ExistingBuildSettings.bRemoveDegenerates = SrcModel.BuildSettings.bRemoveDegenerates;
ExistingBuildSettings.bBuildReversedIndexBuffer = SrcModel.BuildSettings.bBuildReversedIndexBuffer;
ExistingBuildSettings.bRecomputeNormals = SrcModel.BuildSettings.bRecomputeNormals;
ExistingBuildSettings.bRecomputeTangents = SrcModel.BuildSettings.bRecomputeTangents;
ExistingBuildSettings.bUseMikkTSpace = SrcModel.BuildSettings.bUseMikkTSpace;
ExistingBuildSettings.bComputeWeightedNormals = SrcModel.BuildSettings.bComputeWeightedNormals;
ExistingBuildSettings.bGenerateLightmapUVs = SrcModel.BuildSettings.bGenerateLightmapUVs;
ExistingBuildSettings.DstLightmapIndex = SrcModel.BuildSettings.DstLightmapIndex;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/FbxStaticMeshImportData.cpp:8
Scope (from outer to inner):
file
function UFbxStaticMeshImportData::UFbxStaticMeshImportData
Source code excerpt:
StaticMeshLODGroup = NAME_None;
bRemoveDegenerates = true;
bBuildReversedIndexBuffer = true;
bBuildNanite = false;
bGenerateLightmapUVs = true;
bOneConvexHullPerUCX = true;
bAutoGenerateCollision = true;
bTransformVertexToAbsolute = true;
bBakePivotInVertex = false;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/SFbxSceneOptionWindow.cpp:1402
Scope (from outer to inner):
file
function void SFbxSceneOptionWindow::CopyStaticMeshOptionsToFbxOptions
Source code excerpt:
{
ImportSettings->bAutoGenerateCollision = StaticMeshOptions->bAutoGenerateCollision;
ImportSettings->bBuildReversedIndexBuffer = StaticMeshOptions->bBuildReversedIndexBuffer;
ImportSettings->bGenerateLightmapUVs = StaticMeshOptions->bGenerateLightmapUVs;
ImportSettings->bOneConvexHullPerUCX = StaticMeshOptions->bOneConvexHullPerUCX;
ImportSettings->bRemoveDegenerates = StaticMeshOptions->bRemoveDegenerates;
ImportSettings->StaticMeshLODGroup = StaticMeshOptions->StaticMeshLODGroup;
switch (StaticMeshOptions->VertexColorImportOption)
{
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Fbx/SFbxSceneOptionWindow.cpp:1448
Scope (from outer to inner):
file
function void SFbxSceneOptionWindow::CopyFbxOptionsToStaticMeshOptions
Source code excerpt:
{
StaticMeshOptions->bAutoGenerateCollision = ImportSettings->bAutoGenerateCollision;
StaticMeshOptions->bBuildReversedIndexBuffer = ImportSettings->bBuildReversedIndexBuffer;
StaticMeshOptions->bGenerateLightmapUVs = ImportSettings->bGenerateLightmapUVs;
StaticMeshOptions->bOneConvexHullPerUCX = ImportSettings->bOneConvexHullPerUCX;
StaticMeshOptions->bRemoveDegenerates = ImportSettings->bRemoveDegenerates;
StaticMeshOptions->StaticMeshLODGroup = ImportSettings->StaticMeshLODGroup;
switch (ImportSettings->VertexColorImportOption)
{
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/FbxMeshUtils.cpp:79
Scope (from outer to inner):
file
namespace FbxMeshUtils
namespace Private
function void SetupFbxImportOptions
Source code excerpt:
ImportOptions->DistanceFieldResolutionScale = SourceModel.BuildSettings.DistanceFieldResolutionScale;
ImportOptions->bRemoveDegenerates = SourceModel.BuildSettings.bRemoveDegenerates;
ImportOptions->bBuildReversedIndexBuffer = SourceModel.BuildSettings.bBuildReversedIndexBuffer;
ImportOptions->bGenerateLightmapUVs = SourceModel.BuildSettings.bGenerateLightmapUVs;
}
// Set a couple of settings that shouldn't change while importing a lod
ImportOptions->bBuildNanite = BaseStaticMesh->IsNaniteEnabled();
ImportOptions->StaticMeshLODGroup = BaseStaticMesh->LODGroup;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Public/FbxImporter.h:150
Scope (from outer to inner):
file
namespace UnFbx
Source code excerpt:
float DistanceFieldResolutionScale;
bool bRemoveDegenerates;
bool bBuildReversedIndexBuffer;
bool bBuildNanite;
bool bGenerateLightmapUVs;
bool bOneConvexHullPerUCX;
bool bAutoGenerateCollision;
FName StaticMeshLODGroup;
bool bImportStaticMeshLODs;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Classes/Engine/EngineTypes.h:2614
Scope: file
Source code excerpt:
/** Required to optimize mesh in mirrored transform. Double index buffer size. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=BuildSettings)
uint8 bBuildReversedIndexBuffer:1;
/** If true, Tangents will be stored at 16 bit vs 8 bit precision. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = BuildSettings)
uint8 bUseHighPrecisionTangentBasis:1;
/** If true, UVs will be stored at full floating point precision. */
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Classes/Engine/EngineTypes.h:2688
Scope (from outer to inner):
file
function FMeshBuildSettings
Source code excerpt:
, bComputeWeightedNormals(false)
, bRemoveDegenerates(true)
, bBuildReversedIndexBuffer(true)
, bUseHighPrecisionTangentBasis(false)
, bUseFullPrecisionUVs(false)
, bUseBackwardsCompatibleF16TruncUVs(false)
, bGenerateLightmapUVs(true)
, bGenerateDistanceFieldAsIfTwoSided(false)
, bSupportFaceRemap(false)
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Classes/Engine/EngineTypes.h:2716
Scope (from outer to inner):
file
function bool operator==
Source code excerpt:
&& bUseMikkTSpace == Other.bUseMikkTSpace
&& bRemoveDegenerates == Other.bRemoveDegenerates
&& bBuildReversedIndexBuffer == Other.bBuildReversedIndexBuffer
&& bUseHighPrecisionTangentBasis == Other.bUseHighPrecisionTangentBasis
&& bUseFullPrecisionUVs == Other.bUseFullPrecisionUVs
&& bUseBackwardsCompatibleF16TruncUVs == Other.bUseBackwardsCompatibleF16TruncUVs
&& bGenerateLightmapUVs == Other.bGenerateLightmapUVs
&& MinLightmapResolution == Other.MinLightmapResolution
&& SrcLightmapIndex == Other.SrcLightmapIndex
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/StaticMesh.cpp:2639
Scope (from outer to inner):
file
function static void SerializeBuildSettingsForDDC
Source code excerpt:
FArchive_Serialize_BitfieldBool(Ar, BuildSettings.bComputeWeightedNormals);
FArchive_Serialize_BitfieldBool(Ar, BuildSettings.bRemoveDegenerates);
FArchive_Serialize_BitfieldBool(Ar, BuildSettings.bBuildReversedIndexBuffer);
FArchive_Serialize_BitfieldBool(Ar, BuildSettings.bUseHighPrecisionTangentBasis);
FArchive_Serialize_BitfieldBool(Ar, BuildSettings.bUseFullPrecisionUVs);
FArchive_Serialize_BitfieldBool(Ar, BuildSettings.bUseBackwardsCompatibleF16TruncUVs);
FArchive_Serialize_BitfieldBool(Ar, BuildSettings.bGenerateLightmapUVs);
Ar << BuildSettings.MinLightmapResolution;