fixed
ViroReact 3.1.1: Quest store fix and glTF materials
about 6 hours ago by ReadMe API
Meta Quest builds pass the Horizon Store's upload check again, and glTF models now render the way glTF defines them on every platform. Metals look metallic without an environment map, visionOS draws a model's normal, metallic-roughness, occlusion and emissive maps, and mirrored nodes draw their faces. Renderer binaries are rebuilt on virocore 3.1.1, and the web build uses @reactvision/viro-web-renderer 1.1.1. There are no new props or APIs. Read Check when upgrading before you update.
Meta Quest
- Store uploads pass again. The Expo plugin declares
com.oculus.permission.HAND_TRACKINGnext tohorizonos.permission.HAND_TRACKING. 3.0.3 had dropped the old name, and the Horizon Store refuses an app that declares hand tracking without it. Horizon OS treats the two as one permission. - No more
WRITE_EXTERNAL_STORAGE. The plugin now removes it from Quest builds, whichever library declares it. It gives a Quest app no storage access, and Meta's review asks you to justify every permission you declare.
Re-run npx expo prebuild to pick up both. See HorizonOS Setup Guide.
glTF rendering, everywhere
- Metal surfaces look metallic without an environment map. The flat ambient light used to light them like matte paint.
normalTexture.scaleandocclusionTexture.strengthapply.- An occlusion map on its own UV set (
TEXCOORD_1, a lightmap) samples that set. Not yet on visionOS, where such a map is left out. - Mirrored nodes (negative scale) in a GLB draw their faces.
visionOS
Viro3DObjectdraws a glTF model's normal, metallic-roughness, occlusion and emissive maps. It used to draw the base color only, so textured models looked flat.
Check when upgrading
- A metallic model without a
lightingEnvironmentlooks darker than in 3.1.0. This matches how glTF and three.js light it. Give metallic models a ViroLightingEnvironment.