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
变量时,球体会发生变化,但 position
和 model.geometry.vertices
不会。
我的代码中已经有 model.geometry.verticesNeedUpdate = true
和 modelGeometry.dynamic = true
。
这是我的问题的示例代码:
fiddle example
着色器中发生的事情不会回溯到三个 javascript-based 顶点列表。如果您想要持久更改,则需要直接操作网格 geometry.vertices
的成员。
此外,虽然这可以很好地缩放球体,但考虑一下如果在更复杂的对象上沿法线缩放可能会发生什么——您将在不同的方向缩放,本质上是 inflating/deflating 形状。也许这就是你想要的?
对于简单的缩放操作,使用网格缩放方法有什么问题?
我有一个球体,我试图在顶点着色器中增加它,将他的顶点乘以一个常数,但是 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
着色器中发生的事情不会回溯到三个 javascript-based 顶点列表。如果您想要持久更改,则需要直接操作网格 geometry.vertices
的成员。
此外,虽然这可以很好地缩放球体,但考虑一下如果在更复杂的对象上沿法线缩放可能会发生什么——您将在不同的方向缩放,本质上是 inflating/deflating 形状。也许这就是你想要的?
对于简单的缩放操作,使用网格缩放方法有什么问题?