我正在使用SceneKit。对象SCNNode相对于中心旋转。如何改变SCNNode的anchor?SCNScene*scene=[SCNScenenew];SCNBox*boxGeometry=[SCNBoxboxWithWidth:384.fheight:512.flength:20.fchamferRadius:0];SCNMaterial*material=[SCNMaterialnew];material.diffuse.contents=[UIImageimageNamed:@"material"];SCNNode*boxNode=[SCNNodenodeWithGeome
我正在尝试旋转我使用滑动手势创建的SCNBox。例如,当我向右滑动时,盒子应该在Y轴上旋转90度,当我向左滑动时,盒子应该旋转-90度。为此,我一直在使用节点的SCNAction.rotateByX方法来执行旋转动画。现在我遇到的问题是在Y-axis旋转后沿X-axis或Z-axis旋转并且反之亦然,轴的位置发生变化。我注意到,任何在X、Y、Z轴上执行的旋转都会改变其他轴指向的方向。示例:默认位置然后在Z轴旋转之后:当然这会带来问题,因为现在当我向左或向右滑动时,我不再得到想要的效果,因为X轴和Y轴现在已经交换了位置。我想知道的是为什么会发生这种情况?有没有办法在不影响其他轴的情况下执
我有一个SCNBox对象通过SCNNode添加到SCNScene中......letbox:SCNBox=SCNBox(width:4,height:4,length:4,chamferRadius:0.1)box.firstMaterial?.diffuse.contents=UIColor.greenColor()letboxNode:SCNNode=SCNNode(geometry:box)boxNode.position=SCNVector3(x:2,y:2,z:2)scene.rootNode.addChildNode(boxNode)我的问题是如何设置高度动画(假设为40)
下图显示了一个旋转的盒子,它应该在X轴和Z轴上水平移动。Y应该保持不受影响以简化场景。盒子也可能是相机的SCNNode,所以我猜此时投影没有意义。假设我们要将框沿红色箭头的方向移动。如何使用SceneKit实现这一点?红色箭头表示盒子的-Z方向。它还向我们展示了它不平行于相机的投影或显示为网格的深灰色线的全局轴。我的最后一种方法是平移矩阵和旋转矩阵的乘积,它会产生一个新的变换矩阵。我是否必须将当前转换添加到新转换中?如果是,用于相加矩阵(如用于乘法的SCNMatrix4Mult)的SceneKit函数在哪里,还是我必须使用Metal自己编写?如果不是,我在矩阵计算中遗漏了什么?我不想使