双重轮廓算法搞砸了 - 任何可能导致此问题的想法(截图)?

时间:2014-05-09 13:43:30

标签: c# voxel

我已将此Dual Contouring实现移植到C#:

http://sourceforge.net/projects/dualcontouring/

不幸的是,我想我一路上搞砸了。并且涉及很多代码,因此很难通过并将C#与原始C ++相匹配(尽管如此,我会这样做)。

我知道这是一个很长的镜头,但是这里有一个屏幕截图,显示当我输入体素数据时会发生什么情况。我弄乱了什么想法?

screenshot of messed up dual contouring output

1 个答案:

答案 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>处记录符号。)