2013-07-02 7 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; 

Но это Doesn `T работу, кто-нибудь есть ключ?

С наилучшими пожеланиями

ответ

0

repeat.x и repeat.y определяют, сколько раз текстура должна быть повторена на лице. В вашем случае 100x100 раз. Попробуйте установить оба значения в 2 и посмотреть, работает ли это

+0

Я пробовал, но по-прежнему геометрия исчезает, и я ничего не вижу. Может быть, мне нужно заменить «tNormal» другим термином? – user2524500