关于Marching Cube的一些疑惑思考

          最近学习MC表面绘制,对于开始对于CG方面的一些知识不是很明白,搞的一头雾水,于是就零零碎碎参考一些网上的程序来学习。

主要参考的有3d med 的手册,网上的一些程序,如http://paulbourke.net/geometry/polygonise/ 以及跟踪VTK源代码,还有这个

http://www.cg.tuwien.ac.at/courses/Visualisierung/2001-2002/Ergebnisse/Beispiel1/TrenkwalderM/march/doc/march/#code

但是在阅读的时候产生的两个疑惑,表示怎么算出来的,看了书上的不是很明白,另一个问题是得到的三角面片怎么绘制图形的(这个问题有点囧)


        第一个问题后来想明白了,如果我们使用下面对于立方体编号的话

那么edgeTable[1]=edgeTable[00000001]=0001 0000 1001=0x109

        edgeTable[2]=edgeTable[00000010]=0010 0000 0011=0x203

        edgeTable[3]=edgeTable[00000011]=0011 0000 1010=0x30a

下面一次类推

       相应的:

       TriTable[1][16]={0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}

       TriTable[2][16]={0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}

依次类推

这里需要说明两点:

      第一,TriTable为什么使用16个元素,因为最多情况下得到为5个三角形

     第二, TriTable中楞的标示顺序要始终沿着一个方向,如逆时针方向

         说道第二问题其实对于懂图形学的人估计会笑话,开始以为一个个绘制三角面片效率会很低,不会是这样的

后来发现正是这样的,不过这里可以使用OpenGL中批量绘制的方法,OpenGL编程指南中有说


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值