我使用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
});
@@ WestLangley在他的评论中有很好的观点。除了这些之外,我想指出的是,人为地创建巨型盒子的方法还存在一些缺点,因为它仍然会变形,并且容易在边界上进行Z角战斗。
[Three.js的现代版本中更好的替代方法是将CubeTexture
从cubeTextureLoader.load
分配给scene.background
。