0

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

如何使用纹理作为环境贴图?

感谢您的帮助 !

4

1 回答 1

1

我假设您正在尝试实现环境光遮蔽。

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

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

第三种选择是将 AO 贴图视为光照贴图。MeshPhongMaterial支持光照贴图,它只是不支持置换贴图,你似乎并没有使用它。

三.js r.58

于 2013-05-15T23:58:07.230 回答