游戏设计&游戏开发Unity游戏开发入门unity3D技术分享

用正六边形和正五边形拼接球面并以此寻路导航

2017-04-01  本文已影响243人  cdf02aaf6ae2

工具

TopMod 一个研究拓扑模型的社群开发的小工具,可以用来快速生成正六边形和正五边形拼接成的球体模型。

官方
百度云

有言在先

本文基本上全部基于 HexPlanet 这个开源项目。

项目源码附带有一份文档,如果觉得本文有任何说的不够清楚明白的地方,可以再参照一下原文档。

本文不包含具体的论证过程,有兴趣可自行 Google。

原理

最接近球的正多面体

几个有趣的关系

  1. 将正十二面体每个面的中心连起来就是正二十面体

  2. 将正二十面体每个面的中心连起来就是正十二面体

  3. 以正二十面体为原型,将每条棱的中点拉到与原来的顶点一样的高度再与原来的顶点连起来,可以生成更多的正三角形

60个正三角形
  1. 这时再把每个面的中点连起来,便是一个足球了
足球2

最终

如果不断重复上面的第 3 步,直到三角形足够多,再进行第 4 步:

正三角形 正五边形和正六边形

便可以按我们想要的用正五边形和正六边形拼成一个球面了。

实践

上面的原理听起来简单,但真正操作起来还是要写好多代码的。感谢开篇提到的工具——TopMod,已经有人做好了。

生成三角球面模型

打开软件,选择那个现成的球——这已经重复了好几步

基础模型

点击 Window,确保勾选如图两项,以打开重构 Mesh 的两个工具箱

工具箱

选择 Root-3 模式后根据需要点击 Perform Remeshing 按钮,就可以继续生成更多的正三角形(三角形越多,此步耗时越长,可能界面会卡)

重复细分

选择 Dual 模式再点击 Create Dual 可以预览效果

预览

恢复到正三角形状态(三角形面是最受支持的)点击 File -> Save As... 即可保存模型文件

烘焙六边形网格

由于导出的是三角形面,需要我们自己烘焙正六边形和正五边形数据,具体如下:

其它

上一篇 下一篇

猜你喜欢

热点阅读