2013-05-07 72 views
0

杜布先生说这在他的论坛/网站决策圈三JS圈子中删除

var resolution = 100; 
var amplitude = 100; 
var size = 360/resolution; 

var geometry = new THREE.Geometry(); 
var material = new THREE.LineBasicMaterial({ color: 0xFFFFFF, opacity: 1.0}); 
for(var i = 0; i <= resolution; i++) { 
    var segment = (i * size) * Math.PI/180; 
    geometry.vertices.push(new THREE.Vertex(new THREE.Vector3(Math.cos(segment) * amplitude, 0, Math.sin(segment) * amplitude)));   
} 

var line = new THREE.Line(geometry, material); 
scene.add(line); 

我想移除某些圈子里我做了,但使用“scene.remove(线)” doenst工作我...

PS

这是我的代码的一部分,在做了一秒的循环之后,我想再次摆脱它。

var feetcircle; 
     var resolution = 100; 
     var amplitude = 140; 
     var size = 360/resolution; 

     var geometry = new THREE.Geometry(); 
     var material = new THREE.LineBasicMaterial({ 
      color: 0x00FF00, 
      opacity: 1.0 
     }); 




     for (var i = 0; i <= resolution; i++) { 
      var segment = (i * size) * Math.PI/180; 
      geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 0, (Math.sin(segment) * amplitude) + 375))); 
     } 

     for (var i = 0; i <= resolution; i++) { 
      var segment = (i * size) * Math.PI/180; 
      geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 410, (Math.sin(segment) * amplitude) + 375))); 
     } 

     for (var i = 0; i <= resolution; i++) { 
      var segment = (i * size) * Math.PI/180; 
      geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 285, (Math.sin(segment) * amplitude) + 375))); 
     } 


     feetcircle = new THREE.Line(geometry, new THREE.LineBasicMaterial({ 
      color: 0x00ff00, opacity: 1.0 
     })); 
     feetcircle.geometry.dynamic = true; 
     scene.add(feetcircle); 
+0

向我们展示您编写的代码。那里的代码只会创建一个圈子。 – 2013-05-07 04:00:50

+0

我做过了,我编辑了我的初始消息:) – Tommy 2013-05-07 04:06:16

回答

0

您不添加单个对象。所有这些顶点属于同一个对象,因此您不能轻易地将它们移除。你需要做的,而不是什么是:

for (var i = 0; i <= resolution; i++) { 
     var segment = (i * size) * Math.PI/180; 
     geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 0, (Math.sin(segment) * amplitude) + 375))); 
    } 

    feetcircle = new THREE.Line(geometry, new THREE.LineBasicMaterial({ 
     color: 0x00ff00, opacity: 1.0 
    })); 
    feetcircle.geometry.dynamic = true; 
    scene.add(feetcircle); 

    geometry = new THREE.Geometry(); 
    for (var i = 0; i <= resolution; i++) { 
     var segment = (i * size) * Math.PI/180; 
     geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 410, (Math.sin(segment) * amplitude) + 375))); 
    } 

    var feetcircle2 = new THREE.Line(geometry, new THREE.LineBasicMaterial({ 
     color: 0x00ff00, opacity: 1.0 
    })); 
    feetcircle2.geometry.dynamic = true; 
    scene.add(feetcircle2); 

    ... 
    scene.remove(feetcircle); 
    scene.remove(feetcircle2); 

等等......当然,如果你想真正能够删除它们,你要么给他们单独的变量名,或者把它们放在一个阵列。

var circles = new Array(); 

for (int i = 0; i < 3; i++) 
{ 
    geometry = new THREE.Geometry(); 
    for (var j = 0;j <= resolution; j++) { 
      var segment = (j* size) * Math.PI/180; 
      geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 410, (Math.sin(segment) * amplitude) + 375))); 
    } 
    feetcircle = new THREE.Line(geometry, new THREE.LineBasicMaterial({ 
     color: 0x00ff00, opacity: 1.0 
    })); 
    feetcircle.geometry.dynamic = true; 
    circles.push(feetcircle); 
    scene.add(circles[i]); 
} 

for (int i = 0; i < circles.length; i++) 
    scene.remove(circles[i]); 
+0

您需要在尚未声明任何变量之前添加var ... – 2013-05-07 04:23:36

+0

非常感谢! – Tommy 2013-05-07 04:38:35