我已将此Dual Contouring实现移植到C#:
http://sourceforge.net/projects/dualcontouring/
不幸的是,我想我一路上搞砸了。并且涉及很多代码,因此很难通过并将C#与原始C ++相匹配(尽管如此,我会这样做)。
我知道这是一个很长的镜头,但是这里有一个屏幕截图,显示当我输入体素数据时会发生什么情况。我弄乱了什么想法?
答案 0 :(得分:0)
想出来。问题是我的输入数据,而不是实际的双轮廓代码。我将密度值传递到每个叶节点,而不是角点的网格符号。我应该按照链接到PolyMender文档的注释中的引用,其中说:
是一个4字节的整数,等于2 ^ octree_depth。首先 a的字节是0(表示中间节点)或1 (表示空节点)或2(表示叶节点)。第一次之后 byte,一个中间节点包含八个结构 它的八个孩子;空节点包含一个值为0的字节 或者1表示是在内部还是外部;和叶子节点包含 一个字节,其八位对应于八个角的符号 (内部为0,外部为1)。枚举的顺序 中间节点中的八个子节点如下 (以坐标表示): < 0,0,0>,< 0,0,1>,< 0,1,0>,< 0,1,1>,< 1,0,0>,< 1,0 ,1>,< 1,1,0>,< 1,1,1-取代。该 叶节点中八个角的枚举遵循相同的顺序 (例如,最低位在< 0,0,0>处记录符号。)