2013-05-15 69 views
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); 

如何將紋理用作環境貼圖?

謝謝你的幫助!

+0

這裏沒有問題。 – gaitat

+0

啊 - 對不起(多麼尷尬)......編輯我的帖子......謝謝...... – user2386872

+1

你的意思是環境遮擋貼圖嗎?展示你迄今爲止工作的一個實例,然後詢問關於它的具體問題。 – WestLangley

回答

1

我假設你正試圖實現環境遮擋。

您已經使用「正常」着色器,並且它支持AO映射。你所要做的就是啓用並分配你的AO地圖。

另一種方法是將AO烘焙到漫反射貼圖中。

第三種選擇是將AO映射視爲lightMap。 MeshPhongMaterial支持光照貼圖,它只是不支持位移貼圖,您似乎並未使用它。

three.js所r.58

+0

給AO一個去,不知道這是我所需要的。試圖在地球上實施日/夜週期:http://kurst.co.uk/samples/threejs/tjsone/(threeJS版本)...因此,當光線撞擊地球時,它會顯示一張地圖,另一個地圖黑暗的一面..你可以看到它在這裏工作(Flash版本):http://kurst.co.uk/samples/flightpaths ...謝謝... – user2386872