Three.JS: Как да накарам текстурите да се припокриват?

TL;DR: Как да направя текстурите да изглеждат по-големи от лицата, към които са прикрепени, с ефект на избледняване, така че всички текстури да се припокриват?

-

Изучаване на three.js, като се опитвате да пресъздадете играта Warzone 2100. :)

Зареждам текстура по подразбиране за земята с:

var texture = THREE.ImageUtils.loadTexture('tile-53.png'); // Specify file
texture.wrapS = texture.wrapT = THREE.RepeatWrapping; // Make the texture repeat
texture.repeat.set(map_width, map_height); // Repeat for every face
texture.anisotropy = 100; // Disable anisoptropy

В момента изглежда така. Сега го сравнете с това.

Warzone 2100 най-накрая започна да изглежда добре с новия рендър, особено защото те направиха текстурите да изглеждат по-големи от лицата и да се припокриват една друга, правейки острите граници да изчезнат. Възможно ли е да се постигне същия ефект с three.js и ако е така, как да отида там?


person user2337969    schedule 21.08.2013    source източник


Отговори (1)


Текстурата е нещо, което е свързано с нейната геометрия на първо място (говорейки за 3D), така че да накарате самата текстура да се припокрива с други текстури не е съвсем възможно. Можете обаче перфектно да направите вашите геометрии да се припокриват една с друга.

За да изглеждат текстурите ви „по-големи“, опитайте да погледнете тук.

person Alex Under    schedule 21.08.2013
comment
Благодаря за линка. За съжаление вече го открих, но не помогна. Не разбирам какво прави, но поне не може да помогне с това, което искам. Въпреки това разбирам какво имате предвид с припокриващи се геометрии в смисъл, че не използвам една равнинаGeometry, а хиляди малки. Но няма ли това да унищожи картата, тъй като ще има ръбове навсякъде, правейки откриването на сблъсък невъзможно? Тъй като геометрията трябва да е по-голяма, отколкото трябва да бъде за картата... Може би трябва да попитам разработчиците на Warzone 2100 как са го направили и да се опитам да го пресъздам в ThreeJS. - person user2337969; 22.08.2013
comment
Когато започнах да разработвам игри, начинът, по който го направихме, беше следният: генерирахме релефна мрежа за нашата игрова сцена от растерно изображение и след това приложихме към него няколко текстури, всяка от които покриваше целия терен. По този начин изглеждаше доста подобно на вашето изображение от Warzone. Така че, предполагам, в three.js бихте могли да направите точно същото - да създадете своя терен и след това да използвате само една текстура, обвивайки я много пъти по оста X и Y. За допълнителна помощ - можете да предоставите jsfiddle пример за това, което имате в момента, за да ви помогнем. - person Alex Under; 22.08.2013