diff --git a/Assets/UniGLTF/Runtime/UniGLTF/Format/GltfSerializer.g.cs b/Assets/UniGLTF/Runtime/UniGLTF/Format/GltfSerializer.g.cs index 7d609c04d..502aec107 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/Format/GltfSerializer.g.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/Format/GltfSerializer.g.cs @@ -277,9 +277,9 @@ public static void Serialize_gltf_accessors_ITEM(JsonFormatter f, glTFAccessor v f.Value(value.bufferView.Value); } - if(value.byteOffset>=0){ + if(value.byteOffset.HasValue){ f.Key("byteOffset"); - f.Value(value.byteOffset); + f.Value(value.byteOffset.Value); } if(!string.IsNullOrEmpty(value.type)){ diff --git a/Assets/UniGLTF/Runtime/UniGLTF/Format/glTFBuffer.cs b/Assets/UniGLTF/Runtime/UniGLTF/Format/glTFBuffer.cs index e153baf7c..99b5b8a4c 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/Format/glTFBuffer.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/Format/glTFBuffer.cs @@ -96,7 +96,7 @@ namespace UniGLTF public int? bufferView; [JsonSchema(Minimum = 0, Dependencies = new string[] { "bufferView" })] - public int byteOffset; + public int? byteOffset; [JsonSchema(Required = true, EnumValues = new object[] { "SCALAR", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4" }, EnumSerializationType = EnumSerializationType.AsString)] public string type; diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/ExportingGltfData.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/ExportingGltfData.cs index b5d535cc5..1788c7cd1 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/ExportingGltfData.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/ExportingGltfData.cs @@ -115,7 +115,7 @@ namespace UniGLTF var accessorIndex = Gltf.accessors.Count; Gltf.accessors.Add(new glTFAccessor { - byteOffset = 0, + byteOffset = default, componentType = glTFExtensions.GetComponentType(), type = glTFExtensions.GetAccessorType(), count = accessorCount, diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs index 2d1de97b7..6e4feffe4 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs @@ -166,7 +166,7 @@ namespace UniGLTF NativeArray GetTypedFromAccessor(glTFAccessor accessor, glTFBufferView view) where T : struct { var bytes = GetBytesFromBufferView(view); - return bytes.GetSubArray(accessor.byteOffset, bytes.Length - accessor.byteOffset).Reinterpret(1).GetSubArray(0, accessor.count); + return bytes.GetSubArray(accessor.byteOffset.GetValueOrDefault(), bytes.Length - accessor.byteOffset.GetValueOrDefault()).Reinterpret(1).GetSubArray(0, accessor.count); } /// @@ -209,7 +209,7 @@ namespace UniGLTF { var accessor = GLTF.accessors[accessorIndex]; var view = GLTF.bufferViews[accessor.bufferView.Value]; - return GetIntIndicesFromView(view, accessor.count, accessor.byteOffset, accessor.componentType); + return GetIntIndicesFromView(view, accessor.count, accessor.byteOffset.GetValueOrDefault(), accessor.componentType); } public NativeArray GetArrayFromAccessor(int accessorIndex) where T : struct @@ -281,7 +281,7 @@ namespace UniGLTF { var view = GLTF.bufferViews[vertexAccessor.bufferView.Value]; var segment = GetBytesFromBuffer(view.buffer); - result = segment.GetSubArray(view.byteOffset + vertexAccessor.byteOffset, vertexAccessor.count * 4 * vertexAccessor.TypeCount).Reinterpret(1); + result = segment.GetSubArray(view.byteOffset + vertexAccessor.byteOffset.GetValueOrDefault(), vertexAccessor.count * 4 * vertexAccessor.TypeCount).Reinterpret(1); } else { diff --git a/Assets/VRM10/Runtime/IO/Vrm10ImportData.cs b/Assets/VRM10/Runtime/IO/Vrm10ImportData.cs index 10a6bcd42..c829ffadc 100644 --- a/Assets/VRM10/Runtime/IO/Vrm10ImportData.cs +++ b/Assets/VRM10/Runtime/IO/Vrm10ImportData.cs @@ -136,7 +136,7 @@ namespace UniVRM10 { var buffer = m_data.Bin; var byteSize = accessor.CalcByteSize(); - bytes = m_data.Bin.GetSubArray(view.byteOffset, view.byteLength).GetSubArray(accessor.byteOffset, byteSize); + bytes = m_data.Bin.GetSubArray(view.byteOffset, view.byteLength).GetSubArray(accessor.byteOffset.GetValueOrDefault(), byteSize); } } @@ -268,7 +268,7 @@ namespace UniVRM10 // IndexBufferが連続して格納されている => Slice でいける var firstAccessor = Gltf.accessors[accessorIndices[0]]; var firstView = Gltf.bufferViews[firstAccessor.bufferView.Value]; - var start = firstView.byteOffset + firstAccessor.byteOffset; + var start = firstView.byteOffset + firstAccessor.byteOffset.GetValueOrDefault(); if (!firstView.buffer.TryGetValidIndex(Gltf.buffers.Count, out int firstViewBufferIndex)) { throw new Exception(); @@ -302,7 +302,7 @@ namespace UniVRM10 } var buffer = Gltf.buffers[viewBufferIndex]; var bin = GetBufferBytes(buffer); - var start = view.byteOffset + accessor.byteOffset; + var start = view.byteOffset + accessor.byteOffset.GetValueOrDefault(); var bytes = bin.GetSubArray(start, accessor.count * accessor.GetStride()); var dst = indices.Reinterpret(1).GetSubArray(offset, accessor.count); offset += accessor.count;