将纹理覆盖到STL加载的网格上

时间:2016-07-19 09:58:39

标签: javascript jquery stl three.js

我正在寻找覆盖纹理以覆盖网格的有效方法。在涉及三维映射/对象时,我不是专家,更不是新手。下面显示了我希望最终产品的外观。

Image depicting the end result

尝试使用以下代码应用纹理时,最终结果类似于下面的结果。我没有做任何UV贴图,我相信我的答案可能就在这里。从下图中可以看出,它粗略地采用了图片的一般阴影,但我得到的印象是在模型的每个顶点之间绘制纹理而不是整个画面。

var textureLoader = new THREE.TextureLoader();
var texture = textureLoader.load('resource/images/materials/Mahogany.jpg');

var STLLoader = new THREE.STLLoader();
STLLoader.load( 'test.stl', function ( geometry1 ) {
 var meshMaterial = new THREE.MeshBasicMaterial({map:texture});

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

 mesh.scale.set(1, 1, 1);
 mesh.position.set(5, 20, 80);
 scene.add(mesh);
});

enter image description here

立方体具有正确的纹理,而我的STL加载网格没有。

请忽略上图中对象的旋转,一旦修复了纹理问题,我将移动到将对象组合在一起。

在这里提问时相当新,所以请做一些评论,以帮助我扩展我的问题,如果它太笼统或不够精确。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用

THREE.MeshPhongMaterial()

而不是

THREE.MeshBasicMaterial()

THREE.MeshPhongMaterial()会将材料包裹在对象之外,我们可以根据对象获得弯曲的材质。