javascript - 如何改变threejs圆柱体的厚度

标签 javascript three.js

如果我有一个像 JSFiddle 中那样使用 three.js 制作的基本空心圆柱体,我该如何更改墙壁的厚度?

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 95, window.innerWidth / window.innerHeight, 0.1, 1000 );

var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

var geometry = new THREE.CylinderGeometry( 2, 2, 5, 360, 1, true );
var material = new THREE.MeshNormalMaterial( { color: 0x00ff00, side: THREE.DoubleSide } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );

camera.position.y = 5;
camera.position.z = 5;
camera.lookAt(0,0,0);

function animate() {
    requestAnimationFrame( animate );
    renderer.render( scene, camera );
}
animate();

JSFiddle example

最佳答案

不,你必须从一个圆柱体中减去另一个圆柱体。从中减去的是圆柱体的内径。

所以我将您的代码更改为:

var outerGeometry = new THREE.CylinderGeometry(2, 2, 5, 360, 1);
var innerGeometry = new THREE.CylinderGeometry(1.5, 1.5, 5, 360, 1);
var material = new THREE.MeshNormalMaterial({
    color: 0x00ff00,
    side: THREE.DoubleSide
});

var outerCylinder = new ThreeBSP(outerGeometry);
var innerCylinder = new ThreeBSP(innerGeometry);

var hollowedCylinder = innerCylinder.union(outerCylinder);

scene.add(hollowedCylinder.toMesh(material));

这是 fiddle : http://jsfiddle.net/gerdonabbink/tephoLr1/133/

如您所见,内圆柱为 1.5,例如将其更改为 1 以使厚度为 1。

关于javascript - 如何改变threejs圆柱体的厚度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51745205/

相关文章:

javascript - 如何在 Google Chrome 中查看页面上的所有 JavaScript 函数和变量?

javascript - 访问 .html 内的元素

javascript - jQuery addClass 覆盖前一个元素

javascript - 了解 chop 二十面体的几何形状,以进行渲染

Three.js:可以翻转 Sprite 吗?

javascript - 是否有任何事件可以识别滚动条点击

javascript - 尽管出现 `slideshow:true`,Flexslider slider 仍无法在 WP 网站上自动播放

javascript - JSON 模型纹理未加载

javascript - 使用 OrbitControls 时如何在 Three.js 中禁用右键单击鼠标移动相机旋转?

javascript - 三个 JS 中的动画