2016-07-26 61 views
0

如果我的錯誤是顯而易見的,請道歉。幾周前開始學習代碼。大量搜索答案。Three.js簡單的自定義動畫不會隨着DAT.GUI而改變.onChange功能

嘗試使用Dat.Gui控制在three.js中動畫的圖形等式的變量。通過將變量賦值爲空,我可以看到gui被鏈接,因爲滑塊上的任何地方都會立即調用所需的圖形方程(爲簡單起見,我用簡單的拋物線代替了更復雜的方程)。按照希望,當再次點擊gui滑塊以清除「重繪」方程式(通過gui滑塊確定的更寬或更瘦的拋物線)時,圖形方程式也會消失,但它會拋出此錯誤:

「 .CommandBufferContext] RENDER警告:渲染計數或初始值爲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

找出我自己的問題...很簡單,因爲我認爲:'x'的值在creategraph();中沒有得到重置。它的代碼頂部的變量定義爲「var x = -20」(在我的帖子中不可見)。因此,圖的「第二」渲染從x = 20開始,而不是恢復到原始的x = -20。

相關問題