GetAttributeDataArrayForAllPoints: non-float attributes have no conversion or mapping fallback
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
- Área
- computer-graphics, mobile-dev
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) walksmapped_indexand falls back topa.ConvertValue<float>()for non-float source data — it handles quantization and non-identity mapping.GetAttributeDataArrayForAllPointsHelper<T>(every non-float typed request) only succeeds whenpa.data_type() == typeandpa.is_mapping_identity()— a directmemcpy. Any type mismatch or non-identity mapping returnsfalseand decode fails. NoConvertValuefallback 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
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de callstack/react-native-draco
-
Android module is the create-react-native-library stub — Draco decode is unimplemented on AndroidAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Todos los issues de callstack/react-native-draco
Issues similares
-
Dificultad 2/5 Medio día Aptitud para principiantes 84/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
ROCm/rocm-libraries#12703 ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
isl-org/Open3D#7585 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Feature request
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
qbittorrent/qBittorrent#24975 ·
Los mantenedores suelen responder en 3 días