Three.js WebGl调整对象奇怪的行为

时间:2013-07-04 14:02:58

标签: javascript animation position three.js webgl

我有一个工作正常的代码但是当我启用WebGL时它停止工作。 一般来说,我有一个函数,每个frameRate调整我的对象的大小。

function animate(){

     window.requestAnimationFrame(animate);
     s.setPosition(s.x - 1, s.y - 1, 0);
}

s.prototype.setPosition = function(x, y, z) {

this.x = x; 
this.y = y; 
this.z = z; 

this.squareMesh.geometry.vertices[0].set( x,  y, z);
this.squareMesh.geometry.vertices[1].set( x + this.w - 1, y, z);
this.squareMesh.geometry.vertices[2].set( x + this.w - 1, y - this.h + 1, z);
this.squareMesh.geometry.vertices[3].set( x,  y -  this.h + 1, z);
 }

这很好用,直到我启用了WebGl。启用时,对象没有任何反应,似乎值不会更新。

当我使用像

这样的功能时

obj.position.x = s.x +1它有效。

但这会导致其他问题,例如每个对象的0 0 0位置。我在这里提到了这个问题:Three.js, WebGl Object position

1 个答案:

答案 0 :(得分:0)

请参阅https://github.com/mrdoob/three.js/wiki/Updates

这应该告诉Three.js顶点被更改并需要刷新:

this.squareMesh.geometry.verticesNeedUpdate = true;