Ios SCNNode边界大小和缩放

Ios SCNNode边界大小和缩放,ios,scenekit,Ios,Scenekit,我正在尝试获取屏幕上节点的大小。代码如下: var v1 = SCNVector3(x:0, y:0, z:0) var v2 = SCNVector3(x:0, y:0, z:0) carNode.getBoundingBoxMin(&v1, max: &v2) print(v2) carNode.scale = SCNVector3(0.9, 1.2, 0.5) //carNode.transform = SCNMatrix4MakeScale(0.9, 1.2, 0.5)

我正在尝试获取屏幕上节点的大小。代码如下:

var v1 = SCNVector3(x:0, y:0, z:0)
var v2 = SCNVector3(x:0, y:0, z:0)
carNode.getBoundingBoxMin(&v1, max: &v2)
print(v2)

carNode.scale = SCNVector3(0.9, 1.2, 0.5)
//carNode.transform = SCNMatrix4MakeScale(0.9, 1.2, 0.5)

carNode.getBoundingBoxMin(&v1, max: &v2)
print(v2)
但是,getBoundingBoxMin在之前和之后返回的值是相同的,就好像没有考虑缩放一样。为什么呢?我需要这些信息来为碰撞检测节点上的物理实体设置正确的大小,并确定其他节点是否在距离对象的某个范围内

Per

SCNBoundingVolume协议的。。。方法在对象的局部坐标空间中测量对象的位置和大小,表示为长方体或球体

缩放节点不会更改其局部坐标空间。所以你得到了一个正确的结果

不过,您可能不需要做任何事情。请注意
SCNPhysicsShapeScaleKey
文档下的注释(在
SCNPhysicsShape
类参考下:

SceneKit的物理模拟在模拟碰撞时忽略包含物理实体的节点的比例属性。相反,在创建自定义物理形状时,使用此选项提供比例因子。(如果在未指定自定义形状的情况下为节点创建物理实体,SceneKit将在创建时使用节点的“比例”特性推断此比例因子。)


因此,如果您的比例因子没有自动应用,那么(我没有测试它)似乎可以使用选项键
scnphysicshapescalekey
,将您的比例向量传递到
scnphysicshape.init(节点:options:)
,来完成您想要的操作。

谢谢,这个解决方案很好,我不知道我可以这么做。选项:[SCNPPhysisShapeScaleKey:nodeScale]有没有办法将子对象缩放为与父对象相同的比例?例如,SCNplane的比例为1,1,1,现在我向其添加了三维模型,该模型的比例为0.2,0.2,0.2,但仍然比平面大。因此,使用SCNplane边界框或其他东西,我可以将该三维模型放在平面内吗?提前谢谢