记一次使用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范围内,但是这属于正常操作,一般我们在输出颜色值的时候,都会将其钳制在限定范围内,所以我觉得这个报错应该不是导致问题出现的报错
[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 的幂纹理只能使用NEAREST
和LINEAR
过滤,且不会生成贴图。此外,平铺模式也必须设置为CLAMP_TO_EDGE
。另一方面,如果纹理在两个维度上都是 2 的幂,那么 WebGL 就可以使用更高质量的过滤,可以使用贴图,还能够将平铺模式设置为REPEAT
或MIRRORED_REPEAT
。
最终测试得出,在Web中使用非二次幂像素大小的纹理时,不能对纹理做操作(叠加颜色等),否则就会报错无法显示,所以建模一定要规范啊