How do I construct a hollow cylinder in Three.js

后端 未结 4 1705
伪装坚强ぢ
伪装坚强ぢ 2021-01-05 17:27

I\'m having difficulties constructing a hollow cylinder in Three.js.

Should I go and construct it using CSG or by stitching the vertices together?

4条回答
  •  独厮守ぢ
    2021-01-05 18:05

    This solution uses ChandlerPrall's ThreeCSG.js project: http://github.com/chandlerprall/ThreeCSG

    (For now, I recommend using the experimental version that supports materials - the uv branch - http://github.com/chandlerprall/ThreeCSG/tree/uvs)

    Here's the code you will need:

    // Cylinder constructor parameters:  
    // radiusAtTop, radiusAtBottom, height, segmentsAroundRadius, segmentsAlongHeight
    
    var smallCylinderGeom = new THREE.CylinderGeometry( 30, 30, 80, 20, 4 );
    var largeCylinderGeom = new THREE.CylinderGeometry( 40, 40, 80, 20, 4 );
    
    var smallCylinderBSP = new ThreeBSP(smallCylinderGeom);
    var largeCylinderBSP = new ThreeBSP(largeCylinderGeom);
    var intersectionBSP = largeCylinderBSP.subtract(smallCylinderBSP);      
    
    var redMaterial = new THREE.MeshLambertMaterial( { color: 0xff0000 } );
    var hollowCylinder = intersectionBSP.toMesh( redMaterial );
    scene.add( hollowCylinder );
    

提交回复
热议问题