我在位置(30,30,30)有一个SCNCamera,在位于(0,0,0)位置的对象上有一个SCNLookAtConstraint.我正在尝试使用A UIPanGestureRecognizer让相机围绕虚拟球体上的物体旋转,同时保持相机和物体之间的半径.我假设我应该使用四元数预测,但我在这方面的数学知识很糟糕.我知道的变量是x&y平移+我试图保留的半径.我在Swift中编写了这个项目,但Objective-C中的答案也同样被接受(希望使用标准的Cocoa Touch Framework).
哪里:
private var cubeView : SCNView!;
private var cubeScene : SCNScene!;
private var cameraNode : SCNNode!;
Run Code Online (Sandbox Code Playgroud)
这是我设置场景的代码:
// setup the SCNView
cubeView = SCNView(frame: CGRectMake(0, 0, self.width(), 175));
cubeView.autoenablesDefaultLighting = YES;
self.addSubview(cubeView);
// setup the scene
cubeScene = SCNScene();
cubeView.scene = cubeScene;
// setup the camera
let camera = SCNCamera();
camera.usesOrthographicProjection = YES;
camera.orthographicScale = 9;
camera.zNear = 0;
camera.zFar = 100;
cameraNode = SCNNode();
cameraNode.camera = camera;
cameraNode.position = SCNVector3Make(30, 30, 30)
cubeScene.rootNode.addChildNode(cameraNode)
// setup …Run Code Online (Sandbox Code Playgroud) 我正在使用ARKit开展AR项目.
我想在ARKit场景中添加一个UIView.当我点击一个对象时,我希望将信息作为对象旁边的"弹出窗口".这些信息在UIView中.
是否可以将此UIView添加到ARKit场景?我将这个UIView设置为场景,然后我该怎么办?我可以给它一个节点然后将它添加到ARKit场景吗?如果是这样,它是如何工作的?
或者还有另一种方式吗?
谢谢!
编辑:我的SecondViewController的代码
class InformationViewController: UIViewController {
@IBOutlet weak var secondView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
self.view = secondView
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2:firstViewController中的代码
guard let secondViewController = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else {
print ("No secondController")
return
}
let plane = SCNPlane(width: CGFloat(0.1), height: CGFloat(0.1))
plane.firstMaterial?.diffuse.contents = secondViewController.view
let node = SCNNode(geometry: plane)
Run Code Online (Sandbox Code Playgroud)
我只得到一架飞机的白色屏幕,而不是视线.