From 6199307569e3272dad92a5dd7f7339dedc5bb0ea Mon Sep 17 00:00:00 2001 From: Jiaqi Liu Date: Thu, 27 Jul 2023 21:46:38 -0700 Subject: [PATCH] Update SkeletalModelRenderer.cs --- .../Pal3/Renderer/SkeletalModelRenderer.cs | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/Pal3/Renderer/SkeletalModelRenderer.cs b/Assets/Scripts/Pal3/Renderer/SkeletalModelRenderer.cs index a65f8ec2a..bf0899389 100644 --- a/Assets/Scripts/Pal3/Renderer/SkeletalModelRenderer.cs +++ b/Assets/Scripts/Pal3/Renderer/SkeletalModelRenderer.cs @@ -82,6 +82,7 @@ public class SkeletalModelRenderer : MonoBehaviour, IDisposable private readonly Dictionary _bones = new (); + private GameObject _rootBoneObject; private GameObject[] _meshObjects; private RenderMeshComponent[] _renderMeshComponents; @@ -252,7 +253,11 @@ private void SetupBone(BoneNode boneNode, Bone parentBone) Bone bone = new (boneNode.Name, boneGo, boneNode); - if (parentBone != null) + if (parentBone == null) + { + _rootBoneObject = boneGo; + } + else { _bones.Add(boneNode.Id, bone); Matrix4x4 translationMatrix = Matrix4x4.Translate(boneNode.Translation); @@ -323,18 +328,23 @@ private void RenderSubMesh(MshMesh subMesh, int subMeshIndex) Vector3[] verts = vertices.ToArray(); int[] tris = triangles.ToArray(); - Vector2[] uvsArray = uvs.ToArray(); + Vector2[] uvs1 = uvs.ToArray(); + Vector2[] uvs2 = null; var meshRenderer = _meshObjects[subMeshIndex].AddComponent(); Mesh renderMesh = meshRenderer.Render( ref verts, ref tris, ref normals, - ref uvsArray, - ref uvsArray, + ref uvs1, + ref uvs2, ref materials, true); + renderMesh.RecalculateNormals(); + renderMesh.RecalculateTangents(); + renderMesh.RecalculateBounds(); + _renderMeshComponents[subMeshIndex] = new RenderMeshComponent { Mesh = renderMesh, @@ -448,6 +458,12 @@ public void Dispose() _bones.Clear(); } + if (_rootBoneObject != null) + { + Destroy(_rootBoneObject); + _rootBoneObject = null; + } + _indexBuffer.Clear(); _vertexBuffer.Clear(); }