SCNNode边界大小和缩放

亚历山德罗

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

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之前和之后返回的值是相同的,好像没有考虑缩放比例。这是为什么?我需要此信息来为碰撞检测节点上的物理物体设置正确的大小,并确定其他节点是否在距对象一定范围内。

哈尔·穆勒

根据SCNBoundingVolume协议参考:

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

缩放节点不会更改其局部坐标空间。这样您将获得正确的结果。

不过,您可能不需要执行任何操作。SCNPhysicsShapeScaleKey文档下的注释(在SCNPhysicsShape类参考下:

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

因此,如果没有自动应用比例因子,则(SCNPhysicsShape.init(node:options:)使用选项键SCNPhysicsShapeScaleKey)将比例向量传递给(我尚未测试),您会做所需的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

底图和缩放边界

如何缩放和定位附有SCNSkinner的SCNNode?

使用Imagemagick将图像缩放到桌面大小,无边界

调整大小和缩放SKSpriteNode

固定大小和元素边界的Nat列表

android Gmaps v2:边界和最大缩放级别

Matplotlib缩放后的图形大小和位置

缩放和调整大小纹理之间的区别

Qt QGraphicsSvgItem缩放和调整大小

PDFsharp - 更改页面大小和缩放内容

如何在使用css转换(转换或缩放)和带浮点的值时解决“边界边界”错误?

JavaFX-ImageView和Pane的边界无法在ScrollPane中正确缩放/缩放

缩放SCNNode时更新SCNPhysicsBody

ggmap扩展缩放或边界

通过旋转获取SCNNode的边界体积

Ubuntu 16.04中的Chrome UI大小和缩放级别

(Swift) 平移和缩放限制为特定大小的图像

缩放div而不更改其子元素的大小和位置

使用Jquery .animation进行平滑的图像调整大小和缩放

裁剪,调整大小和缩放图像有什么区别?

iOS Swift:无需调整大小即可旋转和缩放 UIView

自动调整图片大小,缩放和定位

Gnuplot:多图大小和一个图的缩放

鼠标在子元素中的位置,与缩放,滚动和大小无关

使用Selenium和ChromeDriver,自动缩放打印页面的大小

如何使用偏移和缩放以确保边界框在Konva中始终完全可见?

HERE Maps API for Javascript:如何从当前缩放可见地图获取边界经度和纬度

ggnetwork缩放边缘和节点(顶点)的大小独立(不同的几何图形,不同的缩放比例)

当使用捏缩放和临时图像调整文本大小时,Android会限制大小