我正在尝试将法线添加到我的体素引擎 16x16 立方体块中。当我渲染所有内容时,我会得到奇怪的结果。我不确定我是否错误地放置了我的法线,或者如果使用照明实现简单的阴影将无法正常使用它。
以下是我的每个立方体的顶点以及各自的法线。
public void putVertices(float tx, float ty, float tz, FloatBuffer vertexPositionData) {
float l_length = Constants.BLOCK_SIZE;
float l_height = Constants.BLOCK_SIZE;
float l_width = Constants.BLOCK_SIZE;
vertexPositionData.put(new float[]{
xOffset + l_length + tx, -l_height + ty, zOffset + -l_width + tz,
xOffset + -l_length + tx, -l_height + ty, zOffset + -l_width + tz,
xOffset + -l_length + tx, l_height + ty, zOffset + -l_width + tz,
xOffset + l_length + tx, l_height + ty, zOffset + -l_width + tz,
xOffset + -l_length + tx, -l_height + ty, zOffset + l_width + tz,
xOffset + l_length + tx, -l_height + ty, zOffset + l_width + tz,
xOffset + l_length + tx, l_height + ty, zOffset + l_width + tz,
xOffset + -l_length + tx, l_height + ty, zOffset + l_width + tz,
xOffset + l_length + tx, -l_height + ty, zOffset + l_width + tz,
xOffset + l_length + tx, -l_height + ty,zOffset + -l_width + tz,
xOffset + l_length + tx, l_height + ty,zOffset + -l_width + tz,
xOffset + l_length + tx, l_height + ty, zOffset + l_width + tz,
xOffset + -l_length + tx, -l_height + ty, zOffset + -l_width + tz,
xOffset + -l_length + tx, -l_height + ty,zOffset + l_width + tz,
xOffset + -l_length + tx, l_height + ty, zOffset + l_width + tz,
xOffset + -l_length + tx, l_height + ty, zOffset + -l_width + tz,
xOffset + -l_length + tx, -l_height + ty, zOffset + -l_width + tz,
xOffset + l_length + tx, -l_height + ty, zOffset + -l_width + tz,
xOffset + l_length + tx, -l_height + ty, zOffset + l_width + tz,
xOffset + -l_length + tx, -l_height + ty,zOffset + l_width + tz,
xOffset + l_length + tx, l_height + ty,zOffset + -l_width + tz,
xOffset + -l_length + tx, l_height + ty, zOffset + -l_width + tz,
xOffset + -l_length + tx, l_height + ty, zOffset + l_width + tz,
xOffset + l_length + tx, l_height + ty, zOffset + l_width + tz
});
}
public void putNormals(FloatBuffer vertexNormalData) {
float[] normals = new float[] {
0.0f, 0.0f, -1.0f,
0.0f, 0.0f, 1.0f,
1.0f, 0.0f, 0.0f,
-1.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f,
0.0f, 1.0f, 0.0f,
};
这是我运行程序时的样子,
看起来光的计算好像它周围的每个块都不存在一样。我该如何纠正?当块像图片中一样平坦时,结果应该看起来无缝。