我有一个对象。它四处移动:
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;
但是我不知道这个坐标,因为我的对象总是移动。 如何获得这个坐标?
答案 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);