游戏《孢子》的思考 —— Ear Clipping算法

本文探讨了游戏《孢子》中采用的Ear Clipping算法,用于将多边形拆分为三角形。该算法首先定义了普通多边形和Ear Tip的概念,然后详细阐述了算法步骤,包括构建顶点链表,删除Ear Tip并生成三角形。虽然其时间复杂度较高且可能产生细长三角形,但仍是将连续曲面转化为多边形的重要方法。在孢子中,该算法用于细分模型,而最终的三角化则采用了其他技术。
摘要由CSDN通过智能技术生成

这篇博客介绍了计算机图形学中的Ear Clipping算法,以及我对其的思考。


背景

偶尔翻出来几个以前的老游戏玩了一下,其中包括了孢子。说实话,以前作为玩家的时候感觉这个游戏也就一般。但是现在作为游戏开发者发现这个游戏涉及到一些很酷的技术,包括自定义的肢体(Skin方面)、动画的泛化(Animation Retargeting方面)以及IK结算的泛化。因此查找了一些这方面的资料,尝试了解一些这方面的知识。

搜索了一些资料之后,决定挨个的去补一补对应的知识点。有些知识点在大学也学过但是记忆已经模糊了,有些则是完全没听过的领域,统一记录下来吧,也当作是对以往的知识点的整理。

这篇博客介绍的就是孢子中使用的用于将自定义肢体模型进行细分化的Ear Clipping算法。

在孢子的开发者博客中提到,在项目开发期,Marching Cube算法仍然处于专利保护期(虽然游戏发行的时候专利已经过期了……),因此开发者决定使用Ear Clipping算法将整个网格进行细分处理。

算法介绍

Ear Clipping算法指的是用于将一个普通多边形拆解为一系列的三角形,这些三角形的顶点都来自原来的普通多边形,如下图:

Image

各类定义

普通多边形的定义

上文提到了普通多边形(Simple polygon),普通多边形定义如下:

  1. 普通多边形由n个顶点( V0 Vn1 )组成。
  2. 连续的顶点通过一条边< Vi , Vi+1 >组成, 0in2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值