Мозаика текстур 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;

Но это не работает, кто-нибудь знает?

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


person user2524500    schedule 02.07.2013    source источник


Ответы (1)


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

person Chris Laarman    schedule 02.07.2013
comment
Пробовал, но как и раньше пропадает геометрия и ничего не вижу. Может быть, мне нужно заменить tNormal другим термином? - person user2524500; 03.07.2013