我有一个很大的形状合成Swift程序,它使像这样的问题的孩子成为孩子:
Net([parts:[
Net(),
Net([parts:[
Sphere([size:SCNVector3(0.2,0.2,0.2),color:"yellow"]),
Sphere([size:SCNVector3(0.2,0.2,0.2),color:"green"]),
]]),
]])
并生成一个包含两个部分的网络:一个空的网络和一个具有两个球体的网络,一个黄色的球体和一个绿色的球体。蚊帐的底部为紫色矩形,底部为0.1。它生成的SCNNode树看起来不错。是:
n: ==== 1 SCNNodes per line, children indented:
*-net2 . . 02 geom:nil
| *-net0 . p=I[1.0-0.2-0.2] 02 geom:nil
| | s-Net p=I[y:-0.1] 01 <Box: -0.2< 0.2, -0.1< 0.1, -0.2< 0.2
| | b-2.-0.. 04 'bBox -0.2< 0.2, -0.2< 0.2, -0.2< 0.2’
| *-net1 . 02 geom:nil
| | *-sph0 p=I[x: 0.4] 02 geom:nil
| | | s-sphe p=0.20I 01 <Sphere: 'material' r=1.0> yellow
| | *-sph1 02 geom:nil
| | | s-sphe p=0.20I 01 <Sphere: 'material' r=1.0> green
| | s-Net p=I[x: 0.2y:-0.3] 01 <Box: -0.6< 0.6, -0.1< 0.1, -0.4< 0.4
| | b-4.-0.. 04 'bBox -0.4< 0.8, -0.4< 0.4, -0.4< 0.4'
| s-Net . p=I[x: 0.4y:-0.5] 01 <Box: -1.0< 1.0, -0.1< 0.1, -0.6< 0.6
| b-7.-0... 04 'bBox -0.6< 1.4, -0.6< 0.6, -0.6< 0.6’
(“ * -...”节点是视图节点的目标,“ s -...”节点是皮肤,而“ b -...”是边界框。)
将相同的SCNNodes写入 .dae 并读回Xcode时,绿色球丢失了。
当在我的应用程序内的SCNScene中显示相同的SCNNodes时,将显示两个球,但是第二个Net的地板显示在原点,而不是向下(向右)移动到Net的底部。
我猜这里有两个错误,一个是在.dae路径中掉落的球,另一个是在.app路径中放置地板矩形的错误。
在macOS上使用最新的Xcode 2019年12月版11.2.1(11B500)