0

这是来自苹果文档的图像。它们显示了从立方体到球体以及一些随机几何体的变换。 在此处输入图像描述

他们只低了几行:

变形器及其目标几何图形可以从场景文件中加载或以编程方式创建。基础几何和所有目标几何必须在拓扑上相同——也就是说,它们必须包含相同数量和结构排列的顶点。

有人可以解释这一段,因为显然我不明白。由于球体永远不会具有与立方体相同的顶点结构排列(至少我认为是这样),因此不可能进行转换。但是,嘿,我们都在图片中看到它。我也尝试过进行转换,但没有得到预期的结果。那么你如何从球体到立方体,反之亦然?

4

2 回答 2

2

“拓扑相同”意味着必须保留网格中顶点之间的关系,但它们在空间中的位置可以改变。这是 2D 中的示例:

矩形网格 在此处输入图像描述

这两个网格具有相同的八个顶点,以相同的方式相互连接,但它们的位置(以及它们形成的形状)不同。

要使用 SceneKit 在 3D 中执行相同操作,您需要自定义顶点数据 — SceneKit 可以为您生成的原始形状(如SCNSphereSCNBox和诸如此类)都具有不同的拓扑,因此它们不能用作变形器目标。

如果您想将一个盒子变形为一个球体,您需要生成您自己的具有相同拓扑的盒子和球体。Apple 插图中的“一些随机形状”暗示了你可以如何做到这一点——它似乎是超椭球体的变体之一。如果您使用该 Wikipedia 页面中的方程式,您可以生成一组点,这些点可以位于球体或立方体上,具体取决于其他参数。改变这些参数以生成几个网格,SCNGeometry从这些网格创建,你就有了有效的SCNMorpher目标。

您可以在 Apple 的SceneKit WWDC 2014 幻灯片示例应用程序中看到一个更简单的变形示例。

于 2015-06-26T20:30:33.340 回答
1

您不能假定给定图像中每个顶点的位置;立方体不一定有 8 个,最左边的也不一定有 6 个。

诚然,我没有玩过,SCNMorpher但从那个描述来看,我想它会在每个顶点的基础上进行插值(所以它们必须匹配)。

如果有帮助,请将球体想象为沿其表面均匀分布的许多“点”,并且这些点被推动或挤压以形成其他表面

于 2015-06-26T20:31:09.507 回答