这个报错是因为在使用three.js的WebGLRenderer渲染器时,传入的图片尺寸不是2的幂次方(例如:2、4、8、16、32、64等),导致被自动调整为最接近的2的幂次方尺寸。

要解决这个问题,你可以按照以下两种方式之一进行操作:

  1. 调整图片的尺寸:将图片的尺寸调整为2的幂次方尺寸(例如:512x256),然后再传入WebGLRenderer进行渲染。

  2. 使用纹理贴图:如果你正在将该图片作为纹理贴图使用,可以使用three.js中的TextureLoader加载纹理时,设置参数powerOfTwo为true,这样three.js会自动将非2的幂次方尺寸的图片调整为最接近的2的幂次方尺寸。示例代码如下:

var loader = new THREE.TextureLoader();
loader.load(
    'path/to/your/image.jpg',
    function (texture) {
        // 设置参数powerOfTwo为true
        texture.needsUpdate = true;
        var material = new THREE.MeshBasicMaterial({ map: texture });
        // 使用纹理贴图创建物体
        var mesh = new THREE.Mesh(geometry, material);
        scene.add(mesh);
    },
    undefined,
    function (error) {
        console.error('An error happened when loading the texture', error);
    }
);

使用上述方法之一,你就可以解决这个报错并正常渲染图片了

threejs17823 THREEWebGLRenderer image is not power of two 400x300 Resized to 512x256 这个报错怎么解决

原文地址: https://www.cveoy.top/t/topic/iwzR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录