使用纹理作为环境贴图

时间:2013-05-15 17:18:38

标签: three.js

我希望在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 );

如何将纹理用作环境贴图?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我假设您正在尝试实施环境遮挡。

您已使用“普通”着色器,它支持AO贴图。您所要做的就是启用并分配您的AO地图。

另一种方法是将AO烘焙到漫反射贴图中。

第三种选择是将AO地图视为lightMap。 MeshPhongMaterial支持光照贴图,它不支持置换贴图,无论如何都不会使用它。

three.js r.58