【发布时间】:2015-08-10 20:33:56
【问题描述】:
在进行 catmull-clark 迭代后,我没有正确计算我的法线。我不确定解决此问题的正确方法。
现在,我首先执行细分,获取 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");
}
【问题讨论】: