如何在 Three.js 中沿着 x 和 z 轴增加挤出几何体的厚度

9
我使用了“挤出几何”创建了一个形状,并且现在需要通过挤出设置来增加其厚度。我使用了“bevelThickness”函数,它可以沿着y轴方向增加厚度,但我需要沿着x和z轴方向增加厚度。
这是我的工作jsfiddle链接。
以下是我的挤出设置代码:
var extrusionSettings = {
            curveSegments:5,
            steps: 10,
            amount: 10,
            bevelEnabled: true,
            bevelThickness: 120,
            bevelSize: 0,
            bevelSegments: 8,
            material: 0,
            extrudeMaterial: 1
        };

        var geometry1 = new THREE.ExtrudeGeometry( shape1, extrusionSettings );

        var materialLeft = new THREE.MeshLambertMaterial({
            color: 0xd6d6d6,// red  
            transparent:true,
            side: THREE.DoubleSide,
            ambient: 0xea6767,
            opacity:-0.5
        });
        var materialRight = new THREE.MeshLambertMaterial({
            color: 0xcc49c3,//violet                
            side: THREE.DoubleSide,
            ambient: 0xcc49c3
        });         

        var materials = [  materialLeft, materialRight                               
                            ];

        var material = new THREE.MeshFaceMaterial( materials );
        var mesh1 = new THREE.Mesh( geometry1, material );          
        object.add( mesh1 );
        object.rotation.x = Math.PI / 2;

        scene.add( object );

以下是示例图片 在此输入图片描述 是否有任何设置可以增加它?有人能指导我吗?

请参考 http://threejs.org/examples/webgl_geometry_shapes.html 了解如何挤压带有孔洞的形状。 - WestLangley
@WestLangley 这是我的另一个 jsfiddle,我在其中使用了挤出形状的孔,但是为了创建这个,需要两个路径值(一个用于形状,另一个用于孔),但是在我的过程中,我只会得到一个路径值(外部路径形状),是否可能生成另一个内部路径(孔)? - Roobena
你必须自己创建整个路径......此外,花时间尝试演示中的每个参数值,并确保您理解它代表什么。从您的代码来看,似乎您还没有完全理解所有内容。 - WestLangley
1个回答

3
最终我找到了解决方法, 我所做的就是克隆一个网格并将位置添加到克隆的网格上,这样我就得到了靠近另一个内部墙壁的墙壁,通过这种方式,我使用循环添加了多个克隆,多个内部墙壁靠近其他创建的墙壁,增加了墙的厚度。
演示: Fiddle
//outer wall mesh 
var mesh1 = new THREE.Mesh( geometry1, material );
  object.add( mesh1 );

  var mesh_arr=new Array();
  for(i=0.1;i<15;i++)
  {

      //cloned mesh,add position to the cloning mesh
      mesh_arr[i] = mesh1.clone();
      mesh_arr[i].position.set(i,i,i);
      mesh_arr[i].updateMatrix();
      object.add( mesh_arr[i] );

  } 

Result


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接