【发布时间】:2015-08-05 22:31:26
【问题描述】:
我希望在 Three.JS 中使用纹理作为环境贴图 - 我不确定如何实现这一点。到目前为止,这是我的材料的代码:
var shader : THREE.Shader = THREE.ShaderLib[ "normalmap" ];
var uniforms : THREE.Uniforms = THREE.UniformsUtils.clone( shader.uniforms );
uniforms[ "enableAO" ].value = false;
uniforms[ "enableDiffuse" ].value = true;
uniforms[ "enableSpecular" ].value = true;
uniforms[ "enableReflection" ].value = true;
uniforms[ "enableDisplacement" ].value = false;
uniforms[ "tNormal" ].value = THREE.ImageUtils.loadTexture( this.earthMaterials.earthNormal );
uniforms[ "tDiffuse" ].value = THREE.ImageUtils.loadTexture( this.earthMaterials.earthMap );
uniforms[ "tSpecular" ].value = THREE.ImageUtils.loadTexture( this.earthMaterials.earthMap );
uniforms[ "uNormalScale" ].value.set( this.earthMaterials.normalScale, this.earthMaterials.normalScale );
uniforms[ "uDiffuseColor" ].value.convertGammaToLinear();
uniforms[ "uSpecularColor" ].value.convertGammaToLinear();
uniforms[ "uAmbientColor" ].value.convertGammaToLinear();
var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights: true, fog: false };
this.earthNormal = new THREE.ShaderMaterial( parameters );
如何使用纹理作为环境贴图?
感谢您的帮助!
【问题讨论】:
-
这里没有问题。
-
啊 - 抱歉(多么尴尬)...编辑了我的帖子...谢谢...
-
你的意思是环境遮挡贴图吗?展示一个活生生的例子来说明你到目前为止所做的工作,然后提出一个具体的问题。
-
.... 为了在我的 GeoGlobe 上实现日/夜循环(这里:kurst.co.uk/samples/flightpaths),我使用纹理作为环境贴图。所以,当环境光照射到地球上时,它会显示一个纹理(夜晚),否则它会显示地球/白天的纹理......我正在尝试在 three.js 中实现类似的东西......希望这会有所帮助......再次感谢...... ..
-
这是迄今为止我的 Three.Js 实现的一个活生生的例子:kurst.co.uk/samples/threejs/tjsone
标签: three.js