如何将纹理应用于THREE.挤压几何体

How to apply a texture to THREE.ExtrudeGeometry?

本文关键字:几何体 THREE 应用于 纹理      更新时间:2023-09-26
var arcShape = new THREE.Shape();
arcShape.moveTo( 50, 10 );
arcShape.absarc( 10, 10, 40, 0, Math.PI*2, false );
var map1 = new THREE.ImageUtils.loadTexture( 'moon.jpg' );
var geometry = new THREE.ExtrudeGeometry( arcShape, extrudeSettings );
var new3D = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { map: map1 } ) );
new3D.receiveShadow = true;
obj3Dmassive.add( new3D );

纹理(512x512(:http://f3.s.qip.ru/cMfvUhNj.png

结果:http://f3.s.qip.ru/cMfvUhNh.png

如何填充纹理图形?

如果您只有一个直的挤出路径,则可以将纹理应用于挤出的形状,而无需自定义UV生成器。例如

var extrudeSettings = {
                bevelEnabled: false, 
                steps: 1,
                amount: 20, //extrusion depth, don't define an extrudePath
                material:0, //material index of the front and back face
                extrudeMaterial : 1 //material index of the side faces            
            };
var geometry = shape.extrude(extrudeSettings);
var mesh = new THREE.Mesh(geometry, 
    new THREE.MeshFaceMaterial([materialFace, materialSide]));

这对于饼干切割器类型的形状很方便。

编辑:答案已过时。请参见挤出具有多个孔的多个多边形并对组合的形状进行纹理处理。

你很幸运。您试图做的事情已经在以下示例中完成:

https://github.com/mrdoob/three.js/blob/master/examples/webgl_geometry_extrude_uvs2.html

您必须指定自己的UV生成器功能。这个例子向您展示了如何做到这一点。

记住,这只是一个例子。在您的案例中,它可能不正确,也不容易实现。