在Swift

时间:2018-04-04 05:55:34

标签: swift4 scenekit arkit

我正试图通过相机显示3D无人机对象。我已经创建了ARSceneView并正确配置它并创建了一个场景。我也正确地将对象传递给那个sceneView但是当我运行我的应用程序时,对象没有显示任何位置,我也设置了它的位置,但仍然没有得到任何地方的对象。我怎样才能看到我的对象?我设置场景和配置的代码就是这个,

func setupScene(){

    let scene = SCNScene()
    arView.scene = scene
}
func setupConfiguration(){

    let configure = ARWorldTrackingConfiguration()
    arView.session.run(configure)

}
func addDrone() {
    drone.loadModel()
    arView.scene.rootNode.addChildNode(drone)
}

这是我的无人机类,用于将对象作为子节点,

class Drone: SCNNode {
func loadModel() {
    guard let virtualObjectScene = SCNScene(named: "Drone.scn") else { return }
    let wrapperNode = SCNNode()
    for child in virtualObjectScene.rootNode.childNodes {
        wrapperNode.addChildNode(child)
    }
    addChildNode(wrapperNode)
}

}

我怎样才能看到它?

1 个答案:

答案 0 :(得分:0)

查看代码,看起来<tr *ngFor="let spro of selectedProd;let i = index;"> <td data-title="Product Name">{{spro.product_description}}</td> <td data-title="Unit Price" class="numeric"> <i class="fa fa-inr"></i>2000</td> <td data-title="Qty" class="numeric"> <input type="text" [(ngModel)]="selectedProd[i].qty" name="qty" value="1"> </td> <td data-title="Total Price" class="numeric"> <i class="fa fa-inr"></i>{{selectedProd[i].qty*2000}}</td> </tr> 永远不会被初始化。

如果您的SCNScene位于Drone Class文件夹中,您还需要将其包含在路径中。

因此,假设您有一个名为:ARAssets.scnassets

的文件夹

您的无人机类应如下所示:

.scnassets

要实际加载它,你应该在viewController中执行类似的操作:

class Drone: SCNNode{

override init() {

    super.init()

    guard let virtualObjectScene = SCNScene(named: "ARAssets.scnassets/Drone.scn") else { return }

    let wrapperNode = SCNNode()

    for child in virtualObjectScene.rootNode.childNodes {
        wrapperNode.addChildNode(child)
    }
    self.addChildNode(wrapperNode)

}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")

   }
}

您可能还需要调整无人机节点的 func addDrone() { let droneNode = Drone() droneNode.position = SCNVector3(0, 0, -1.5) self.augmentedRealityView.scene.rootNode.addChildNode(droneNode) } 属性,例如

scale