我正在尝试使用Three.js创建一个简单的Skybox,但遇到了一个问题,我应用于立方体的纹理只在立方体的外部工作,而不显示在立方体的内部。
这是我的skybox代码:
var path = assetPath + skyboxPrefix;
var urls = [ path + 'alpine_front.jpg',
path + 'alpine_back.jpg',
path + 'alpine_left.jpg',
path + 'alpine_right.jpg',
path + 'alpine_top.jpg' ];
var cubeTexture = THREE.ImageUtils.loadTextureCube( urls );
var shader = THREE.ShaderUtils.lib["cube"];
shader.uniforms["tCube"].texture = cubeTexture;
var skyboxMaterial = new THREE.ShaderMaterial( {
uniforms : shader.uniforms,
fragmentShader : shader.fragmentShader,
vertexShader : shader.vertexShader,
depthWrite : false
} );
var skyboxGeom = new THREE.CubeGeometry( 10000, 10000, 10000 );
skybox = new THREE.Mesh( skyboxGeom, skyboxMaterial );
skybox.flipSided = true;
scene.add(skybox);这是一个实时版本的http://projects.harrynorthover.com/landscape/src/
非常感谢大家的支持!
发布于 2012-10-01 19:07:14
自从r50之后,object.flipSided就消失了。它被object.material = THREE.BackSide取代了。在这种情况下,检查updated examples that use the same feature和这个migration页面应该很方便。
发布于 2012-10-01 17:11:21
我还在其他示例中看到过"flipSided“开关,但没有让它工作(可能已经过时了)。对我有效的(对于球体)是设置负比例:
skybox.scale.x = -1;https://stackoverflow.com/questions/12670183
复制相似问题