@@ -858,7 +858,9 @@ Error GLTFDocument::_encode_buffer_views(Ref<GLTFState> p_state) {
858858 d[" buffer" ] = buffer_view->buffer ;
859859 d[" byteLength" ] = buffer_view->byte_length ;
860860
861- d[" byteOffset" ] = buffer_view->byte_offset ;
861+ if (buffer_view->byte_offset > 0 ) {
862+ d[" byteOffset" ] = buffer_view->byte_offset ;
863+ }
862864
863865 if (buffer_view->byte_stride != -1 ) {
864866 d[" byteStride" ] = buffer_view->byte_stride ;
@@ -937,7 +939,9 @@ Error GLTFDocument::_encode_accessors(Ref<GLTFState> p_state) {
937939 d[" min" ] = accessor->min ;
938940 if (accessor->buffer_view != -1 ) {
939941 // bufferView may be omitted to zero-initialize the buffer. When this happens, byteOffset MUST also be omitted.
940- d[" byteOffset" ] = accessor->byte_offset ;
942+ if (accessor->byte_offset > 0 ) {
943+ d[" byteOffset" ] = accessor->byte_offset ;
944+ }
941945 d[" bufferView" ] = accessor->buffer_view ;
942946 }
943947
@@ -948,15 +952,15 @@ Error GLTFDocument::_encode_accessors(Ref<GLTFState> p_state) {
948952 Dictionary si;
949953 si[" bufferView" ] = accessor->sparse_indices_buffer_view ;
950954 si[" componentType" ] = accessor->sparse_indices_component_type ;
951- if (accessor->sparse_indices_byte_offset != - 1 ) {
955+ if (accessor->sparse_indices_byte_offset > 0 ) {
952956 si[" byteOffset" ] = accessor->sparse_indices_byte_offset ;
953957 }
954958 ERR_FAIL_COND_V (!si.has (" bufferView" ) || !si.has (" componentType" ), ERR_PARSE_ERROR);
955959 s[" indices" ] = si;
956960
957961 Dictionary sv;
958962 sv[" bufferView" ] = accessor->sparse_values_buffer_view ;
959- if (accessor->sparse_values_byte_offset != - 1 ) {
963+ if (accessor->sparse_values_byte_offset > 0 ) {
960964 sv[" byteOffset" ] = accessor->sparse_values_byte_offset ;
961965 }
962966 ERR_FAIL_COND_V (!sv.has (" bufferView" ), ERR_PARSE_ERROR);
0 commit comments