2013-11-10 4 views
1

Я пытаюсь правильно отобразить UV-текстуру, но, не ...Правильное отображение UV Three.js

Я получил следующий результат в моем приложении:

enter image description here

В результате я не ожидал. Я хочу иметь следующий вид, описанный:

enter image description here

Исходный код здесь:

http://pastebin.com/aDg981Bk

+0

Вы можете добиться того, что без использования нескольких материалов и без изменения Увса, и вместо установки параметров текстуры для обертывания. Меняет ли UV-объект что-то, что вы хотите сделать? (Кроме того, это не вопрос webgl, поэтому тег был удален.) – WestLangley

+0

@WestLangley это тоже вопрос webgl. Является ли Three.js основой DirectX? Нет. Так что у webgl есть прямая связь с этим вопросом, только потому, что на нем есть тРИ.js. И что вы знаете, чего я пытаюсь достичь? Это просто приложение, которое я пытаюсь изучить, действительно хочу сделать УФ-текстуру с разными изображениями, загруженными через AJAX из localhost, что сделает мой самолет похожим на картографическую матрицу с разными изображениями, есть ли другие способы ? Я могу только представить, что я могу сделать 10 самолетов, нарисовать на каждой плоскости свою собственную текстуру и поместить их рядом друг с другом, но я полагаю, что это очень плохо. –

+1

Люди, которые отвечают на вопросы webGL, предпочитают, чтобы тег webgl использовался только для вопросов программирования webgl. – WestLangley

ответ

5

Вы должны смотреть на PlaneGeometry.js и понять, как UVs установлены. Затем вы сможете выяснить, как их восстановить. Это должно работать - есть два треугольника на «лицо».

for(var i = 0; i < geometry.faces.length/2; i++) { 

    geometry.faceVertexUvs[ 0 ].push(
    [ 
     new THREE.Vector2(0, 0), 
     new THREE.Vector2(0, 1), 
     new THREE.Vector2(1, 0),  
    ]); 

    geometry.faces[ 2 * i ].materialIndex = i; 

    geometry.faceVertexUvs[ 0 ].push(
    [ 
     new THREE.Vector2(0, 1), 
     new THREE.Vector2(1, 1), 
     new THREE.Vector2(1, 0),  
    ]); 

    geometry.faces[ 2 * i + 1 ].materialIndex = i; 

    materials.push(createTexture(i)); 

}  

//geometry.computeFaceNormals(); // not needed 
//geometry.dynamic = true; // not needed 
//geometry.uvsNeedUpdate = true; // not needed since plane has not been rendered yet  

Three.js R.62

+0

большое спасибо! удалили тег webgl –