我是vertex-shader的新手,我使用threejs morphTargets和Points材质来渲染我的对象网格,我使用顶点着色器渲染和动画网格。
在每个顶点我放置了一个球体图像(比如分子),我希望它们在x和y方向上随机振动。我试图添加一些随机值,以便它们在随机方向上以相同的速率振动。
void main() {
//Morph the position based on morphTargets
vec3 morphed = vec3( 0.0 , 0.0 , 0.0 );
morphed += ( morphTarget0 - position ) * morphTargetInfluences[0];
morphed += position;
// // vibrate the molecules based on temperature
float degrees = temperature + 60.0;
float amplitude = degrees + 100.0 / degrees;
float rand1 = (random * rand(position.xy) * amplitude) * 0.00001;
morphed.x = morphed.x + rand1;
morphed.y = morphed.y + rand1;
//morphed.z = morphed.z + rand1;
gl_Position = projectionMatrix * modelViewMatrix * vec4( morphed, 1.0 );
}
上面的代码是在同一个方向上振动分子,看起来整个分子容器都在移动而不是分子。
那么如何获得每个顶点的随机振动?