我想将THREE.CircleGeometry转换为THREE.Shape,但我还没有找到方法。我想挤出这个圆,但ExtrudeGeometry()只适用于形状。
我知道我可以使用曲线绘制圆形,但我想保留CircleGeometry()给出的拓扑结构。
如果那是不可能的,是否有工作来画一个圆形的形状,这个圆形是由围绕中心点的多个三角形片段组成的?
答案 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 );