2014-11-08 59 views
0

我做了這個函數,爲每個幾何頂點創建一個球體並將它放置在vertice的相同位置。例如,如果我有一個立方體,函數爲每個立方體放置一個球體頂點。Three.js將兩個對象作爲一個連接

function makeSphereVertices(){ 
console.log("makesphere"); 

spheres = []; 

for(var j=0 ; j<geometryContainer.length ; j++) {    
for (var i=0 ; i<geometryContainer[j].geometry.vertices.length ; i++){ 
var sphereGeometry = new THREE.SphereGeometry(0.04,10,10);//relative to dimension object : ToDo 
var sphereMaterial = new THREE.MeshBasicMaterial({transparent: false,color: 0x000000 /*opacity: 0.01*/}); 
spheres = new THREE.Mesh(sphereGeometry,sphereMaterial); 
spheres.position.set(geometryContainer[j].geometry.vertices[i].x, 
        geometryContainer[j].geometry.vertices[i].y, 
        geometryContainer[j].geometry.vertices[i].z); 
        console.log(geometryContainer[j].id); 
    spheres.name = "sphere";    
scene.add(spheres); 
verticesSphere.push(spheres); 

} 
    } 


    } 

在此之後,我創建了移動我的立方體像這樣的功能Draggable shape。現在的問題是:我無法找到將立方體和所有球體一起移動的方法。例如,如果我拖動立方體,所有的球體都保留在舊的位置。有沒有辦法將球體鏈接到我的魔方?謝謝。

回答

1

通過將它們放在一個新的對象。

group = new THREE.Object3D();//create an empty container 
group.add(mesh);//add a mesh with geometry to it 
scene.add(group);//when done, add the group to the scene 

three.js - mesh group example? (THREE.Object3D() advanced)

所以一定要確保你把你的新創建的組對象的立方體和所有的領域。

+0

我已經完成並呈現良好,但raycaster.intersectObjects(組);給我沒有與組的交集。 @hobs – stefano 2014-11-08 12:38:50

+0

我認爲這個問題的答案和我昨天所要求的一樣。你需要做的是傳遞遞歸標誌。 raycaster.intersectObjects(group,true); http://stackoverflow.com/questions/26800922/threejs-raycast-click-detection-not-working-on-loaded-3dobject這樣它也檢查「組」的孩子。 – hobs 2014-11-09 01:11:50

相關問題