Повторите текстуру с помощью ShaderMaterials в three.js

У меня проблема с однородными текстурами и их повторением, потому что с:

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

это не работает Поэтому я искал в Интернете решение и обнаружил следующую ветку на giuthub: https://github.com/mrdoob/three.js/issues/787 Автор темы имеет ту же проблему, что и я, но, к сожалению, ссылки с ответы больше не работают.

Что мне делать, если я хочу, чтобы мои однородные текстуры повторялись?

1 ответ

Вы пишете свой собственный фрагментный шейдер? Если это так, вам нужно умножить координаты UV на значения повторения, например

uniform sampler2D baseTexture;
varying vec2 vUv;

void main() 
{
    gl_FragColor = texture2D( baseTexture, vUv * 100 );     
}

Если нет, http://stemkoski.github.io/Three.js/Texture-Repeat.html содержит пример повторения текстуры, например

// texture repeated twice in each direction
var lavaTexture = THREE.ImageUtils.loadTexture( 'images/lava.jpg' );
lavaTexture.wrapS = lavaTexture.wrapT = THREE.RepeatWrapping;
lavaTexture.repeat.set( 2, 2 );
var lavaMaterial = new THREE.MeshBasicMaterial( { map: lavaTexture } ); 
Другие вопросы по тегам