2013-07-02 128 views
1

我發現瀰漫,鏡面反射和法線貼圖這個例子:three.js所平鋪

var ambient = 0x111111, diffuse = 0xbbbbbb, specular = 0x060606, shininess = 35; 

       var shader = THREE.ShaderLib[ "normalmap" ]; 
       var uniforms = THREE.UniformsUtils.clone(shader.uniforms); 

       uniforms[ "tNormal" ].value = THREE.ImageUtils.loadTexture("textures/test_NRM.jpg"); 
       uniforms[ "uNormalScale" ].value.set(2, 2); 
       uniforms[ "tDiffuse" ].value = THREE.ImageUtils.loadTexture("textures/test_COL.jpg"); 
       uniforms[ "tSpecular" ].value = THREE.ImageUtils.loadTexture("textures/test_SPEC.jpg"); 

       uniforms[ "enableAO" ].value = false; 
       uniforms[ "enableDiffuse" ].value = true; 
       uniforms[ "enableSpecular" ].value = true; 

       uniforms[ "uDiffuseColor" ].value.setHex(diffuse); 
       uniforms[ "uSpecularColor" ].value.setHex(specular); 
       uniforms[ "uAmbientColor" ].value.setHex(ambient); 

       uniforms[ "uShininess" ].value = shininess; 

       uniforms[ "wrapRGB" ].value.set(1, 1,1); 

       var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights: true }; 
       var material = new THREE.ShaderMaterial(parameters); 

       material.wrapAround = true; 

       loader = new THREE.JSONLoader(true); 
       document.body.appendChild(loader.statusDomElement); 

       loader.load("geo/sphere.js", function(geometry) { createScene(geometry, 100, material) }); 

       renderer = new THREE.WebGLRenderer({ antialias: false, clearColor: 0x111111, clearAlpha: 1 }); 
       renderer.setSize(window.innerWidth, window.innerHeight); 
       container.appendChild(renderer.domElement); 

現在我看到顯示在我的球紋理,但只有一次。我需要更多的貼圖顯示紋理和我插入:

tNormal.wrapS = THREE.RepeatWrapping; 
tNormal.wrapT = THREE.RepeatWrapping; 
tNormal.repeat.x=100; 
tNormal.repeat.y=100; 

但它沒有工作,有沒有人有線索?

問候

回答

0

的repeat.x和repeat.y確定紋理需要多少次在臉上重複。在你的情況下100x100次。嘗試設置兩個值爲2,看看是否可行

+0

我已經嘗試過,但像之前幾何消失,我什麼都看不到。也許我必須用另一個術語代替「tNormal」? – user2524500