-1
所以我使用LWJGL 3來製作遊戲,而我目前正在嘗試生成icosphere。我目前有一個非常基本的icosphere沒有任何分裂,我的照明看起來和模型的一些部分是完全黑色的。我的理解是,你希望你的法線從原點出來(0,0,0是球體的中心)。這裏是我如何生成我的法線。我的照明目前與使用OBJ加載程序加載的其他模型完全兼容,因此我非常確定這不是我的照明代碼,而是我生成法線的方式。計算icosphere的法線?
法線計算:
normalsArray = new float[verticesArray.length];
for (int i = 0; i <= normalsArray.length/3; i++) {
float x = verticesArray[i];
float y = verticesArray[1 * i];
float z = verticesArray[2 * i];
Vector3f normal = new Vector3f(x, y, z);
normal.normalize();
float length = normal.length();
normalsArray[i] = normal.x/length;
normalsArray[1 * i] = normal.y/length;
normalsArray[2 * i] = normal.z/length;
}
這裏是我目前的結果的畫面: Result
是的,你是非常正確的,我今天早上起牀後覺得很愚蠢。照明現在可以正常工作,直至照亮區域。你知道我怎麼能在每個三角形上做出光照(所以每個三角形都是基於光照的獨特之處?我認爲這樣做的方法是計算面的法線而不是頂點)。 –