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

ThreeJS doesn't update vertex position in 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

着色器中发生的事情不会回溯到三个 javascript-based 顶点列表。如果您想要持久更改,则需要直接操作网格 geometry.vertices 的成员。

此外,虽然这可以很好地缩放球体,但考虑一下如果在更复杂的对象上沿法线缩放可能会发生什么——您将在不同的方向缩放,本质上是 inflating/deflating 形状。也许这就是你想要的?

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