Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

GetAttributeDataArrayForAllPoints: non-float attributes have no conversion or mapping fallback

Abierto
#5 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
cpp, react-native

Línea de trabajo

Comience en cpp/draco-helpers.h comparando GetAttributeDataArrayForAllPointsHelper con GetAttributeFloatArrayForAllPoints y, después, reproduzca el fallo usando un glTF skineado comprimido con Draco y con Uint8 JOINTS_0. Se considera terminado cuando la extracción tipada admite la conversión y el mapeo no identidad, en lugar de devolver false ante discrepancias; compruebe también si los ejemplos de README deberían describir outSize como bytes.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Environment

@callstack/react-native-draco 0.3.0
three's GLTFLoader, RN 0.86, new architecture, iOS

Description

cpp/draco-helpers.h has two extraction paths that behave differently:

  • GetAttributeFloatArrayForAllPoints (float requests) walks mapped_index and falls back to pa.ConvertValue<float>() for non-float source data — it handles quantization and non-identity mapping.
  • GetAttributeDataArrayForAllPointsHelper<T> (every non-float typed request) only succeeds when pa.data_type() == type and pa.is_mapping_identity() — a direct memcpy. Any type mismatch or non-identity mapping returns false and decode fails. No ConvertValue fallback like Draco's Emscripten wrapper.

So Float32 POSITION/NORMAL/TEXCOORD works, but skinned meshes don't: JOINTS_0 is Uint8/Uint16 and WEIGHTS_0 is often quantized, so GLTFLoader requests typed arrays the helper refuses.

Minor: the outSize arguments are byte lengths (the helper asserts num * components * sizeof(T) == out_size); the README examples read like element counts.

Suggested fix: give the typed path the same ConvertValue-based extraction and non-identity mapping support the float path already has. Happy to send a PR.

Reproducible Demo

Load any Draco-compressed skinned glTF (JOINTS_0 stored as Uint8) through three's GLTFLoader wired to this module. Static meshes decode; the skinned mesh errors on attribute extraction, because GetAttributeDataArrayForAllPointsHelper<uint8_t> returns false unless the stored type and mapping match exactly.

Transparency note: this issue was drafted with AI assistance. I'm a human, I've personally verified the behavior in the source, and I'm happy to answer any questions or concerns directly. Thanks for the library.

Lenguaje dominante
C++
Estrellas
10
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de callstack/react-native-draco

Todos los issues de callstack/react-native-draco

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.