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

时间:2016-10-30 17:03:58

标签: matrix vector 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;

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

1 个答案:

答案 0 :(得分:1)

通常可以通过获取矩阵的元素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);
相关问题