Самоучитель по 3dsmax 7

         

OfVertics; i++) { vertexNormal[i]


for (i = 0; i < numberOfVertics; i++) { vertexNormal[i].x = 0; vertexNormal[i].y = 0; vertexNormal[i].z = 0; } for (i = 0; i < numberOfVertics; i++) { for (j = 0; j < numberOfFaces; j++) { if (face[j].vertex0 == i || face[j].vertex1 == i || face[j].vertex2 == i) { vertexNormal[i].x += faceNormal[j].x; vertexNormal[i].y += faceNormal[j].y; vertexNormal[i].z += faceNormal[j].z; } } } // ...

Но это метод даже слишком лобовой, и поэтому медленный. Можно сделать все проще и быстрее: перебираем все грани, и к нормалям всех принадлежащих грани вершин добавляем нормаль грани. После этого приводим все нормали к длине 1, причем эта фаза даже не обязательна, а лишь удобна для дальнейших расчетов. Соответствующий кусочек кода: // ... for (i = 0; i < numberOfVertics; i++) { vertexNormal[i].x = 0; vertexNormal[i].y = 0; vertexNormal[i].z = 0; } for (i = 0; i < numberOfFaces; i++) { vertexNormal[face[i].vertex0].x += faceNormal[j].x; vertexNormal[face[i].vertex1].y += faceNormal[j].y; vertexNormal[face[i].vertex2].z += faceNormal[j].z; } // ...

Содержание раздела