Я неправильно рассчитываю свои нормали после выполнения итерации Кэтмалла-Кларка. Я не уверен в правильном подходе к исправлению этого.
Прямо сейчас я сначала выполняю свое подразделение, получаю вершины в draw_vertices, а затем вызываю вычисление нормалей для этих draw_vertices.
как определить правильную ориентацию для каждого квадроцикла?
void calculate_normals() {
for (int i = 0; i < d(); i+=4) {
vec3 a = d[i];
vec3 b = d[i+1];
vec3 c = d[i+2];
vec3 d = d[i+3];
vec3 ba = b - a;
vec3 ca = c - a;
vec3 normal1;
cross(&normal1, &ca, &ba);
normal1.normalize();
n.push_back(normal1);
n.push_back(normal1);
n.push_back(normal1);
n.push_back(normal1);
d[i].print();
d[i+1].print();
d[i+2].print();
d[i+3].print();
normal1.print();
normal1.print();
normal1.print();
normal1.print();
printf("\n");
}