【问题标题】:Using a Texture as an Ambient map使用纹理作为环境贴图
【发布时间】: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


【解决方案1】:

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

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

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

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

three.js r.58

【讨论】:

  • 试试 AO,不确定它是否是我需要的。试图在地球上实现昼夜循环:kurst.co.uk/samples/threejs/tjsone(threeJS 版本)......所以当光线照射到地球时,它会显示一张地图,而另一张则在黑暗的一面......你可以看到它在这里工作(闪光灯版本):kurst.co.uk/samples/flightpaths ...谢谢...
猜你喜欢
  • 2019-07-31
  • 1970-01-01
  • 2018-05-24
  • 2012-11-30
  • 2017-08-10
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多