2016-01-21 5 views
4

я успешно применил текстуры к геометрии куба с этим:Как применить текстуру к пользовательскому геометрии в Three.js

var geometry = new THREE.CubeGeometry(10, 10, 10); 
var meshMaterial = new THREE.MeshPhongMaterial({ transparent: false, map: THREE.ImageUtils.loadTexture('/app/images/wood.jpg') }); 
meshMaterial.side = THREE.DoubleSide; 
var mesh = new THREE.Mesh(geometry, meshMaterial); 

С этим я получаю хороший текстурированный куб, как это:

enter image description here

Теперь я хочу, чтобы применить ту же текстуру (512x512 JPG изображения) в пользовательской модели я загружаю из STL и это то, что я получаю (в этом случае пирамида):

enter image description here

Это код:

loader.load(jsonParam.url, function (geometry) { 
      var meshMaterial = new THREE.MeshPhongMaterial({ transparent: false, map: THREE.ImageUtils.loadTexture('/app/images/wood.jpg') }); 
      meshMaterial.side = THREE.DoubleSide; 

      var mesh = new THREE.Mesh(geometry, meshMaterial); 

      mesh.castShadow = false; 
      mesh.receiveShadow = true; 
      scene.add(mesh); 
     }); 

Почему текстура не применяется, и я получаю только то, что, как представляется, в среднем цвета текстуры?

+1

Имеет ли ваша модель УФ-координаты? – 2pha

+0

@ 2pha Нет, это модель STL, мне нужно UV-картографирование? – Andres

+0

да. без UV-отображения, шейдер не знает, какую часть изображения помещать где-то на модель. – 2pha

ответ

3

Вам нужно УФ-картографирование.
Вы можете либо отредактировать модель в программном обеспечении моделирования, чтобы добавить UV-координаты, либо, возможно, сгенерировать их, как в ответе, опубликованном here.
Я полагаю, что другой вариант - создать собственный шейдер, который отображает текстуру на поверхность модели без использования UV-координат.

+1

Есть ли способ произвести UV-карту программно, как в ссылке выше, но и для непланарных поверхностей? Мне все равно, если текстура получится немного искаженной. – Andres

+1

Вам нужно будет применить другой тип [метода проекции] (http://softimage.wiki.softimage.com/xsidocs/tex_basicproc_TypesofTextureProjection.htm), но это, вероятно, не может использоваться как общий метод для всех моделей, которые у вас есть. Вот почему доступно так много пакетов программного обеспечения для УФ-карт. – 2pha