我一直致力于使用LWJGL加载,渲染和照明3D模型。它主要工作,但目前有照明问题,我认为它的照明法线但我无法解决它。这是一张图片问题;
灯光代码:
public class Light {
private Vector4f position;
public Light(Vector3f position)
{
this.position = new Vector4f(position.x, position.y, position.z, 1);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightModel(GL_LIGHT_MODEL_AMBIENT, getFlipedFloatBuffer(new Vector4f(0.05f, 0.05f, 0.05f, 1)));
glLight(GL_LIGHT0, GL_POSITION, getFlipedFloatBuffer(this.position));
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_DIFFUSE);
}
private FloatBuffer getFlipedFloatBuffer(Vector4f values)
{
return (FloatBuffer)BufferUtils.createFloatBuffer(4).put(new float[]{values.x, values.y, values.z, values.w}).flip();
}
public void update() {
glLight(GL_LIGHT0, GL_POSITION, getFlipedFloatBuffer(this.position));
}
}
答案 0 :(得分:0)
法线不均匀定向。如果您自己从几何体中计算法线,则首先必须重新对齐所有法线以指向相同的曲面方向。不过,这个算法对于正确而言有点单调乏味。
最好只需将模型加载到3D建模器中,使用该建模器的“修复法线方向”工具并将模型与法线一起保存。 Blender具有可通过热键CTRL + N
访问的功能