记一次使用xr-frame,中遇到的模型问题

0.参考文档:

在 WebGL 中使用纹理 - Web API 接口参考 | MDN (mozilla.org)

在使用微信小程序的xr-frame渲染GLTF模型时,发现一个模型无法显示,并且报了以下错误

报错代码:

Unhandled promise rejection GLTF validation failed at [AccessorNote]:[10602] Normalized accessors are not supported

提示GLB模型中包含了一个归一化的访问器,但是微信小程序不支持归一化的访问器,打开模型文件,发现其材质节点中添加了一个MixVertexColor的节点,并且勾选了钳制,将颜色钳制在了0-1范围内,但是这属于正常操作,一般我们在输出颜色值的时候,都会将其钳制在限定范围内,所以我觉得这个报错应该不是导致问题出现的报错

img

img

[xr-frame] [GLTF] A non-pot(power-of-two) texture uses WrapMode other than CLAMP_TO_EDGE,auto correction is applied to avoid misrendering

这个代码提示模型没有使用2的幂次方纹理并且纹理包裹模式不是 CLAMP_TO_EDGE

查了一下发现

WebGL1 中,对于非 2 的幂纹理只能使用 NEARESTLINEAR 过滤,且不会生成贴图。此外,平铺模式也必须设置为 CLAMP_TO_EDGE。另一方面,如果纹理在两个维度上都是 2 的幂,那么 WebGL 就可以使用更高质量的过滤,可以使用贴图,还能够将平铺模式设置为 REPEATMIRRORED_REPEAT

最终测试得出,在Web中使用非二次幂像素大小的纹理时,不能对纹理做操作(叠加颜色等),否则就会报错无法显示,所以建模一定要规范啊

最后修改:2023 年 09 月 13 日
如果觉得我的文章对你有用,请随意赞赏