SceneKit:如何控制导入资产的大小,一个 DAE 文件创建了巨大的 SCNNode 而另一个是“正常的”

Cra*_*lot 3 collada cinema-4d scenekit scnnode

设计师提供了在Cinema 4D 中创建的两个 DAE 文件。

这两种资产在 Cinema 4D 中的大小相当。两个 DAE 文件都是使用相同的导出过程生成的。

但是,将 DAE 文件导入 SceneKit 场景会产生不同的结果。

Chango.dae 以“正常”大小导入,边界框为 ~3x4x3。

Tiki.dae 以大尺寸导入,边界框约为 155x325x140。它在 C4D 中的尺寸约为 122x283x142。

问题:

1) 您如何确保资产“适合”SceneKit 场景?您是应该使用 SCNNode 的“缩放”属性来缩小资产,还是应该要求设计者制作一定大小的资产?在SpriteKit和 中UIKit,这很简单。资产大小与其屏幕大小直接相关(例如,20x20 图标占用大约那么多屏幕空间,具体取决于分辨率)。然而,什么是模拟SceneKit?如果您希望资产适合 1x1x1 SCNNode,您要求设计师制作什么尺寸的资产?

2)如果你的资产对于一个场景来说太大了,你如何缩小它?UIKit例如,在 中,您可以缩放图像以适合UIView类似ScaleAspectFit. 似乎没有 a 的类似物SCNNode。使用 SCNNode 的scale属性会更改外观,但不会更改资产的边界框。甚至改变外观也不精确。例如,对于 Tiki.dae,资产的原始高度(如边界框所示)为 324.36。但是,如果将 Y 比例设置为 0.01,则高度不会变为 ~3.24。它变得小于 3,您可以通过将其舒适地安装在高度为 3(半径为 1.5)的球体中来证明这一点。

mnu*_*ges 5

如果您打开 Collada 文件,您会发现在一种情况下,距离以米表示:

嫦娥

<unit name="meter"/>
Run Code Online (Sandbox Code Playgroud)

在另一种情况下,它们以厘米表示:

提基科

<unit meter="0.01" name="centimeter"/>
Run Code Online (Sandbox Code Playgroud)

因此,值1在一个文件中表示 1m,在另一个文件中表示 1cm。这是一个资产问题,您可以在 Cinema 4D 中或通过手动编辑 Collada 文件来修复。您还可以使用convertUnitsToMeters选项在加载时转换单位。