CircleGeometry到Shape

时间:2015-06-28 17:58:53

标签: three.js geometry shapes

我想将THREE.CircleGeometry转换为THREE.Shape,但我还没有找到方法。我想挤出这个圆,但ExtrudeGeometry()只适用于形状。

我知道我可以使用曲线绘制圆形,但我想保留CircleGeometry()给出的拓扑结构。

如果那是不可能的,是否有工作来画一个圆形的形状,这个圆形是由围绕中心点的多个三角形片段组成的?

2 个答案:

答案 0 :(得分:0)

这将生成圆形几何体的形状。 这是小提琴http://jsfiddle.net/tcLr7eg3/

var circleTri = new THREE.Shape();
radius = 30;
segments = 32;
var theta_next, x_next, y_next, j;
for (var i = 0; i < segments; i++) {
    theta = ((i + 1) / segments) * Math.PI * 2.0;
    x = radius * Math.cos(theta);
    y = radius * Math.sin(theta);
    j = i + 2;
    if( (j - 1) === segments ) j = 1;
    theta_next = (j / segments) * Math.PI * 2.0;
    x_next = radius * Math.cos(theta_next);
    y_next = radius * Math.sin(theta_next);
    circleTri.moveTo(0, 0);
    circleTri.lineTo(x, y);
    circleTri.lineTo(x_next, y_next);
    circleTri.lineTo(0, 0);
}

答案 1 :(得分:0)

对于想要执行此操作的 Three.js 新手,您应该尝试 SphereGeometry 形状。您可以通过这种方式创建一个完美的圆形球体,而无需创建自己的形状或尝试挤出 CircleGeometry 形状。文档中的代码示例应该为您提供了一个很好的起点。

const geometry = new THREE.SphereGeometry( 5, 32, 32 );
const material = new THREE.MeshBasicMaterial( {color: 0xffff00} );
const sphere = new THREE.Mesh( geometry, material );
scene.add( sphere );