如果我的错误很明显,请道歉。几个星期前开始学习代码。大量搜索了答案。
尝试使用Dat.Gui控制在three.js中动画的图形方程的变量。通过将变量赋值为零,我能够看到gui是链接的,因为滑块上任何地方的叮当声都会立即调用预期的绘制方程(为简单起见,我用简单的抛物线代替了我更复杂的方程)。当按照希望再次点击gui滑块时,绘制的方程式也会消失,以便为重新绘制'重新绘制'方程式(由gui滑块确定的更宽或更细的抛物线),但它会引发这个错误:
" [.CommandBufferContext] RENDER警告:渲染计数或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);
};
非常感谢帮助。
答案 0 :(得分:0)
弄清楚我自己的问题......我想的很简单:'x'的值没有在creategraph();中重置。它被代码顶部的变量定义为“var x = -20”(在我的帖子中看不到......)。因此,图形的“第二次”渲染从x = 20开始,而不是恢复到原始的x = -20。