博客地址:http://blog.csdn.net/qq_19408603/article/details/78594460
1. 构建空间数据库,采用父子表形式
2.三角面片以唯一id标识出来,同时加入拓扑关系,三维点信息,法向量信息
轮廓线提取技术路线:
1.屏幕上点击通过碰撞检测获得三维点和tile文件名,这时候文件名和三维点都不是底层的。
2.通过查找到该文件的底层文件。把所有底层文件读出来。
3.根据屏幕点算出该点在近平面和远平面的三维点,利用线做交,获得准确的三维点和tile文件名以及交点的法向量。
4.在数据库中在tile的文件名所在的表通过三维点(三维点是否在三角面内)和法向量是否相等,查出是哪个面。
5.往一个方向搜索,并把搜索过的面的ID记录下来。
6.跨tile处理,通过空间约束等条件跨表。
7.直到再次找到起点位置才结束。
8.利用法向量相似的关系在父表中查找种子点,按上述流程再走一遍。
简化算法:
在提取的轮廓线每三个点算出角度,利用python的kmean分类把角度分成两类
其中红点被认为是转角点,蓝点是非转角点。对大段的蓝点进行回归分析成一段段线段,并计算交点。最终如下图显示:
简化成果