Skip to content

Commit d522ffb

Browse files
authored
Merge pull request #503 from Unity-Technologies/Ut-3303-remap-prefab-to-unity-materials
UT-3303 use Unity materials instead of FBX materials in Linked Prefab
2 parents 650d720 + e7f6df3 commit d522ffb

File tree

3 files changed

+11
-19
lines changed

3 files changed

+11
-19
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
### Fixed
55
- Blendshapes naming in FBX so that multiple blendshapes all import correctly in Maya.
66
- Don't override transforms when creating FBX Linked Prefab, so that the prefab updates properly when the FBX transforms are modified.
7+
- Changed FBX Linked Prefab to keep Unity materials instead of using materials exported to FBX file.
78

89
## [3.0.1-preview.2] - 2020-01-22
910
### Added

com.unity.formats.fbx/Editor/ConvertToNestedPrefab.cs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -934,27 +934,16 @@ internal static void CopyComponents(GameObject to, GameObject from, GameObject r
934934
}
935935

936936
FixSceneReferences(fromComponent, toComponent, root);
937-
938-
// Do not try to copy materials for ParticleSystemRenderer, since it is not in the
939-
// FBX file
940-
if (fromComponent is Renderer && !(fromComponent is ParticleSystemRenderer))
941-
{
942-
var renderer = toComponent as Renderer;
943-
var sharedMaterials = renderer.sharedMaterials;
944-
EditorJsonUtility.FromJsonOverwrite(json, toComponent);
945-
renderer.sharedMaterials = sharedMaterials;
946-
}
947-
// SkinnedMeshRenderer stores both the mesh and materials.
948-
// Make sure these do not get copied over when the SkinnedMeshRenderer is updated.
949-
else if (fromComponent is SkinnedMeshRenderer)
937+
938+
// SkinnedMeshRenderer also stores the mesh.
939+
// Make sure this is not copied over when the SkinnedMeshRenderer is updated,
940+
// as we want to keep the mesh from the FBX not the scene.
941+
if (fromComponent is SkinnedMeshRenderer)
950942
{
951943
var skinnedMesh = toComponent as SkinnedMeshRenderer;
952944
var mesh = skinnedMesh.sharedMesh;
953-
var materials = skinnedMesh.sharedMaterials;
954945
EditorJsonUtility.FromJsonOverwrite(json, toComponent);
955-
var toSkinnedMesh = toComponent as SkinnedMeshRenderer;
956-
toSkinnedMesh.sharedMesh = mesh;
957-
toSkinnedMesh.sharedMaterials = materials;
946+
skinnedMesh.sharedMesh = mesh;
958947
}
959948
else
960949
{

com.unity.formats.fbx/Tests/FbxTests/ConvertToModelTest.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,17 @@ protected void AssertSameMeshesAndMaterials(GameObject expectedHierarchy, GameOb
107107
{
108108
Assert.That(actualSkinnedMesh);
109109
Assert.That(expectedSkinnedMesh.sharedMesh, Is.EqualTo(actualSkinnedMesh.sharedMesh));
110-
Assert.That(expectedSkinnedMesh.sharedMaterial, Is.EqualTo(actualSkinnedMesh.sharedMaterial));
110+
// material should not equal what is in the FBX, but what was originally in the scene
111+
Assert.That(expectedSkinnedMesh.sharedMaterial, Is.Not.EqualTo(actualSkinnedMesh.sharedMaterial));
111112
}
112113

113114
var expectedRenderer = expectedHierarchy.GetComponent<Renderer>();
114115
var actualRenderer = actualHierarchy.GetComponent<Renderer>();
115116
if (expectedRenderer)
116117
{
117118
Assert.That(actualRenderer);
118-
Assert.That(expectedRenderer.sharedMaterial, Is.EqualTo(actualRenderer.sharedMaterial));
119+
// material should not equal what is in the FBX, but what was originally in the scene
120+
Assert.That(expectedRenderer.sharedMaterial, Is.Not.EqualTo(actualRenderer.sharedMaterial));
119121
}
120122

121123
var expectedTransform = expectedHierarchy.transform;

0 commit comments

Comments
 (0)