2016-01-22 49 views
0

我有一个球体,我试图在顶点着色器中将其顶点增加一个常量,但threeJS的默认属性position不更新。ThreeJS不更新着色器中的顶点位置

uniform float extraSize; 

void main(void) { 
    vec3 newPosition = position + extraSize*normal; 
    gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0); 
} 

当我通过extraSize变量,球的变化,但positionmodel.geometry.vertices multipy它没有它。

我已经在我的代码model.geometry.verticesNeedUpdate = truemodelGeometry.dynamic = true

这是我的问题的一个示例代码: fiddle example

+0

更改着色器中的顶点位置并不会在javascript对象中更改它 – 2pha

+0

有什么方法可以修改着色器中顶点相对于其最后位置的方式吗? –

+0

我不确定你的意思是“最后的位置”。比约克的回答更好地解释了我的评论。 – 2pha

回答

0

着色器不淌回三出的基于JavaScript的顶点一览表中会发生什么。如果您想持续更改,则需要直接操作网格的geometry.vertices的成员。另外,虽然这可以缩放一个球体,但考虑如果沿着法线在一个更复杂的对象上缩放可能会发生什么情况 - 您将在不同的方向上缩放,实质上会使形状膨胀/缩小。也许这就是你想要的?

对于简单的比例操作,使用网格比例法有什么问题?

+0

我正在试图做的是这样的:[链接](https://jsfiddle.net/meji/qvkses95/),但永久性的变化。我试图在着色器中做它,因为它在JavaScript中是非常慢,但如果你说持久性改变我应该在javascript中操作'geometry.vertices',我不能在着色器中做:(。 –