我有以下初始化:
var plane = new THREE.PlaneGeometry(WIDTH, HEIGHT, 10, 10)
这将创建一个包含121个顶点和200个面的平面。我试图解析所有这些顶点以形成波浪状表面,波浪表面的公式是:
( Math.sin( ( x + count ) * 0.3 ) * 50 ) + ( Math.sin( ( y + count ) * 0.5 ) * 50 );
其中x和y表示平面中点的精确索引,可以将其视为2D平面:
------------
| | | <--- this square is located at (1,2)
| | |
------------
| | |
| | | <--- this square is located at (2, 2)
------------
现在这就是我在更新函数中解析顶点的方法:
function render() {
time = clock.getElapsedTime() * 10;
scene.traverse(function(node) {
if(node instanceof THREE.Mesh && node.geometry.type === "PlaneGeometry") {
for(var i = 0; i < node.geometry.vertices.length; i++) {
DO SOME STUFF WITH THE VERTICES HERE
}
node.geometry.verticesNeedUpdate = true;
}
});
camera.lookAt( scene.position );
renderer.render(scene, camera);
}
我想特别经历每个顶点,同时知道它在平面中的确切X和Y位置,所以我可以应用该公式并创建一个波浪状表面,我该怎么做呢?