0

如果我的错误很明显,请道歉。几周前开始学习代码。已经大量搜索答案。

尝试使用 Dat.Gui 控制在 three.js 中动画的图形方程的变量。通过将变量分配为空,我可以看到 gui 是链接的,因为在滑块上的任何位置都立即调用了预期的图形方程(为简单起见,我用简单的抛物线替换了更复杂的方程)。当再次单击 gui 滑块时,图形方程也会消失,如希望的那样,为“重绘”方程(由 gui 滑块确定的更宽或更窄的抛物线)扫清道路,但它会引发此错误:

“[.CommandBufferContext]RENDER WARNING:渲染计数或 primcount 为 0。”

我已经能够重新排列代码,所以它不会抛出这个错误,但它仍然没有调用方程的下一个可见迭代......下面是成功绘制抛物线的代码,在下一个.onChange,但随后抛出上述错误......

init function + scene, camera setup, etc....

  gui = new DAT.GUI();
  gui_a = gui.add(this, 'a').min(0.01).max(5).step(0.01).name('Width');
  gui_a.onChange(function(value){createGraph();});
}

function createGraph(){
  if(graphLine) scene.remove(graphLine);
  var graphGeometry = new THREE.Geometry();
  while (x<20){
    var y = a*(Math.pow(x,2));
    next_x = x+0.05;
    next_y = a*(Math.pow(next_x,2));
    x=x+0.05;

  graphGeometry.vertices.push(
    new THREE.Vector3(x, next_y),
    new THREE.Vector3(next_x, next_y)
  );};
  graphLine = new THREE.Line(graphGeometry, material);
  scene.add(graphLine);
};

帮助将不胜感激。

4

1 回答 1

0

想出了我自己的问题......就像我想的那样简单:'x'的值没有在 creategraph(); 中重置。它在代码顶部使用变量定义为“var x = -20”(在我的帖子中不可见..)。因此,图形的“第二次”渲染从 x = 20 开始,而不是恢复到原始 x = -20。

于 2016-07-28T03:47:35.683 回答