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 работу, кто-нибудь есть ключ?
С наилучшими пожеланиями
Я пробовал, но по-прежнему геометрия исчезает, и я ничего не вижу. Может быть, мне нужно заменить «tNormal» другим термином? – user2524500