2014-03-30 101 views
0

我正在創建一個球體幾何體。Three.js從球體分割面

geometry = new THREE.SphereGeometry(200, 20, 10); 
material = new THREE.MeshLambertMaterial({ shading: THREE.FlatShading, color: 0xff0000 }); 
sphere = new THREE.Mesh(geometry, material); 
scene.add(sphere); 

我想要的是當我點擊這個幾何體時,面板會像下面的例子那樣分離。 (單擊球體按鈕查看超然的面孔http://www.mrdoob.com/lab/javascript/threejs/css3d/periodictable/

+0

請參閱http://threejs/examples/webgl_geometry_tessellation.html。但是在這個例子中,你必須改變一行才能正常工作:'uniforms.amplitude.value = 10 * Math.sin(time * 0.5);'程序是workng,但效果不可見,因爲變化是如此之小。 – WestLangley

回答

0

爲您發佈的例子的完整代碼,請訪問:http://jsfiddle.net/9XGuK/4/

具體來說,這部分示例:

var vector = new THREE.Vector3(); 

    for (var i = 0, l = objects.length; i < l; i ++) { 

     var phi = Math.acos(-1 + (2 * i)/l); 
     var theta = Math.sqrt(l * Math.PI) * phi; 

     var object = new THREE.Object3D(); 

     object.position.x = 800 * Math.cos(theta) * Math.sin(phi); 
     object.position.y = 800 * Math.sin(theta) * Math.sin(phi); 
     object.position.z = 800 * Math.cos(phi); 

     vector.copy(object.position).multiplyScalar(2); 

     object.lookAt(vector); 

     targets.sphere.push(object); 

    } 

也許您可以在本地重新創建此代碼,以更好地瞭解它是如何工作的,然後根據您的需求進行調整。