2015-06-12 46 views
0

假设我有一个像这样的球:如何在ThreeJs中绘制一个球体直径的线?

var geometry = new THREE.SphereGeometry(1, 32, 32); 
window.sphere = new THREE.Mesh(geometry, material); 
scene.add(window.sphere); 

我怎么会再画一个球体的直径围绕一条线吗?最好平行于x轴。这里的最终目标是结合文字使用这样一条线来说明尺寸(例如,这个球体是10米)。

回答

2

您可以使用这一招:

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

var geometry = new THREE.TorusGeometry(31.9, 0.16, 64, 100); 
var material = new THREE.MeshBasicMaterial({ color: 0xffff00 }); 
var torus = new THREE.Mesh(geometry, material); 
torus.rotation.x = Math.PI/2; 
scene.add(torus); 

http://jsfiddle.net/10hemttk/36/

UPD。好,这样更正确:

var rad = 32, 
    delta = 0.05, 
    segs = 64, 
    material = null, 
    geometry = null, 
    circle = null, 
    sphere = null; 

material = new THREE.LineBasicMaterial({ color: 0xffff00 }), 
geometry = new THREE.CircleGeometry(rad+delta, segs),  
geometry.vertices.shift(); 
circle = new THREE.Line(geometry, material); 
circle.rotation.x = Math.PI/2; 
scene.add(circle); 

material = new THREE.MeshBasicMaterial({ color: 0xaaaaaa }); 
geometry = new THREE.SphereGeometry(rad, segs, segs); 
sphere = new THREE.Mesh(geometry, material); 
scene.add(sphere); 
+0

我不是在看的jsfiddle什么... –

+0

你没看到球体附近的黄线?奇怪。在任何情况下,诀窍都很清楚:绘制环面半径等于或稍小于半径接近零的球体半径。 –

+0

我在jsfiddle里看不到任何东西,它是一个黑屏。这看起来很不方便,当然必须有办法沿着球体的外边画一条线。 –