我希望在Three.JS中使用纹理作为Ambient地图 - 并且我不确定如何实现它。这是我目前的材料代码:
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 );
如何将纹理用作环境贴图?
感谢您的帮助!
答案 0 :(得分:1)
我假设您正在尝试实施环境遮挡。
您已使用“普通”着色器,它支持AO贴图。您所要做的就是启用并分配您的AO地图。
另一种方法是将AO烘焙到漫反射贴图中。
第三种选择是将AO地图视为lightMap。 MeshPhongMaterial
支持光照贴图,它不支持置换贴图,无论如何都不会使用它。
three.js r.58