ThreeJS不会更新着色器中的顶点位置

时间:2016-01-22 10:24:57

标签: three.js shader

我有一个球体,我试图在顶点着色器中将它的顶点乘以一个常数,但是来自threeJS的默认属性position不会更新。

uniform float extraSize;

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

当我将其乘以extraSize变量时,球体会发生变化,但positionmodel.geometry.vertices不会变化。

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

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

1 个答案:

答案 0 :(得分:0)

着色器中发生的事情并没有回到THREE基于javascript的顶点列表。如果您想要持续更改,则需要直接操作网格geometry.vertices的成员。

此外,虽然这会缩放一个球体,但考虑一下如果在一个更复杂的物体上沿法线缩放会发生什么 - 你会在不同的方向上进行缩放,实际上是膨胀/缩小形状。也许这就是你想要的?

对于简单的缩放操作,使用网格缩放方法有什么问题?