From 58d6e2e3313384284849dcf60e6c8902283c875b Mon Sep 17 00:00:00 2001 From: tsgcpp <19503967+tsgcpp@users.noreply.github.com> Date: Sat, 30 Dec 2023 00:43:18 +0900 Subject: [PATCH] fix: Use zero as view.byteOffset if view.byteOffset is null --- Assets/VRM10/Runtime/IO/Vrm10ImportData.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Assets/VRM10/Runtime/IO/Vrm10ImportData.cs b/Assets/VRM10/Runtime/IO/Vrm10ImportData.cs index c7e395b00..3de9f3a3a 100644 --- a/Assets/VRM10/Runtime/IO/Vrm10ImportData.cs +++ b/Assets/VRM10/Runtime/IO/Vrm10ImportData.cs @@ -255,7 +255,8 @@ namespace UniVRM10 { var firstAccessor = Gltf.accessors[accessorIndices[0]]; var firstView = Gltf.bufferViews[firstAccessor.bufferView.Value]; - var start = firstView.byteOffset + firstAccessor.byteOffset; + var firstAccessorByteOffset = firstAccessor.byteOffset.GetValueOrDefault(); + var start = firstView.byteOffset + firstAccessorByteOffset; var pos = start; foreach (var i in accessorIndices) { @@ -264,18 +265,20 @@ namespace UniVRM10 { throw new ArgumentException($"accessor.type: {current.type}"); } + if (firstAccessor.componentType != current.componentType) { return false; } var view = Gltf.bufferViews[current.bufferView.Value]; - if (pos != view.byteOffset + current.byteOffset) + var currentAccessorByteOffset = current.byteOffset.GetValueOrDefault(); + if (pos != view.byteOffset + currentAccessorByteOffset) { return false; } - var begin = view.byteOffset + current.byteOffset; + var begin = view.byteOffset + currentAccessorByteOffset; var byteLength = current.CalcByteSize(); pos += byteLength;