Работая с Project Dent, пытаемся поместить трехмерный объект в абсолютные координаты GPS.
В файле Readme показано, как поместить объект 2D-аннотации информации в пространство AR, но я не могу заставить его разместить 3D-объект с координатами GPS
В Project Dent не используется стандартный SceneView, которыйзатрудняет попытки сделать это, основываясь на большом количестве уроков.Он использует SceneLocationView на основе ARCL
Вот пример кода для 2D-аннотации
let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)
let location = CLLocation(coordinate: coordinate, altitude: 300)
let view = UIView() // or a custom UIView subclass
let annotationNode = LocationAnnotationNode(location: location, view: view)
sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: annotationNode)
Вот что я пытался сделать, чтобы заставить его работать с 3D-объектом
let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)
let location = CLLocation(coordinate: coordinate, altitude: 300)
let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
let objectNode = LocationNode(location: location, SCNbox: box)
sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: objectNode)
В идеале, я бы хотел, чтобы этот код просто поместил 3D-прямоугольник с этими GPS-координатами в пространстве AR.
К сожалению, я не могу даже заставить его строить в настоящее время.
В качестве обновления к этому я сделал следующее.Создайте новый класс в узлах на основе LocationNode с именем ThreeDNode -
open class ThreeDNode: LocationNode {
// Class for placing 3d objects in AR space
public let threeDObjectNode: LocationNode
public init(location: CLLocation?, scene: SCNScene) {
let boxGeometry = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0)
//let boxNode = SCNNode(geometry: boxGeometry)
threeDObjectNode = LocationNode(location: location)
threeDObjectNode.geometry = boxGeometry
threeDObjectNode.removeFlicker()
super.init(location: location)
addChildNode(threeDObjectNode)
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
, а затем в POIViewController попытался поместить трехмерный объект в пространство AR со следующим кодом -
//example using 3d box object
let coordinate2 = CLLocationCoordinate2D(latitude: 52.010339, longitude: -8.351157)
let location2 = CLLocation(coordinate: coordinate2, altitude: 300)
let asset = SCNScene(named: "art.scnassets/ship.scn")!
let object = ThreeDNode(location: location2, scene: asset)
//add to scene with confirmed location
sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: object)
Нетрадость :( Любая помощь, высоко ценится.