如何从移动物体获取照明坐标? 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);
我有一个对象。它四处移动:
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);