【问题标题】:Static image for 3d Object (Swift AR)3d 对象的静态图像 (Swift AR)
【发布时间】:2018-07-08 09:21:07
【问题描述】:

我只是想知道如何让我的 SceneKit 对象像普通的 2d 图像一样是静态的,而不是让它像球体一样形状。我对 AR 很陌生,所以我真的不知道如何很好地编程。谢谢!

import UIKit
import SceneKit

class Ship: SCNNode {
    let radius : CGFloat = 0.11
    override init() {
        super.init()
        self.geometry = SCNSphere(radius: radius)
        self.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
        self.physicsBody?.isAffectedByGravity = false

        self.physicsBody?.categoryBitMask = CollisionCategory.ship.rawValue
        self.physicsBody?.contactTestBitMask = CollisionCategory.bullets.rawValue

        // add texture
        let material = SCNMaterial()
        material.diffuse.contents = UIImage(named: "innierevised")
        self.geometry?.materials  = [material, material, material, material, material, material]
    }

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

}

【问题讨论】:

    标签: swift xcode scenekit augmented-reality


    【解决方案1】:

    您必须创建一个 SCNPlane 并使用它的材质属性为其分配一个图像:

    // Compute Material
    let material = SCNMaterial()
    material.isDoubleSided = false
    material.diffuse.contents = UIImage(named: "innierevised") 
    material.diffuse.contentsTransform = 
    SCNMatrix4Translate(SCNMatrix4MakeScale(-1, 1, 1), 1, 0, 0)
    // This is if your image is flipped vertically (as SceneKit coordinate system is different from UIKit one)
    

    然后:

    // Create Plane
    let newPoi = SCNPlane(width: radius, height: radius)
    newPoi.materials = [material]
    let newPoiNode = SCNNode(geometry: newPoi)
    newPoiNode.position = // your SCNVector3 expected position
    newPoiNode.constraints = [SCNBillboardConstraint()] // Look towards camera
    

    【讨论】:

    • 感谢伙计,它有效!但有一个小问题。为什么当我在我的 iPad 上运行它时,相机不工作? ibb.co/iUVQdm
    • 好吧 nvm 我刚刚想通了,因为我的 iPad 使用的是 A8 芯片。 AR 不可能在 A8 芯片上运行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多