From 5b6b6985debe93d5cf9a4dba00bbc9fb80936a0c Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Tue, 16 Mar 2021 17:02:10 +0900 Subject: [PATCH] Consider the sparse accessor while migration. --- Assets/VRM10/Runtime/Migration/RotateY180.cs | 21 ++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/Assets/VRM10/Runtime/Migration/RotateY180.cs b/Assets/VRM10/Runtime/Migration/RotateY180.cs index 59d0b820a..749ddbb43 100644 --- a/Assets/VRM10/Runtime/Migration/RotateY180.cs +++ b/Assets/VRM10/Runtime/Migration/RotateY180.cs @@ -50,11 +50,24 @@ namespace UniVRM10 } var accessor = gltf.accessors[accessorIndex]; - var buffer = gltf.GetViewBytes(accessor.bufferView); - var span = VrmLib.SpanLike.Wrap(buffer); - for (int i = 0; i < span.Length; ++i) + var bufferViewIndex = -1; + if (accessor.bufferView != -1) { - span[i] = span[i].RotateY180(); + bufferViewIndex = accessor.bufferView; + } + else if (accessor.sparse?.values != null && accessor.sparse.values.bufferView != -1) + { + bufferViewIndex = accessor.sparse.values.bufferView; + } + + if (bufferViewIndex != -1) + { + var buffer = gltf.GetViewBytes(bufferViewIndex); + var span = VrmLib.SpanLike.Wrap(buffer); + for (int i = 0; i < span.Length; ++i) + { + span[i] = span[i].RotateY180(); + } } }