Parcourir la source

Scene Settings: Update LOD soft naming conventions to be more forgiving (#14017)

* Scene Settings: Update LOD soft naming conventions to be more forgiving

Signed-off-by: Junbo Liang <[email protected]>
Junbo Liang il y a 2 ans
Parent
commit
b6a475b424
17 fichiers modifiés avec 722 ajouts et 279 suppressions
  1. 58 58
      AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/SoftNamingLOD/SceneDebug/lodtest.dbgsg
  2. 68 56
      AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/SoftNamingLOD/SceneDebug/lodtest.dbgsg.xml
  3. 2 2
      AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/SoftNamingLOD/lodtest.fbx
  4. 58 58
      AutomatedTesting/Gem/PythonTests/assetpipeline/scene_tests/assets/SoftNamingLOD/SceneDebug/lodtest.dbgsg
  5. 68 56
      AutomatedTesting/Gem/PythonTests/assetpipeline/scene_tests/assets/SoftNamingLOD/SceneDebug/lodtest.dbgsg.xml
  6. 2 2
      AutomatedTesting/Gem/PythonTests/assetpipeline/scene_tests/assets/SoftNamingLOD/lodtest.fbx
  7. 1 1
      Gems/SceneProcessing/Code/Include/Config/SceneProcessingConfigBus.h
  8. 49 38
      Gems/SceneProcessing/Code/Source/Config/Components/SceneProcessingConfigSystemComponent.cpp
  9. 15 5
      Gems/SceneProcessing/Code/Source/Config/Components/SceneProcessingConfigSystemComponent.h
  10. 2 2
      Gems/SceneProcessing/Code/Source/Config/Components/SoftNameBehavior.cpp
  11. 7 0
      Gems/SceneProcessing/Code/Source/Config/SettingsObjects/FileSoftNameSetting.cpp
  12. 2 0
      Gems/SceneProcessing/Code/Source/Config/SettingsObjects/FileSoftNameSetting.h
  13. 7 0
      Gems/SceneProcessing/Code/Source/Config/SettingsObjects/NodeSoftNameSetting.cpp
  14. 2 0
      Gems/SceneProcessing/Code/Source/Config/SettingsObjects/NodeSoftNameSetting.h
  15. 2 0
      Gems/SceneProcessing/Code/Source/Config/SettingsObjects/SoftNameSetting.h
  16. 296 1
      Gems/SceneProcessing/Code/Tests/SceneBuilder/SceneBuilderConfigTests.cpp
  17. 83 0
      Gems/SceneProcessing/Registry/SoftNameSettings.setreg

+ 58 - 58
AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/SoftNamingLOD/SceneDebug/lodtest.dbgsg

@@ -18,24 +18,24 @@ Node Type: MeshData
 	FaceList: Count 12. Hash: 9888799799190757436
 	FaceMaterialIds: Count 12. Hash: 7110546404675862471
 
-Node Name: lodtest_lod3
-Node Path: RootNode.lodtest_lod3
+Node Name: lodtest_LOD_3
+Node Path: RootNode.lodtest_LOD_3
 Node Type: MeshData
 	Positions: Count 1984. Hash: 6600975913707260286
 	Normals: Count 1984. Hash: 2708036977889843831
 	FaceList: Count 960. Hash: 10390417165025722786
 	FaceMaterialIds: Count 960. Hash: 12510609185544665964
 
-Node Name: lodtest_lod2
-Node Path: RootNode.lodtest_lod2
+Node Name: lodtest_Lod2
+Node Path: RootNode.lodtest_Lod2
 Node Type: MeshData
 	Positions: Count 240. Hash: 219362421205407416
 	Normals: Count 240. Hash: 11195242321181199939
 	FaceList: Count 80. Hash: 11130917988116538993
 	FaceMaterialIds: Count 80. Hash: 4190892684086530065
 
-Node Name: lodtest_lod1
-Node Path: RootNode.lodtest_lod1
+Node Name: lodtest_lod_1
+Node Path: RootNode.lodtest_lod_1
 Node Type: MeshData
 	Positions: Count 192. Hash: 1283526254311745349
 	Normals: Count 192. Hash: 1873340970602844856
@@ -50,24 +50,24 @@ Node Type: MeshData
 	FaceList: Count 12. Hash: 9888799799190757436
 	FaceMaterialIds: Count 12. Hash: 7110546404675862471
 
-Node Name: lodtest_lod3_lodtest_optimized
-Node Path: RootNode.lodtest_lod3_lodtest_optimized
+Node Name: lodtest_LOD_3_lodtest_optimized
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized
 Node Type: MeshData
 	Positions: Count 1984. Hash: 6600975913707260286
 	Normals: Count 1984. Hash: 2708036977889843831
 	FaceList: Count 960. Hash: 10390417165025722786
 	FaceMaterialIds: Count 960. Hash: 12510609185544665964
 
-Node Name: lodtest_lod2_lodtest_optimized
-Node Path: RootNode.lodtest_lod2_lodtest_optimized
+Node Name: lodtest_Lod2_lodtest_optimized
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized
 Node Type: MeshData
 	Positions: Count 240. Hash: 219362421205407416
 	Normals: Count 240. Hash: 11195242321181199939
 	FaceList: Count 80. Hash: 11130917988116538993
 	FaceMaterialIds: Count 80. Hash: 4190892684086530065
 
-Node Name: lodtest_lod1_lodtest_optimized
-Node Path: RootNode.lodtest_lod1_lodtest_optimized
+Node Name: lodtest_lod_1_lodtest_optimized
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized
 Node Type: MeshData
 	Positions: Count 192. Hash: 7921557352486854444
 	Normals: Count 192. Hash: 1873340970602844856
@@ -97,11 +97,11 @@ Node Type: MeshVertexUVData
 	UVs: Count 24. Hash: 1622169145591646736
 	UVCustomName: UVMap
 
-Node Name: Material
-Node Path: RootNode.lodtest.Material
+Node Name: Material_002
+Node Path: RootNode.lodtest.Material_002
 Node Type: MaterialData
-	MaterialName: Material
-	UniqueId: 11127505492038345244
+	MaterialName: Material.002
+	UniqueId: 618298070506015545
 	IsNoDraw: false
 	DiffuseColor: < 0.800000,  0.800000,  0.800000>
 	SpecularColor: < 0.800000,  0.800000,  0.800000>
@@ -113,7 +113,7 @@ Node Type: MaterialData
 	UseMetallicMap: Not set
 	MetallicFactor: Not set
 	UseRoughnessMap: Not set
-	RoughnessFactor: Not set
+	RoughnessFactor: 0.400000
 	UseEmissiveMap: Not set
 	EmissiveIntensity: Not set
 	UseAOMap: Not set
@@ -141,7 +141,7 @@ Node Type: MeshVertexBitangentData
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod3.transform
+Node Path: RootNode.lodtest_LOD_3.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000,  0.000000,  0.000000>
@@ -150,7 +150,7 @@ Node Type: TransformData
 		Transl: < 0.000000,  2.298166,  0.000000>
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod3.custom_properties
+Node Path: RootNode.lodtest_LOD_3.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -158,13 +158,13 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod3.UVMap
+Node Path: RootNode.lodtest_LOD_3.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 1984. Hash: 14119273880200542497
 	UVCustomName: UVMap
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod3.DefaultMaterial
+Node Path: RootNode.lodtest_LOD_3.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -194,20 +194,20 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod3.TangentSet_0
+Node Path: RootNode.lodtest_LOD_3.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 1984. Hash: 5664494957869921957
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod3.BitangentSet_0
+Node Path: RootNode.lodtest_LOD_3.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 1984. Hash: 5048878728906162461
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod2.transform
+Node Path: RootNode.lodtest_Lod2.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000, -0.000000,  0.000000>
@@ -216,7 +216,7 @@ Node Type: TransformData
 		Transl: < 0.000000, -2.211498,  0.000000>
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod2.custom_properties
+Node Path: RootNode.lodtest_Lod2.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -224,13 +224,13 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod2.UVMap
+Node Path: RootNode.lodtest_Lod2.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 240. Hash: 13702273589593616598
 	UVCustomName: UVMap
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod2.DefaultMaterial
+Node Path: RootNode.lodtest_Lod2.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -260,20 +260,20 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod2.TangentSet_0
+Node Path: RootNode.lodtest_Lod2.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 240. Hash: 1390901212717410749
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod2.BitangentSet_0
+Node Path: RootNode.lodtest_Lod2.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 240. Hash: 1379238632949267281
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod1.transform
+Node Path: RootNode.lodtest_lod_1.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000,  0.000000,  0.000000>
@@ -282,7 +282,7 @@ Node Type: TransformData
 		Transl: < 2.410331,  0.000000,  0.000000>
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod1.custom_properties
+Node Path: RootNode.lodtest_lod_1.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -290,13 +290,13 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod1.UVMap
+Node Path: RootNode.lodtest_lod_1.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 192. Hash: 27253578623892681
 	UVCustomName: UVMap
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod1.DefaultMaterial
+Node Path: RootNode.lodtest_lod_1.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -326,14 +326,14 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod1.TangentSet_0
+Node Path: RootNode.lodtest_lod_1.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 192. Hash: 13347865366302598201
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod1.BitangentSet_0
+Node Path: RootNode.lodtest_lod_1.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 192. Hash: 11177881960262055002
 	GenerationMethod: 1
@@ -374,11 +374,11 @@ Node Type: TransformData
 		BasisZ: < 0.000000, -100.000000, -0.000016>
 		Transl: < 0.000000,  0.000000,  0.000000>
 
-Node Name: Material
-Node Path: RootNode.lodtest_lodtest_optimized.Material
+Node Name: Material_002
+Node Path: RootNode.lodtest_lodtest_optimized.Material_002
 Node Type: MaterialData
-	MaterialName: Material
-	UniqueId: 11127505492038345244
+	MaterialName: Material.002
+	UniqueId: 618298070506015545
 	IsNoDraw: false
 	DiffuseColor: < 0.800000,  0.800000,  0.800000>
 	SpecularColor: < 0.800000,  0.800000,  0.800000>
@@ -390,7 +390,7 @@ Node Type: MaterialData
 	UseMetallicMap: Not set
 	MetallicFactor: Not set
 	UseRoughnessMap: Not set
-	RoughnessFactor: Not set
+	RoughnessFactor: 0.400000
 	UseEmissiveMap: Not set
 	EmissiveIntensity: Not set
 	UseAOMap: Not set
@@ -405,7 +405,7 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.custom_properties
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -413,26 +413,26 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.UVMap
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 1984. Hash: 14119273880200542497
 	UVCustomName: UVMap
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.TangentSet_0
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 1984. Hash: 5664494957869921957
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.BitangentSet_0
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 1984. Hash: 5048878728906162461
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.transform
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000,  0.000000,  0.000000>
@@ -441,7 +441,7 @@ Node Type: TransformData
 		Transl: < 0.000000,  2.298166,  0.000000>
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.DefaultMaterial
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -471,7 +471,7 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.custom_properties
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -479,26 +479,26 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.UVMap
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 240. Hash: 13702273589593616598
 	UVCustomName: UVMap
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.TangentSet_0
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 240. Hash: 1390901212717410749
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.BitangentSet_0
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 240. Hash: 1379238632949267281
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.transform
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000, -0.000000,  0.000000>
@@ -507,7 +507,7 @@ Node Type: TransformData
 		Transl: < 0.000000, -2.211498,  0.000000>
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.DefaultMaterial
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -537,7 +537,7 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.custom_properties
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -545,26 +545,26 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.UVMap
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 192. Hash: 13790301632763350589
 	UVCustomName: UVMap
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.TangentSet_0
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 192. Hash: 13256424469303674766
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.BitangentSet_0
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 192. Hash: 12542581737782433115
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.transform
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000,  0.000000,  0.000000>
@@ -573,7 +573,7 @@ Node Type: TransformData
 		Transl: < 2.410331,  0.000000,  0.000000>
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.DefaultMaterial
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983

+ 68 - 56
AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/SoftNamingLOD/SceneDebug/lodtest.dbgsg.xml

@@ -73,8 +73,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod3" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_LOD_3" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -128,8 +128,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod2" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_Lod2" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -183,8 +183,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_lod_1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -293,8 +293,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod3_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_LOD_3_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -348,8 +348,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod2_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_Lod2_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -403,8 +403,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod1_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_lod_1_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -515,20 +515,20 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest.Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="Material_002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest.Material_002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
 						<Class name="AZStd::string" field="value1" value="MaterialName" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
-							<Class name="AZStd::string" field="m_data" value="Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+							<Class name="AZStd::string" field="m_data" value="Material.002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						</Class>
 					</Class>
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
 						<Class name="AZStd::string" field="value1" value="UniqueId" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
-							<Class name="AZ::u64" field="m_data" value="11127505492038345244" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
+							<Class name="AZ::u64" field="m_data" value="618298070506015545" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
 						</Class>
 					</Class>
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -567,6 +567,12 @@
 							<Class name="double" field="m_data" value="36.0000000" type="{110C4B14-11A8-4E9D-8638-5051013A56AC}"/>
 						</Class>
 					</Class>
+					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
+						<Class name="AZStd::string" field="value1" value="RoughnessFactor" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
+							<Class name="double" field="m_data" value="0.4000000" type="{110C4B14-11A8-4E9D-8638-5051013A56AC}"/>
+						</Class>
+					</Class>
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
@@ -627,7 +633,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -640,7 +646,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -665,7 +671,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -684,7 +690,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -739,7 +745,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -770,7 +776,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -795,7 +801,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -808,7 +814,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -833,7 +839,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -852,7 +858,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -907,7 +913,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -938,7 +944,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -963,7 +969,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -976,7 +982,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1001,7 +1007,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1020,7 +1026,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1075,7 +1081,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1106,7 +1112,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1243,20 +1249,20 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lodtest_optimized.Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="Material_002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lodtest_optimized.Material_002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
 						<Class name="AZStd::string" field="value1" value="MaterialName" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
-							<Class name="AZStd::string" field="m_data" value="Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+							<Class name="AZStd::string" field="m_data" value="Material.002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						</Class>
 					</Class>
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
 						<Class name="AZStd::string" field="value1" value="UniqueId" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
-							<Class name="AZ::u64" field="m_data" value="11127505492038345244" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
+							<Class name="AZ::u64" field="m_data" value="618298070506015545" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
 						</Class>
 					</Class>
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1295,11 +1301,17 @@
 							<Class name="double" field="m_data" value="36.0000000" type="{110C4B14-11A8-4E9D-8638-5051013A56AC}"/>
 						</Class>
 					</Class>
+					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
+						<Class name="AZStd::string" field="value1" value="RoughnessFactor" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
+							<Class name="double" field="m_data" value="0.4000000" type="{110C4B14-11A8-4E9D-8638-5051013A56AC}"/>
+						</Class>
+					</Class>
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1324,7 +1336,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1343,7 +1355,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1374,7 +1386,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1399,7 +1411,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1412,7 +1424,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1467,7 +1479,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1492,7 +1504,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1511,7 +1523,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1542,7 +1554,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1567,7 +1579,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1580,7 +1592,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1635,7 +1647,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1660,7 +1672,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1679,7 +1691,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1710,7 +1722,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1735,7 +1747,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1748,7 +1760,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">

+ 2 - 2
AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/SoftNamingLOD/lodtest.fbx

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:71b249e5641101789e1fa946b189d27a61cc6fa871db1aa66b1963142af3a26e
-size 44956
+oid sha256:8e32bb8cb4bff1189ad9ac7c80a0e73c1d9491f1260b7278eaf16bac06a7ffac
+size 45036

+ 58 - 58
AutomatedTesting/Gem/PythonTests/assetpipeline/scene_tests/assets/SoftNamingLOD/SceneDebug/lodtest.dbgsg

@@ -18,24 +18,24 @@ Node Type: MeshData
 	FaceList: Count 12. Hash: 9888799799190757436
 	FaceMaterialIds: Count 12. Hash: 7110546404675862471
 
-Node Name: lodtest_lod3
-Node Path: RootNode.lodtest_lod3
+Node Name: lodtest_LOD_3
+Node Path: RootNode.lodtest_LOD_3
 Node Type: MeshData
 	Positions: Count 1984. Hash: 6600975913707260286
 	Normals: Count 1984. Hash: 2708036977889843831
 	FaceList: Count 960. Hash: 10390417165025722786
 	FaceMaterialIds: Count 960. Hash: 12510609185544665964
 
-Node Name: lodtest_lod2
-Node Path: RootNode.lodtest_lod2
+Node Name: lodtest_Lod2
+Node Path: RootNode.lodtest_Lod2
 Node Type: MeshData
 	Positions: Count 240. Hash: 219362421205407416
 	Normals: Count 240. Hash: 11195242321181199939
 	FaceList: Count 80. Hash: 11130917988116538993
 	FaceMaterialIds: Count 80. Hash: 4190892684086530065
 
-Node Name: lodtest_lod1
-Node Path: RootNode.lodtest_lod1
+Node Name: lodtest_lod_1
+Node Path: RootNode.lodtest_lod_1
 Node Type: MeshData
 	Positions: Count 192. Hash: 1283526254311745349
 	Normals: Count 192. Hash: 1873340970602844856
@@ -50,24 +50,24 @@ Node Type: MeshData
 	FaceList: Count 12. Hash: 9888799799190757436
 	FaceMaterialIds: Count 12. Hash: 7110546404675862471
 
-Node Name: lodtest_lod3_lodtest_optimized
-Node Path: RootNode.lodtest_lod3_lodtest_optimized
+Node Name: lodtest_LOD_3_lodtest_optimized
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized
 Node Type: MeshData
 	Positions: Count 1984. Hash: 6600975913707260286
 	Normals: Count 1984. Hash: 2708036977889843831
 	FaceList: Count 960. Hash: 10390417165025722786
 	FaceMaterialIds: Count 960. Hash: 12510609185544665964
 
-Node Name: lodtest_lod2_lodtest_optimized
-Node Path: RootNode.lodtest_lod2_lodtest_optimized
+Node Name: lodtest_Lod2_lodtest_optimized
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized
 Node Type: MeshData
 	Positions: Count 240. Hash: 219362421205407416
 	Normals: Count 240. Hash: 11195242321181199939
 	FaceList: Count 80. Hash: 11130917988116538993
 	FaceMaterialIds: Count 80. Hash: 4190892684086530065
 
-Node Name: lodtest_lod1_lodtest_optimized
-Node Path: RootNode.lodtest_lod1_lodtest_optimized
+Node Name: lodtest_lod_1_lodtest_optimized
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized
 Node Type: MeshData
 	Positions: Count 192. Hash: 7921557352486854444
 	Normals: Count 192. Hash: 1873340970602844856
@@ -97,11 +97,11 @@ Node Type: MeshVertexUVData
 	UVs: Count 24. Hash: 1622169145591646736
 	UVCustomName: UVMap
 
-Node Name: Material
-Node Path: RootNode.lodtest.Material
+Node Name: Material_002
+Node Path: RootNode.lodtest.Material_002
 Node Type: MaterialData
-	MaterialName: Material
-	UniqueId: 11127505492038345244
+	MaterialName: Material.002
+	UniqueId: 618298070506015545
 	IsNoDraw: false
 	DiffuseColor: < 0.800000,  0.800000,  0.800000>
 	SpecularColor: < 0.800000,  0.800000,  0.800000>
@@ -113,7 +113,7 @@ Node Type: MaterialData
 	UseMetallicMap: Not set
 	MetallicFactor: Not set
 	UseRoughnessMap: Not set
-	RoughnessFactor: Not set
+	RoughnessFactor: 0.400000
 	UseEmissiveMap: Not set
 	EmissiveIntensity: Not set
 	UseAOMap: Not set
@@ -141,7 +141,7 @@ Node Type: MeshVertexBitangentData
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod3.transform
+Node Path: RootNode.lodtest_LOD_3.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000,  0.000000,  0.000000>
@@ -150,7 +150,7 @@ Node Type: TransformData
 		Transl: < 0.000000,  2.298166,  0.000000>
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod3.custom_properties
+Node Path: RootNode.lodtest_LOD_3.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -158,13 +158,13 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod3.UVMap
+Node Path: RootNode.lodtest_LOD_3.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 1984. Hash: 14119273880200542497
 	UVCustomName: UVMap
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod3.DefaultMaterial
+Node Path: RootNode.lodtest_LOD_3.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -194,20 +194,20 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod3.TangentSet_0
+Node Path: RootNode.lodtest_LOD_3.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 1984. Hash: 5664494957869921957
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod3.BitangentSet_0
+Node Path: RootNode.lodtest_LOD_3.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 1984. Hash: 5048878728906162461
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod2.transform
+Node Path: RootNode.lodtest_Lod2.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000, -0.000000,  0.000000>
@@ -216,7 +216,7 @@ Node Type: TransformData
 		Transl: < 0.000000, -2.211498,  0.000000>
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod2.custom_properties
+Node Path: RootNode.lodtest_Lod2.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -224,13 +224,13 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod2.UVMap
+Node Path: RootNode.lodtest_Lod2.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 240. Hash: 13702273589593616598
 	UVCustomName: UVMap
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod2.DefaultMaterial
+Node Path: RootNode.lodtest_Lod2.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -260,20 +260,20 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod2.TangentSet_0
+Node Path: RootNode.lodtest_Lod2.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 240. Hash: 1390901212717410749
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod2.BitangentSet_0
+Node Path: RootNode.lodtest_Lod2.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 240. Hash: 1379238632949267281
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod1.transform
+Node Path: RootNode.lodtest_lod_1.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000,  0.000000,  0.000000>
@@ -282,7 +282,7 @@ Node Type: TransformData
 		Transl: < 2.410331,  0.000000,  0.000000>
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod1.custom_properties
+Node Path: RootNode.lodtest_lod_1.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -290,13 +290,13 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod1.UVMap
+Node Path: RootNode.lodtest_lod_1.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 192. Hash: 27253578623892681
 	UVCustomName: UVMap
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod1.DefaultMaterial
+Node Path: RootNode.lodtest_lod_1.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -326,14 +326,14 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod1.TangentSet_0
+Node Path: RootNode.lodtest_lod_1.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 192. Hash: 13347865366302598201
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod1.BitangentSet_0
+Node Path: RootNode.lodtest_lod_1.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 192. Hash: 11177881960262055002
 	GenerationMethod: 1
@@ -374,11 +374,11 @@ Node Type: TransformData
 		BasisZ: < 0.000000, -100.000000, -0.000016>
 		Transl: < 0.000000,  0.000000,  0.000000>
 
-Node Name: Material
-Node Path: RootNode.lodtest_lodtest_optimized.Material
+Node Name: Material_002
+Node Path: RootNode.lodtest_lodtest_optimized.Material_002
 Node Type: MaterialData
-	MaterialName: Material
-	UniqueId: 11127505492038345244
+	MaterialName: Material.002
+	UniqueId: 618298070506015545
 	IsNoDraw: false
 	DiffuseColor: < 0.800000,  0.800000,  0.800000>
 	SpecularColor: < 0.800000,  0.800000,  0.800000>
@@ -390,7 +390,7 @@ Node Type: MaterialData
 	UseMetallicMap: Not set
 	MetallicFactor: Not set
 	UseRoughnessMap: Not set
-	RoughnessFactor: Not set
+	RoughnessFactor: 0.400000
 	UseEmissiveMap: Not set
 	EmissiveIntensity: Not set
 	UseAOMap: Not set
@@ -405,7 +405,7 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.custom_properties
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -413,26 +413,26 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.UVMap
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 1984. Hash: 14119273880200542497
 	UVCustomName: UVMap
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.TangentSet_0
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 1984. Hash: 5664494957869921957
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.BitangentSet_0
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 1984. Hash: 5048878728906162461
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.transform
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000,  0.000000,  0.000000>
@@ -441,7 +441,7 @@ Node Type: TransformData
 		Transl: < 0.000000,  2.298166,  0.000000>
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod3_lodtest_optimized.DefaultMaterial
+Node Path: RootNode.lodtest_LOD_3_lodtest_optimized.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -471,7 +471,7 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.custom_properties
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -479,26 +479,26 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.UVMap
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 240. Hash: 13702273589593616598
 	UVCustomName: UVMap
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.TangentSet_0
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 240. Hash: 1390901212717410749
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.BitangentSet_0
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 240. Hash: 1379238632949267281
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.transform
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000, -0.000000,  0.000000>
@@ -507,7 +507,7 @@ Node Type: TransformData
 		Transl: < 0.000000, -2.211498,  0.000000>
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod2_lodtest_optimized.DefaultMaterial
+Node Path: RootNode.lodtest_Lod2_lodtest_optimized.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983
@@ -537,7 +537,7 @@ Node Type: MaterialData
 	BaseColorTexture: 
 
 Node Name: custom_properties
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.custom_properties
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.custom_properties
 Node Type: CustomPropertyData
 	IsNull: false
 	DefaultAttributeIndex: 0
@@ -545,26 +545,26 @@ Node Type: CustomPropertyData
 	InheritType: 1
 
 Node Name: UVMap
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.UVMap
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.UVMap
 Node Type: MeshVertexUVData
 	UVs: Count 192. Hash: 13790301632763350589
 	UVCustomName: UVMap
 
 Node Name: TangentSet_0
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.TangentSet_0
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.TangentSet_0
 Node Type: MeshVertexTangentData
 	Tangents: Count 192. Hash: 13256424469303674766
 	GenerationMethod: 1
 	SetIndex: 0
 
 Node Name: BitangentSet_0
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.BitangentSet_0
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.BitangentSet_0
 Node Type: MeshVertexBitangentData
 	Bitangents: Count 192. Hash: 12542581737782433115
 	GenerationMethod: 1
 
 Node Name: transform
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.transform
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.transform
 Node Type: TransformData
 	Matrix:
 		BasisX: < 100.000000,  0.000000,  0.000000>
@@ -573,7 +573,7 @@ Node Type: TransformData
 		Transl: < 2.410331,  0.000000,  0.000000>
 
 Node Name: DefaultMaterial
-Node Path: RootNode.lodtest_lod1_lodtest_optimized.DefaultMaterial
+Node Path: RootNode.lodtest_lod_1_lodtest_optimized.DefaultMaterial
 Node Type: MaterialData
 	MaterialName: DefaultMaterial
 	UniqueId: 3809502407269006983

+ 68 - 56
AutomatedTesting/Gem/PythonTests/assetpipeline/scene_tests/assets/SoftNamingLOD/SceneDebug/lodtest.dbgsg.xml

@@ -73,8 +73,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod3" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_LOD_3" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -128,8 +128,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod2" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_Lod2" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -183,8 +183,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_lod_1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -293,8 +293,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod3_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_LOD_3_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -348,8 +348,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod2_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_Lod2_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -403,8 +403,8 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="lodtest_lod1_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="lodtest_lod_1_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -515,20 +515,20 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest.Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="Material_002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest.Material_002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
 						<Class name="AZStd::string" field="value1" value="MaterialName" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
-							<Class name="AZStd::string" field="m_data" value="Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+							<Class name="AZStd::string" field="m_data" value="Material.002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						</Class>
 					</Class>
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
 						<Class name="AZStd::string" field="value1" value="UniqueId" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
-							<Class name="AZ::u64" field="m_data" value="11127505492038345244" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
+							<Class name="AZ::u64" field="m_data" value="618298070506015545" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
 						</Class>
 					</Class>
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -567,6 +567,12 @@
 							<Class name="double" field="m_data" value="36.0000000" type="{110C4B14-11A8-4E9D-8638-5051013A56AC}"/>
 						</Class>
 					</Class>
+					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
+						<Class name="AZStd::string" field="value1" value="RoughnessFactor" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
+							<Class name="double" field="m_data" value="0.4000000" type="{110C4B14-11A8-4E9D-8638-5051013A56AC}"/>
+						</Class>
+					</Class>
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
@@ -627,7 +633,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -640,7 +646,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -665,7 +671,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -684,7 +690,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -739,7 +745,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -770,7 +776,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -795,7 +801,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -808,7 +814,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -833,7 +839,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -852,7 +858,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -907,7 +913,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -938,7 +944,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -963,7 +969,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -976,7 +982,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1001,7 +1007,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1020,7 +1026,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1075,7 +1081,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1106,7 +1112,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1243,20 +1249,20 @@
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
-				<Class name="AZStd::string" field="Name" value="Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lodtest_optimized.Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Name" value="Material_002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lodtest_optimized.Material_002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
 						<Class name="AZStd::string" field="value1" value="MaterialName" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
-							<Class name="AZStd::string" field="m_data" value="Material" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+							<Class name="AZStd::string" field="m_data" value="Material.002" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						</Class>
 					</Class>
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
 						<Class name="AZStd::string" field="value1" value="UniqueId" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
-							<Class name="AZ::u64" field="m_data" value="11127505492038345244" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
+							<Class name="AZ::u64" field="m_data" value="618298070506015545" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
 						</Class>
 					</Class>
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1295,11 +1301,17 @@
 							<Class name="double" field="m_data" value="36.0000000" type="{110C4B14-11A8-4E9D-8638-5051013A56AC}"/>
 						</Class>
 					</Class>
+					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
+						<Class name="AZStd::string" field="value1" value="RoughnessFactor" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+						<Class name="AZStd::any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
+							<Class name="double" field="m_data" value="0.4000000" type="{110C4B14-11A8-4E9D-8638-5051013A56AC}"/>
+						</Class>
+					</Class>
 				</Class>
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1324,7 +1336,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1343,7 +1355,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1374,7 +1386,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1399,7 +1411,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1412,7 +1424,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod3_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_LOD_3_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1467,7 +1479,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1492,7 +1504,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1511,7 +1523,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1542,7 +1554,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1567,7 +1579,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1580,7 +1592,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod2_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_Lod2_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1635,7 +1647,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.custom_properties" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="CustomPropertyData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1660,7 +1672,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.UVMap" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexUVData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1679,7 +1691,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.TangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexTangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1710,7 +1722,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.BitangentSet_0" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MeshVertexBitangentData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1735,7 +1747,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.transform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="TransformData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
@@ -1748,7 +1760,7 @@
 			</Class>
 			<Class name="DebugNode" field="element" type="{490B9D4C-1847-46EB-BEBC-49812E104626}">
 				<Class name="AZStd::string" field="Name" value="DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
-				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod1_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
+				<Class name="AZStd::string" field="Path" value="RootNode.lodtest_lod_1_lodtest_optimized.DefaultMaterial" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::string" field="Type" value="MaterialData" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
 				<Class name="AZStd::vector&lt;AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;, allocator&gt;" field="Data" type="{AB34420F-52EB-5851-B700-14041D779DBC}">
 					<Class name="AZStd::pair&lt;AZStd::basic_string&lt;char, AZStd::char_traits&lt;char&gt;, allocator&gt;, AZStd::any&gt;" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">

+ 2 - 2
AutomatedTesting/Gem/PythonTests/assetpipeline/scene_tests/assets/SoftNamingLOD/lodtest.fbx

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:71b249e5641101789e1fa946b189d27a61cc6fa871db1aa66b1963142af3a26e
-size 44956
+oid sha256:8e32bb8cb4bff1189ad9ac7c80a0e73c1d9491f1260b7278eaf16bac06a7ffac
+size 45036

+ 1 - 1
Gems/SceneProcessing/Code/Include/Config/SceneProcessingConfigBus.h

@@ -25,7 +25,7 @@ namespace AZ
             static const EBusHandlerPolicy HandlerPolicy = EBusHandlerPolicy::Single;
             static const EBusAddressPolicy AddressPolicy = EBusAddressPolicy::Single;
             
-            virtual const AZStd::vector<SoftNameSetting*>* GetSoftNames() = 0;
+            virtual const AZStd::vector<AZStd::unique_ptr<SoftNameSetting>>* GetSoftNames() = 0;
             
             /**
              * @brief Adds a virtual type for matching against the name of scene nodes.

+ 49 - 38
Gems/SceneProcessing/Code/Source/Config/Components/SceneProcessingConfigSystemComponent.cpp

@@ -39,23 +39,47 @@ namespace AZ
             ActivateSceneModule(SceneProcessing::s_sceneCoreModule);
             ActivateSceneModule(SceneProcessing::s_sceneDataModule);
             ActivateSceneModule(SceneProcessing::s_sceneBuilderModule);
-            
-            // Defaults in case there's no config setup
-            m_softNames.push_back(aznew NodeSoftNameSetting("^.*_[Ll][Oo][Dd]1(_optimized)?$", PatternMatcher::MatchApproach::Regex, "LODMesh1", true));
-            m_softNames.push_back(aznew NodeSoftNameSetting("^.*_[Ll][Oo][Dd]2(_optimized)?$", PatternMatcher::MatchApproach::Regex, "LODMesh2", true));
-            m_softNames.push_back(aznew NodeSoftNameSetting("^.*_[Ll][Oo][Dd]3(_optimized)?$", PatternMatcher::MatchApproach::Regex, "LODMesh3", true));
-            m_softNames.push_back(aznew NodeSoftNameSetting("^.*_[Ll][Oo][Dd]4(_optimized)?$", PatternMatcher::MatchApproach::Regex, "LODMesh4", true));
-            m_softNames.push_back(aznew NodeSoftNameSetting("^.*_[Ll][Oo][Dd]5(_optimized)?$", PatternMatcher::MatchApproach::Regex, "LODMesh5", true));
-            m_softNames.push_back(aznew NodeSoftNameSetting("^.*_[Pp][Hh][Yy][Ss](_optimized)?$", PatternMatcher::MatchApproach::Regex, "PhysicsMesh", true));
-            m_softNames.push_back(aznew NodeSoftNameSetting("_ignore", PatternMatcher::MatchApproach::PostFix, "Ignore", false));
-            // If the filename ends with "_anim" this will mark all nodes as "Ignore" unless they're derived from IAnimationData. This will
-            // cause only animations to be exported from the source scene file even if there's other data available.
-            m_softNames.push_back(aznew FileSoftNameSetting("_anim", PatternMatcher::MatchApproach::PostFix, "Ignore", false,
-                { FileSoftNameSetting::GraphType(SceneAPI::DataTypes::IAnimationData::TYPEINFO_Name()) }));
 
+            PopulateSoftNameSettings();
             m_UseCustomNormals = true;
         }
 
+        void SceneProcessingConfigSystemComponent::PopulateSoftNameSettings()
+        {
+            bool softNameSettingsFound = false;
+            auto settingsRegistry = AZ::SettingsRegistry::Get();
+            if (settingsRegistry)
+            {
+                softNameSettingsFound =
+                    AddSoftNameSettingsFromSettingsRegistry<NodeSoftNameSetting>(settingsRegistry, AssetProcessorDefaultNodeSoftNameSettingsKey);
+                softNameSettingsFound = softNameSettingsFound &&
+                    AddSoftNameSettingsFromSettingsRegistry<FileSoftNameSetting>(settingsRegistry, AssetProcessorDefaultFileSoftNameSettingsKey);
+            }
+
+            AZ_Warning("SceneProcessing", softNameSettingsFound,
+                "No soft name settings are found from the settings registry. If you want to customize the soft naming conventions, "
+                "Please override the default values using the Project User Registry or the global machine registry (~/.o3de/Registry/) "
+                "instead of modifying the default Gems/SceneSettings/Registry/SoftNameSettings.setreg.");
+        }
+
+        template<class SoftNameSettingsType>
+        bool SceneProcessingConfigSystemComponent::AddSoftNameSettingsFromSettingsRegistry(
+            AZ::SettingsRegistryInterface* settingsRegistry, AZStd::string_view settingRegistryKey)
+        {
+            AZStd::vector<AZStd::unique_ptr<SoftNameSettingsType>> softNameSettings;
+            if (!settingsRegistry->GetObject(softNameSettings, settingRegistryKey))
+            {
+                return false;
+            }
+
+            for (AZStd::unique_ptr<SoftNameSettingsType>& softNameSetting : softNameSettings)
+            {
+                AddSoftName(AZStd::move(softNameSetting));
+            }
+
+            return true;
+        }
+
         void SceneProcessingConfigSystemComponent::Activate()
         {
             SceneProcessingConfigRequestBus::Handler::BusConnect();
@@ -84,10 +108,6 @@ namespace AZ
 
         void SceneProcessingConfigSystemComponent::Clear()
         {
-            for (auto* softName : m_softNames)
-            {
-                delete softName;
-            }
             m_softNames.clear();
             m_softNames.shrink_to_fit();
             m_scriptConfigList.clear();
@@ -95,19 +115,19 @@ namespace AZ
             m_UseCustomNormals = true;
         }
 
-        const AZStd::vector<SoftNameSetting*>* SceneProcessingConfigSystemComponent::GetSoftNames()
+        const AZStd::vector<AZStd::unique_ptr<SoftNameSetting>>* SceneProcessingConfigSystemComponent::GetSoftNames()
         {
             return &m_softNames;
         }
 
-        bool SceneProcessingConfigSystemComponent::AddSoftName(SoftNameSetting* newSoftname)
+        bool SceneProcessingConfigSystemComponent::AddSoftName(AZStd::unique_ptr<SoftNameSetting> newSoftname)
         {
             bool success = true;
             Crc32 newHash = newSoftname->GetVirtualTypeHash();
-            for (SoftNameSetting* softName : m_softNames)
+            for (AZStd::unique_ptr<SoftNameSetting>& softName : m_softNames)
             {
                 //First check whether an item with the same CRC value already exists.
-                if (newHash == softName->GetVirtualTypeHash())
+                if (newHash == softName->GetVirtualTypeHash() && softName->GetTypeId() == newSoftname->GetTypeId())
                 {
                     AZ_Error("SceneProcessing", false, "newSoftname(%s) and existing softName(%s) have the same hash: 0x%X",
                              newSoftname->GetVirtualType().c_str(), softName->GetVirtualType().c_str(), newHash);
@@ -117,7 +137,7 @@ namespace AZ
             }
             if (success)
             {
-                m_softNames.push_back(newSoftname);
+                m_softNames.push_back(AZStd::move(newSoftname));
             }
             return success;
         }
@@ -126,27 +146,18 @@ namespace AZ
             SceneAPI::SceneCore::PatternMatcher::MatchApproach approach,
             const char* virtualType, bool includeChildren)
         {
-            SoftNameSetting* newSoftname = aznew NodeSoftNameSetting(pattern, approach, virtualType, includeChildren);
-            bool success = AddSoftName(newSoftname);
-            if (!success)
-            {
-                delete newSoftname;
-            }
-            return success;
+            AZStd::unique_ptr<SoftNameSetting> newSoftname = AZStd::make_unique<NodeSoftNameSetting>(pattern, approach, virtualType, includeChildren);
+            return AddSoftName(AZStd::move(newSoftname));
         }
 
         bool SceneProcessingConfigSystemComponent::AddFileSoftName(const char* pattern,
             SceneAPI::SceneCore::PatternMatcher::MatchApproach approach,
             const char* virtualType, bool inclusive, const AZStd::string& graphObjectTypeName)
         {
-            SoftNameSetting* newSoftname = aznew FileSoftNameSetting(pattern, approach, virtualType, inclusive,
-                { FileSoftNameSetting::GraphType(graphObjectTypeName) });
-            bool success = AddSoftName(newSoftname);
-            if (!success)
-            {
-                delete newSoftname;
-            }
-            return success;
+            AZStd::unique_ptr<SoftNameSetting> newSoftname = AZStd::make_unique<FileSoftNameSetting>(
+                pattern, approach, virtualType, inclusive,
+                std::initializer_list<FileSoftNameSetting::GraphType>{FileSoftNameSetting::GraphType(graphObjectTypeName)});
+            return AddSoftName(AZStd::move(newSoftname));
         }
 
         void SceneProcessingConfigSystemComponent::LoadScriptSettings()
@@ -244,7 +255,7 @@ namespace AZ
             if (serialize)
             {
                 serialize->Class<SceneProcessingConfigSystemComponent, AZ::Component>()
-                    ->Version(2)
+                    ->Version(3)
                     ->EventHandler<SceneProcessingConfigSystemComponentSerializationEvents>() 
                     ->Field("softNames", &SceneProcessingConfigSystemComponent::m_softNames)
                     ->Field("useCustomNormals", &SceneProcessingConfigSystemComponent::m_UseCustomNormals);

+ 15 - 5
Gems/SceneProcessing/Code/Source/Config/Components/SceneProcessingConfigSystemComponent.h

@@ -43,6 +43,9 @@ namespace AZ
         public:
             AZ_COMPONENT(SceneProcessingConfigSystemComponent, "{80FE1130-91B4-44D4-869F-859BB996161A}", AZ::SceneAPI::SceneCore::SceneSystemComponent);
 
+            static constexpr const char AssetProcessorDefaultNodeSoftNameSettingsKey[] = "/O3DE/AssetProcessor/SceneBuilder/NodeSoftNameSettings";
+            static constexpr const char AssetProcessorDefaultFileSoftNameSettingsKey[] = "/O3DE/AssetProcessor/SceneBuilder/FileSoftNameSettings";
+
             SceneProcessingConfigSystemComponent();
             ~SceneProcessingConfigSystemComponent();
 
@@ -52,7 +55,7 @@ namespace AZ
             void Clear();
 
             // SceneProcessingConfigRequestBus START
-            const AZStd::vector<SoftNameSetting*>* GetSoftNames() override;
+            const AZStd::vector<AZStd::unique_ptr<SoftNameSetting>>* GetSoftNames() override;
             bool AddNodeSoftName(const char* pattern,
                 SceneAPI::SceneCore::PatternMatcher::MatchApproach approach,
                 const char* virtualType, bool includeChildren) override;
@@ -81,9 +84,16 @@ namespace AZ
             static void GetDependentServices(ComponentDescriptor::DependencyArrayType& dependent);
 
         private:
-            /// It is the responsibility of the caller to delete newSoftname if this method returns
-            /// false.
-            bool AddSoftName(SoftNameSetting* newSoftname);
+            //unique_ptr cannot be copied -> vector of unique_ptrs cannot be copied -> class cannot be copied
+            SceneProcessingConfigSystemComponent(const SceneProcessingConfigSystemComponent&) = delete;
+
+            bool AddSoftName(AZStd::unique_ptr<SoftNameSetting> newSoftname);
+
+            void PopulateSoftNameSettings();
+
+            template<class SoftNameSettingsType>
+            bool AddSoftNameSettingsFromSettingsRegistry(
+                AZ::SettingsRegistryInterface* settingsRegistry, AZStd::string_view settingRegistryKey);
 
             void LoadScriptSettings();
 
@@ -92,7 +102,7 @@ namespace AZ
             static void DeactivateSceneModule(const AZStd::unique_ptr<DynamicModuleHandle>& module);
 
             AZStd::vector<AZ::SceneAPI::Events::ScriptConfig> m_scriptConfigList;
-            AZStd::vector<SoftNameSetting*> m_softNames;
+            AZStd::vector<AZStd::unique_ptr<SoftNameSetting>> m_softNames;
             bool m_UseCustomNormals;
         };
     } // namespace SceneProcessingConfig

+ 2 - 2
Gems/SceneProcessing/Code/Source/Config/Components/SoftNameBehavior.cpp

@@ -28,12 +28,12 @@ namespace AZ
         void SoftNameBehavior::GetVirtualTypes(AZStd::set<Crc32>& types, const SceneAPI::Containers::Scene& scene,
             SceneAPI::Containers::SceneGraph::NodeIndex node)
         {
-            const AZStd::vector<SoftNameSetting*>* softNames = nullptr;
+            const AZStd::vector<AZStd::unique_ptr<SoftNameSetting>>* softNames = nullptr;
             SceneProcessingConfigRequestBus::BroadcastResult(softNames, &SceneProcessingConfigRequestBus::Events::GetSoftNames);
 
             if (softNames)
             {
-                for (const SoftNameSetting* softName : *softNames)
+                for (const AZStd::unique_ptr<SoftNameSetting>& softName : *softNames)
                 {
                     if (types.find(softName->GetVirtualTypeHash()) != types.end())
                     {

+ 7 - 0
Gems/SceneProcessing/Code/Source/Config/SettingsObjects/FileSoftNameSetting.cpp

@@ -163,6 +163,11 @@ namespace AZ
             }
         }
 
+        const AZ::Uuid FileSoftNameSetting::GetTypeId() const
+        {
+            return azrtti_typeid<FileSoftNameSetting>();
+        }
+
         void FileSoftNameSetting::Reflect(ReflectContext* context)
         {
             GraphType::Reflect(context);
@@ -176,6 +181,8 @@ namespace AZ
                     ->Field("graphTypes", &FileSoftNameSetting::m_graphTypes)
                     ->Field("inclusiveList", &FileSoftNameSetting::m_inclusiveList);
 
+                serialize->RegisterGenericType<AZStd::vector<AZStd::unique_ptr<FileSoftNameSetting>>>();
+
                 EditContext* editContext = serialize->GetEditContext();
                 if (editContext)
                 {

+ 2 - 0
Gems/SceneProcessing/Code/Source/Config/SettingsObjects/FileSoftNameSetting.h

@@ -70,6 +70,8 @@ namespace AZ
 
             bool IsVirtualType(const SceneAPI::Containers::Scene& scene, SceneAPI::Containers::SceneGraph::NodeIndex node) const override;
 
+            const AZ::Uuid GetTypeId() const override;
+
             static void Reflect(AZ::ReflectContext* context);
 
         private:

+ 7 - 0
Gems/SceneProcessing/Code/Source/Config/SettingsObjects/NodeSoftNameSetting.cpp

@@ -31,6 +31,8 @@ namespace AZ
                     ->Version(1)
                     ->Field("includeChildren", &NodeSoftNameSetting::m_includeChildren);
 
+                serialize->RegisterGenericType<AZStd::vector<AZStd::unique_ptr<NodeSoftNameSetting>>>();
+
                 EditContext* editContext = serialize->GetEditContext();
                 if (editContext)
                 {
@@ -64,6 +66,11 @@ namespace AZ
             }
         }
 
+        const AZ::Uuid NodeSoftNameSetting::GetTypeId() const
+        {
+            return azrtti_typeid<NodeSoftNameSetting>();
+        }
+
         bool NodeSoftNameSetting::MatchesPattern(const SceneAPI::Containers::SceneGraph::Name& name) const
         {
             switch (m_pattern.GetMatchApproach())

+ 2 - 0
Gems/SceneProcessing/Code/Source/Config/SettingsObjects/NodeSoftNameSetting.h

@@ -28,6 +28,8 @@ namespace AZ
 
             bool IsVirtualType(const SceneAPI::Containers::Scene& scene, SceneAPI::Containers::SceneGraph::NodeIndex node) const override;
 
+            const AZ::Uuid GetTypeId() const override;
+
             static void Reflect(AZ::ReflectContext* context);
 
         private:

+ 2 - 0
Gems/SceneProcessing/Code/Source/Config/SettingsObjects/SoftNameSetting.h

@@ -43,6 +43,8 @@ namespace AZ
 
             virtual bool IsVirtualType(const SceneAPI::Containers::Scene& scene, SceneAPI::Containers::SceneGraph::NodeIndex node) const = 0;
 
+            virtual const AZ::Uuid GetTypeId() const = 0;
+
             static void Reflect(ReflectContext* context);
 
         protected:

+ 296 - 1
Gems/SceneProcessing/Code/Tests/SceneBuilder/SceneBuilderConfigTests.cpp

@@ -8,15 +8,22 @@
 
 #include <gmock/gmock.h>
 #include <AzTest/AzTest.h>
+#include <AzCore/Debug/TraceMessageBus.h>
 #include <AzCore/IO/FileIO.h>
+#include <AzCore/Serialization/Json/JsonSystemComponent.h>
+#include <AzCore/Serialization/Json/RegistrationContext.h>
 #include <AzCore/Settings/SettingsRegistryImpl.h>
 #include <AzCore/Settings/SettingsRegistryMergeUtils.h>
 #include <AzCore/UnitTest/Mocks/MockFileIOBase.h>
 #include <AzCore/UnitTest/TestTypes.h>
 #include <Config/Components/SceneProcessingConfigSystemComponent.h>
+#include <Config/SettingsObjects/FileSoftNameSetting.h>
+#include <Config/SettingsObjects/NodeSoftNameSetting.h>
+#include <SceneAPI/SceneCore/Containers/Scene.h>
 
 class SceneProcessingConfigTest
     : public UnitTest::LeakDetectionFixture
+    , public AZ::Debug::TraceMessageBus::Handler
 {
 public:
     void SetUp() override
@@ -24,6 +31,11 @@ public:
         m_settingsRegistry = AZStd::make_unique<AZ::SettingsRegistryImpl>();
         AZ::SettingsRegistry::Register(m_settingsRegistry.get());
 
+        m_serializeContext = AZStd::make_unique<AZ::SerializeContext>();
+        m_registrationContext = AZStd::make_unique<AZ::JsonRegistrationContext>();
+        m_settingsRegistry->SetContext(m_serializeContext.get());
+        m_settingsRegistry->SetContext(m_registrationContext.get());
+
         AZ::SettingsRegistryInterface* registry = AZ::SettingsRegistry::Get();
         auto projectPathKey = AZ::SettingsRegistryInterface::FixedValueString(AZ::SettingsRegistryMergeUtils::BootstrapSettingsRootKey) + "/project_path";
         AZ::IO::FixedMaxPath enginePath;
@@ -51,21 +63,70 @@ public:
                 return true;
             }
         );
+
+        AZ::Debug::TraceMessageBus::Handler::BusConnect();
     }
 
     void TearDown() override
     {
+        AZ::Debug::TraceMessageBus::Handler::BusDisconnect();
+
         EXPECT_EQ(m_fileIOMock.get(), AZ::IO::FileIOBase::GetInstance());
         AZ::IO::FileIOBase::SetInstance(nullptr);
         AZ::IO::FileIOBase::SetInstance(m_prevFileIO);
         m_fileIOMock.reset();
 
         AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
+
+        m_registrationContext.reset();
+        m_serializeContext.reset();
+        m_settingsRegistry.reset();
+    }
+
+
+    void ReflectTypes()
+    {
+        AZ::JsonSystemComponent::Reflect(m_registrationContext.get());
+
+        // PatternMatcher is defined in SceneCore. Avoid loading the dynamic-link library in the test by
+        // just binding the class for serialization.
+        m_serializeContext->Class<AZ::SceneAPI::SceneCore::PatternMatcher>();
+        AZ::SceneProcessingConfig::SoftNameSetting::Reflect(m_serializeContext.get());
+        AZ::SceneProcessingConfig::NodeSoftNameSetting::Reflect(m_serializeContext.get());
+        AZ::SceneProcessingConfig::FileSoftNameSetting::Reflect(m_serializeContext.get());
+    }
+
+    void RemoveReflectedTypes()
+    {
+        m_serializeContext->EnableRemoveReflection();
+        AZ::SceneProcessingConfig::FileSoftNameSetting::Reflect(m_serializeContext.get());
+        AZ::SceneProcessingConfig::NodeSoftNameSetting::Reflect(m_serializeContext.get());
+        AZ::SceneProcessingConfig::SoftNameSetting::Reflect(m_serializeContext.get());
+        m_serializeContext->Class<AZ::SceneAPI::SceneCore::PatternMatcher>();
+        m_serializeContext->DisableRemoveReflection();
+
+        m_registrationContext->EnableRemoveReflection();
+        AZ::JsonSystemComponent::Reflect(m_registrationContext.get());
+        m_registrationContext->DisableRemoveReflection();
+    }
+
+    // AZ::Debug::TraceMessageBus::Handler overrides
+    bool OnWarning(const char* window, const char* message) override
+    {
+        AZ_UNUSED(window);
+        AZ_UNUSED(message);
+
+        ++m_warningsCount;
+
+        return true;
     }
 
-    AZStd::unique_ptr<AZ::SettingsRegistryInterface> m_settingsRegistry;
+    AZStd::unique_ptr<AZ::SettingsRegistryImpl> m_settingsRegistry;
+    AZStd::unique_ptr<AZ::SerializeContext> m_serializeContext;
+    AZStd::unique_ptr<AZ::JsonRegistrationContext> m_registrationContext;
     AZStd::unique_ptr<::testing::NiceMock<AZ::IO::MockFileIOBase>> m_fileIOMock;
     AZ::IO::FileIOBase* m_prevFileIO = nullptr;
+    int m_warningsCount = 0;
 };
 
 TEST_F(SceneProcessingConfigTest, SceneProcessingConfigSystemComponent_EmptySetReg_ReturnsEmptyGetScriptConfigList)
@@ -159,3 +220,237 @@ TEST_F(SceneProcessingConfigTest, SceneProcessingConfigSystemComponent_ScriptCon
         EXPECT_TRUE(result.has_value());
     sceneProcessingConfigSystemComponent.Deactivate();
 }
+
+TEST_F(SceneProcessingConfigTest, SceneProcessingConfigSystemComponent_SoftNameSettings_MatchesSettingRegistry)
+{
+    const char* settings = R"JSON(
+    {
+        "O3DE": {
+            "AssetProcessor": {
+                "SceneBuilder": {
+                    "NodeSoftNameSettings": [
+                        {
+                            "pattern": {
+                                "pattern": "^.*_[Ll][Oo][Dd]_?1(_optimized)?$",
+                                "matcher": 2
+                            },
+                            "virtualType": "LODMesh1",
+                            "includeChildren": true
+                        }
+                    ],
+                    "FileSoftNameSettings": [
+                        {
+                            "pattern": {
+                                "pattern": "_anim",
+                                "matcher": 1
+                            },
+                            "virtualType": "Ignore",
+                            "inclusiveList": false,
+                            "graphTypes": {
+                                "types": [
+                                    {
+                                        "name": "IAnimationData"
+                                    }
+                                ]
+                            }
+                        }
+                    ]
+                }
+            }
+        }
+    }  
+    )JSON";
+    m_settingsRegistry->MergeSettings(settings, AZ::SettingsRegistryInterface::Format::JsonMergePatch);
+
+    ReflectTypes();
+
+    AZ::SceneProcessingConfig::SceneProcessingConfigSystemComponent sceneProcessingConfigSystemComponent;
+    sceneProcessingConfigSystemComponent.Activate();
+
+    const AZStd::vector<AZStd::unique_ptr<AZ::SceneProcessingConfig::SoftNameSetting>>* result = nullptr;
+    AZ::SceneProcessingConfig::SceneProcessingConfigRequestBus::BroadcastResult(
+        result,
+        &AZ::SceneProcessingConfig::SceneProcessingConfigRequests::GetSoftNames);
+    EXPECT_EQ(result->size(), 2);
+    EXPECT_EQ(result->at(0)->GetVirtualType(), "LODMesh1");
+    EXPECT_EQ(result->at(1)->GetVirtualType(), "Ignore");
+
+    sceneProcessingConfigSystemComponent.Deactivate();
+
+    RemoveReflectedTypes();
+}
+
+TEST_F(SceneProcessingConfigTest, SceneProcessingConfigSystemComponent_SoftNameSettings_AddSoftNameSettingsWithDifferentTypeIdAndSameVirtualType)
+{
+    const char* settings = R"JSON(
+    {
+        "O3DE": {
+            "AssetProcessor": {
+                "SceneBuilder": {
+                    "NodeSoftNameSettings": [
+                        {
+                            "pattern": {
+                                "pattern": "^.*_[Ll][Oo][Dd]_?1(_optimized)?$",
+                                "matcher": 2
+                            },
+                            "virtualType": "Ignore",
+                            "includeChildren": true
+                        }
+                    ],
+                    "FileSoftNameSettings": [
+                        {
+                            "pattern": {
+                                "pattern": "_anim",
+                                "matcher": 1
+                            },
+                            "virtualType": "Ignore",
+                            "inclusiveList": false,
+                            "graphTypes": {
+                                "types": [
+                                    {
+                                        "name": "IAnimationData"
+                                    }
+                                ]
+                            }
+                        }
+                    ]
+                }
+            }
+        }
+    }  
+    )JSON";
+    m_settingsRegistry->MergeSettings(settings, AZ::SettingsRegistryInterface::Format::JsonMergePatch);
+
+    ReflectTypes();
+
+    AZ::SceneProcessingConfig::SceneProcessingConfigSystemComponent sceneProcessingConfigSystemComponent;
+    sceneProcessingConfigSystemComponent.Activate();
+
+    const AZStd::vector<AZStd::unique_ptr<AZ::SceneProcessingConfig::SoftNameSetting>>* result = nullptr;
+    AZ::SceneProcessingConfig::SceneProcessingConfigRequestBus::BroadcastResult(
+        result,
+        &AZ::SceneProcessingConfig::SceneProcessingConfigRequests::GetSoftNames);
+    EXPECT_EQ(result->size(), 2);
+    EXPECT_EQ(result->at(0)->GetVirtualType(), "Ignore");
+    EXPECT_EQ(result->at(1)->GetVirtualType(), "Ignore");
+
+    sceneProcessingConfigSystemComponent.Deactivate();
+
+    RemoveReflectedTypes();
+}
+
+TEST_F(SceneProcessingConfigTest, SceneProcessingConfigSystemComponent_SoftNameSettings_IgnoreSoftNameSettingsWithSameTypeIdAndSameVirtualType)
+{
+    const char* settings = R"JSON(
+    {
+        "O3DE": {
+            "AssetProcessor": {
+                "SceneBuilder": {
+                    "NodeSoftNameSettings": [
+                        {
+                            "pattern": {
+                                "pattern": "^.*_[Ll][Oo][Dd]_?1(_optimized)?$",
+                                "matcher": 2
+                            },
+                            "virtualType": "LODMesh1",
+                            "includeChildren": true
+                        },
+                        {
+                            "pattern": {
+                                "pattern": "^.*_[Ll][Oo][Dd]_?1(_optimized)?$",
+                                "matcher": 0
+                            },
+                            "virtualType": "LODMesh1",
+                            "includeChildren": true
+                        },
+                        {
+                            "pattern": {
+                                "pattern": "^.*_[Ll][Oo][Dd]_?2(_optimized)?$",
+                                "matcher": 2
+                            },
+                            "virtualType": "LODMesh2",
+                            "includeChildren": true
+                        }
+                    ]
+                }
+            }
+        }
+    }  
+    )JSON";
+    m_settingsRegistry->MergeSettings(settings, AZ::SettingsRegistryInterface::Format::JsonMergePatch);
+
+    ReflectTypes();
+
+    AZ_TEST_START_TRACE_SUPPRESSION;
+    // Expect to get one error when adding duplicate soft name settings
+    AZ::SceneProcessingConfig::SceneProcessingConfigSystemComponent sceneProcessingConfigSystemComponent;
+    AZ_TEST_STOP_TRACE_SUPPRESSION(1);
+    sceneProcessingConfigSystemComponent.Activate();
+
+    const AZStd::vector<AZStd::unique_ptr<AZ::SceneProcessingConfig::SoftNameSetting>>* result = nullptr;
+    AZ::SceneProcessingConfig::SceneProcessingConfigRequestBus::BroadcastResult(
+        result,
+        &AZ::SceneProcessingConfig::SceneProcessingConfigRequests::GetSoftNames);
+
+    EXPECT_EQ(result->size(), 2);
+    EXPECT_EQ(result->at(0)->GetVirtualType(), "LODMesh1");
+    EXPECT_EQ(result->at(1)->GetVirtualType(), "LODMesh2");
+
+    sceneProcessingConfigSystemComponent.Deactivate();
+
+    RemoveReflectedTypes();
+}
+
+TEST_F(SceneProcessingConfigTest, SceneProcessingConfigSystemComponent_SoftNameSettings_WarningWithoutSettingsRegistry)
+{
+    // Expect to get one warning when soft name settings cannot be read from the settings registry
+    AZ::SceneProcessingConfig::SceneProcessingConfigSystemComponent sceneProcessingConfigSystemComponent;
+    EXPECT_EQ(m_warningsCount, 1);
+    sceneProcessingConfigSystemComponent.Activate();
+
+    const AZStd::vector<AZStd::unique_ptr<AZ::SceneProcessingConfig::SoftNameSetting>>* result = nullptr;
+    AZ::SceneProcessingConfig::SceneProcessingConfigRequestBus::BroadcastResult(
+        result,
+        &AZ::SceneProcessingConfig::SceneProcessingConfigRequests::GetSoftNames);
+
+    EXPECT_EQ(result->size(), 0);
+
+    sceneProcessingConfigSystemComponent.Deactivate();
+}
+
+TEST_F(SceneProcessingConfigTest, SceneProcessingConfigSystemComponent_SoftNameSettings_NoWarningWithEmptySettingsRegistry)
+{
+    const char* settings = R"JSON(
+    {
+        "O3DE": {
+            "AssetProcessor": {
+                "SceneBuilder": {
+                    "NodeSoftNameSettings": [
+                    ],
+                    "FileSoftNameSettings": [
+                    ]
+                }
+            }
+        }
+    }  
+    )JSON";
+    m_settingsRegistry->MergeSettings(settings, AZ::SettingsRegistryInterface::Format::JsonMergePatch);
+
+    ReflectTypes();
+
+    AZ::SceneProcessingConfig::SceneProcessingConfigSystemComponent sceneProcessingConfigSystemComponent;
+    EXPECT_EQ(m_warningsCount, 0);
+    sceneProcessingConfigSystemComponent.Activate();
+
+    const AZStd::vector<AZStd::unique_ptr<AZ::SceneProcessingConfig::SoftNameSetting>>* result = nullptr;
+
+    AZ::SceneProcessingConfig::SceneProcessingConfigRequestBus::BroadcastResult(
+        result,
+        &AZ::SceneProcessingConfig::SceneProcessingConfigRequests::GetSoftNames);
+
+    EXPECT_EQ(result->size(), 0);
+
+    sceneProcessingConfigSystemComponent.Deactivate();
+
+    RemoveReflectedTypes();
+}

+ 83 - 0
Gems/SceneProcessing/Registry/SoftNameSettings.setreg

@@ -0,0 +1,83 @@
+{
+    "O3DE": {
+        "AssetProcessor": {
+            "SceneBuilder": {
+                "NodeSoftNameSettings": [
+                    {
+                        "pattern": {
+                            "pattern": "^.*_[Ll][Oo][Dd]_?1(_optimized)?$",
+                            "matcher": 2
+                        },
+                        "virtualType": "LODMesh1",
+                        "includeChildren": true
+                    },
+                    {
+                        "pattern": {
+                            "pattern": "^.*_[Ll][Oo][Dd]_?2(_optimized)?$",
+                            "matcher": 2
+                        },
+                        "virtualType": "LODMesh2",
+                        "includeChildren": true
+                    },
+                    {
+                        "pattern": {
+                            "pattern": "^.*_[Ll][Oo][Dd]_?3(_optimized)?$",
+                            "matcher": 2
+                        },
+                        "virtualType": "LODMesh3",
+                        "includeChildren": true
+                    },
+                    {
+                        "pattern": {
+                            "pattern": "^.*_[Ll][Oo][Dd]_?4(_optimized)?$",
+                            "matcher": 2
+                        },
+                        "virtualType": "LODMesh4",
+                        "includeChildren": true
+                    },
+                    {
+                        "pattern": {
+                            "pattern": "^.*_[Ll][Oo][Dd]_?5(_optimized)?$",
+                            "matcher": 2
+                        },
+                        "virtualType": "LODMesh5",
+                        "includeChildren": true
+                    },
+                    {
+                        "pattern": {
+                            "pattern": "^.*_[Pp][Hh][Yy][Ss](_optimized)?$",
+                            "matcher": 2
+                        },
+                        "virtualType": "PhysicsMesh",
+                        "includeChildren": true
+                    },
+                    {
+                        "pattern": {
+                            "pattern": "^.*_[Pp][Hh][Yy][Ss](_optimized)?$",
+                            "matcher": 1
+                        },
+                        "virtualType": "Ignore",
+                        "includeChildren": false
+                    }
+                ],
+                "FileSoftNameSettings": [
+                    {
+                        "pattern": {
+                            "pattern": "_anim",
+                            "matcher": 1
+                        },
+                        "virtualType": "Ignore",
+                        "inclusiveList": false,
+                        "graphTypes": {
+                            "types": [
+                                {
+                                    "name": "IAnimationData"
+                                }
+                            ]
+                        }
+                    }
+                ]
+            }
+        }
+    }
+}