![]() |
1
6
你的想法基本上是对的。有两种主要的方法,骨骼和非骨骼,都倾向于提供关键帧。 对于非骨骼动画,您可能会获得10帧动画,例如,在行走时绘制,以及从一帧到下一帧所需的时间。所以它是二维像素精灵工作方式的精确的三维模拟。您可以计算出当前可见的帧,也可以应用粗花呢。如果你知道你在一个顶点位于V1的帧和一个顶点位于V2的帧之间,你可以将它定位在V1和V2之间的中间。所以你线性插值帧之间的所有顶点位置。这看起来比仅仅在帧中轻弹要平滑一些,但确实会稍微扭曲几何体,因此您仍然需要使帧具有合理的密度。
要将实际几何体放置在骨骼上,每个顶点都与多个骨骼中的一个相关联。你给它一个对每个骨骼的加权附着,例如,下臂上的顶点可能100%附着在下臂骨骼上,面向肘部的顶点可能80%附着在下臂骨骼上,20%附着在上臂骨骼上。可以使用每个相关骨骼将顶点转换到的位置的加权和来获得实际顶点位置。这样你可以得到相当好的关节(尽管,通常使用比我的简单解释更复杂的骨架)。 用iPhone的术语来说,在ES 1.x下,你很可能不得不在CPU上进行非骨骼tweening,这并不像你想象的那样是一个性能问题,因为PowerVR MBX实际上并没有将顶点缓冲区对象保存在视频RAM中。只要你以一种PowerVR友好格式积累缓冲区(主要是对齐问题,按指定顺序交错位置/纹理坐标/法线等也很有用),那么提交到OpenGL并不比使用顶点缓冲区对象贵多少。
在支持ES 2.x的设备上,使用顶点着色器可以更好地处理非骨骼粗花呢。这将允许您使用顶点缓冲区对象并计算出GPU上的位置。由于ES 2.x硬件支持将顶点缓冲区对象推送到GPU上进行全面管理,这是一个巨大的胜利。
|
![]() |
Jimmy Yang · 何时需要进行透视分割? 2 年前 |
![]() |
Spektre · 将外部支架生成网格以进行3D打印 7 年前 |
![]() |
CrazyCoder · 使用d3的3D饼图。js公司 7 年前 |
![]() |
Onur Altay · 具有选定点的三维线条图 7 年前 |
![]() |
TB Gamezz · 碰撞时多个对象的统一生成方式 7 年前 |