Loop 曲面细分中如果要正确处理不封闭的 mesh,是不是需要在实验 2.8 中正确实现对边界边的边分裂操作?
还有对边界边作分裂时,我始终得不到正确的结果,是不是我对属于一个“虚假的”面的半边的处理不对,文档中没太说清楚 prev、next 等是怎么做的?我仔细检查各个量的邻接关系没有找到错误。
看文档我觉得需要格外注意 一条边界 (a boundary) 和 一条边界边 (a boundary edge) 概念的区别,dandelion 中,一条边界上的所有边共享一个 virtual face
举个例子就是,一个立方体上有一个洞,洞口由 20 条 boundary edge 构成,那么这个洞对应一个 virtual face,而这 20 条边靠近洞一侧的 20 条半边首尾相连成环,都隶属于那一个 virtual face。
这也说明,一个 boundary halfedge 的 prev 和 next 是相邻的 boundary halfedge。
你的代码中,boundary halfedge 的 next 和 prev 都成了自身了,这肯定是错的。建议使用 validate() 函数,检查自己操作完还符不符合半边网络数据结构。