Ошибка THREE.CubeTextureLoader с краями 1px

Я создаю панорамный куб с помощью THREE.CubeTextureLoader:

pano = [
    'scenes/4/2048/px.jpg', 'scenes/4/2048/nx.jpg',
    'scenes/4/2048/py.jpg', 'scenes/4/2048/ny.jpg',
    'scenes/4/2048/pz.jpg', 'scenes/4/2048/nz.jpg',
];
newCubeTexture = cubeTextureLoader.load(pano);
geometry = new THREE.BoxGeometry(20000, 20000, 20000);
material = new THREE.MeshBasicMaterial({
    envMap: newCubeTexture,
    side: THREE.BackSide,
    color: 0xffffff,
    transparent: true,
    opacity: 0
});
mesh = new THREE.Mesh(geometry, material);

Но когда текстуры загружены, я вижу ошибку 1px по краям.

введите описание изображения здесь

Почему это так?

P.S. Если я загружаю текстуры для каждой стороны, используя карту, все хорошо!

new THREE.MeshBasicMaterial({
    map: new THREE.ImageUtils.loadTexture(arr[i]),
    side: THREE.BackSide,
    transparent: true,
    opacity: 0
});

person skywind    schedule 12.02.2016    source источник
comment
envMap предназначен для размышлений, а не для той цели, для которой вы его используете. Найдите skybox в примерах three.js и см. stackoverflow.com/questions/16310880/   -  person WestLangley    schedule 15.02.2016
comment
Проблема только в envMap? Могу ли я использовать cubeTextureLoader для атрибута карты и решить проблему?   -  person skywind    schedule 19.02.2016
comment
Посмотрите, как скайбокс реализован с помощью THREE.ShaderLib[ "cube" ];, на threejs.org/examples/webgl_materials_cubemap.html.   -  person WestLangley    schedule 19.02.2016


Ответы (1)


У @WestLangley есть хорошие моменты в его комментариях. В дополнение к этому, я хотел бы отметить, что метод искусственного создания гигантского ящика имеет некоторые недостатки, поскольку он все еще искажен и может быть подвержен z-борьбе на границах.

Лучшей альтернативой в современных версиях three.js является назначение CubeTexture от cubeTextureLoader.load до scene.background.

person Elias Hasle    schedule 29.10.2019