Three.js-获取鼠标和顶点在顶点着色器中的位置

时间:2018-06-22 15:20:26

标签: javascript three.js glsl

使用Three.js,我试图简单地在“顶点着色器”中使用鼠标位置来修改顶点位置(由gl_Position表示)。

尽管搜索几乎到处都是,但我却无法完成...这是我所做的:

首先,我使用称为{mouse“的简单uniform将鼠标坐标从Javascript发送到顶点着色器,如下所示:

object.material.uniforms.mouse.value.set(mouseX, mouseY, 0);

event.clientX - (window.innerWidth / 2)侦听器中分别使用event.clientY - (window.innerHeight / 2)mousemove计算“ mouseX”和“ mouseY”的地方。

在我的顶点着色器中,顶点位置以标准方式计算:

gl_Position = projectionMatrix * modelMatrix * viewMatrix * vec4(position, 1.);

“位置”是我在创建geometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(positionArray), 3));时使用BufferGeometry传递的属性。

在考虑计算鼠标坐标和顶点坐标之间的距离之前,我知道我必须将一个或另一个转换为另一个坐标系。我努力理解它是如何工作的,但可悲的是我还没有答案...

所以我的第一个问题是:我应该直接在顶点着色器中转换坐标(即使我现在不知道如何),还是应该在Javascript中计算鼠标坐标以匹配着色器中的顶点坐标系?

我的第二个问题是:如果我要在顶点着色器中处理转换(我希望这样做,因为我的代码会更清洁),该怎么办?

我知道我在这里没有提供太多信息,但是我真的不知道可能有什么相关之处,因此请问我是否有任何不清楚或缺失的地方。 :/

0 个答案:

没有答案
相关问题