我有一个球体,我试图在顶点着色器中将它的顶点乘以一个常数,但是来自threeJS的默认属性position
不会更新。
uniform float extraSize;
void main(void) {
vec3 newPosition = position + extraSize*normal;
gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0);
}
当我将其乘以extraSize
变量时,球体会发生变化,但position
和model.geometry.vertices
不会变化。
我已经在我的代码model.geometry.verticesNeedUpdate = true
和modelGeometry.dynamic = true
。
这是我的问题的示例代码: fiddle example
答案 0 :(得分:0)
着色器中发生的事情并没有回到THREE基于javascript的顶点列表。如果您想要持续更改,则需要直接操作网格geometry.vertices
的成员。
此外,虽然这会缩放一个球体,但考虑一下如果在一个更复杂的物体上沿法线缩放会发生什么 - 你会在不同的方向上进行缩放,实际上是膨胀/缩小形状。也许这就是你想要的?
对于简单的缩放操作,使用网格缩放方法有什么问题?