如何从移动物体获取照明坐标? WebGL

How to get coordinates for lighting from moving object? WebGL

我有一个对象。它四处移动:

mat4.translate(mvMatrix, [ 0.0, 0.0, -68.0]); // far
mat4.rotate(mvMatrix, degToRad(sunBlueAngle), [0.0, 1.0, 0.0]); // angle
mat4.translate(mvMatrix, [25, 0, 0]); // offset center

现在我想用它作为光源。我需要传递到我的光的顶点着色器位置。

uniform vec3 uPointLightingLocation;

但是我不知道这个坐标,因为我的对象总是在移动。 如何获得这个坐标?

您通常可以通过获取矩阵的元素 12、13、14 来获取对象的世界位置

var worldPosition = [
  mvMatrix[12],
  mvMatrix[13],
  mvMatrix[14],
];

或者这也适用于大多数现代浏览器

var worldPostion = mvMatrix.slice(12, 15);

如果您使用的是 glMatrix,那么您也可以这样做

var worldPosition = vec3.create();
mat4.getTranslation(worldPosition, mvMatrix);