Aynı anda hem ARKit hem de Scenekit öğrenme sürecindeyim ve bu biraz zor oldu.ARKit - Sahnede 'kamera' şu anki pozisyonunu alın
Bir ARWorldTrackingSessionConfiguration oturumu oluşturulduğunda, bir kullanıcının sahne oturumunda kullanıcının kamerasının konumunu almanın bir yolunu bilip bilmediğini merak ediyordum. Fikir, kullanıcının mevcut pozisyonuna doğru bir nesneyi canlandırmak istiyorum.
let reaperScene = SCNScene(named: "reaper.dae")!
let reaperNode = reaperScene.rootNode.childNode(withName: "reaper", recursively: true)!
reaperNode.position = SCNVector3Make(0, 0, -1)
let scene = SCNScene()
scene.rootNode.addChildNode(reaperNode)
// some unknown amount of time later
let currentCameraPosition = sceneView.pointOfView?.position
let moveAction = SCNAction.move(to: currentCameraPosition!, duration: 1.0)
reaperNode.runAction(moveAction)
Ancak currentCameraPosition Etrafa kamerayı hareket ediyorum rağmen her zaman [0,0,0] gibi görünüyor. Ne yaptığım hakkında bir fikrin var mı? Sonunda Fikir Ben buna benzer bir şey yapıyor, o kamera önünde olduğu kadar görünmez bir küre etrafında nesneyi döndürmek ve sonra içine animasyon olurdu geçerli: Rotate SCNCamera node looking at an object around an imaginary sphere
(bu şekilde kullanıcı nesne onlara doğru animasyon görür) Herhangi bir yardım için teşekkürler.
Bu işleri aşağıdaki sınıfın dışına yapıştırmak gerekir, ama aynı zamanda oturumun 'currentFrame' alarak oturumu temsilci olmadan çerçeveleri alabilirsiniz özelliği. – rickster
@rickster siz sıkısınız ve cevabı düzenledim, ancak genellikle diğer düğümlerin sizin konumunuzu değiştirerek, örneğin etrafınızı takip ederek tepki vermesini istiyorsunuz. Daha sonra yeni kamera pozlarında sürekli güncellemeler olmasını istersiniz. – orangenkopf
Doğru. Noktası, uygulamanızın başka bir şekilde nasıl ayarlandığına bağlı olarak, ARKit'in size 60 fps hızında çerçeve sunabilmeniz ve bunları aldığınız anda görüntüleyebileceğiniz veya kendi işlem döngüsünü (en çok 60 fps) çalıştırabileceğinizi İhtiyacınız olan her seferinde bir çerçeve için ARKit. Her iki yolu da destekler, böylece hangisini isterseniz kullanın. – rickster