我想使用键盘按钮在平面(y = 0)上移动我的模型,但我有以下问题:
我设法让他绕着他的Y轴旋转,但现在我需要让它朝着他面向的方向移动。如何检测和计算位移以构建合适的平移矩阵?
这是附加的代码,因为事情进展不顺利......
this.mouseMv = MatrixMath.lookAt(this.eyeX,this.eyeY,this.eyeZ,this.at,this.up);
Mat4 translate = MatrixMath.translate(this.position);
this.mouseMv = this.mouseMv.mul(translate);
this.mouseMv = this.mouseMv.mul(MatrixMath.rotationX(-90.0f));
this.mouseMv = this.mouseMv.mul(MatrixMath.translate(this.position);
this.mouseMv = this.mouseMv.mul(this.mouseAngle);
modeling.use(gl);
modeling.setUniformMatrix("model_view", this.mouseMv);
String part = "models/catbody.sgf";
Mat4 original = this.mouseMv;
for (Map.Entry<String, VertexBufferObject> entry : vboHashMap.entrySet()) {
String key = entry.getKey();
entry.getValue().bind(gl);
gl.glDrawArrays(GL3.GL_TRIANGLES, 0, SGFLoader.getNumVertices(key));
}
因此前向向量是来自mouseMv矩阵的(8,9,10)向量。 现在让模型向前移动他面向的方向我应该用翻译矩阵将mouseMv翻译成相应的前向向量?
答案 0 :(得分:1)
如果你有模型所面对的角度,你可以使用一个非常简单的正弦和余弦计算。
伪代码:
newx = oldx +(cos(angle)* speed);
newz = oldz +(sin(angle)* speed);
如果你在math.h中使用sin()和cos(),你的角度必须是弧度(除以180并乘以pi,如果它是以度为单位)