2017-07-26 2 views

Répondre

10

Vous pouvez ajouter un SCNPlane et utiliser un SCNLookAtConstraint pour que l'avion regarde toujours la caméra.

Vous pouvez créer un matériau personnalisé et régler est material properties à:

  • Une couleur (UIColor ou CGColor), en spécifiant une couleur constante sur la surface du matériau Un certain nombre (

  • Une image (UIImage ou CGImage), spécifiant une texture à mapper sur la surface du matériau

  • Une couche d'animation de base (CALayer)
  • Une texture (SKTexture, MDLTexture, MTLTexture ou GLKTextureInfo)
  • Une scène SpriteKit (SKScene)

Vous pouvez également afficher le contenu d'animation à l'aide CoreAnimation ou SpriteKit mais

SceneKit ne peut pas utiliser une couche qui est déjà affichée ailleurs (par exemple, la couche de support d'un objet UIView)


Voici un exemple en utilisant SpriteKit:

  1. Créez votre SpriteKit Scène:

par exemple:

let skScene = SKScene(size: CGSize(width: 200, height: 200)) 
skScene.backgroundColor = UIColor.clear 

let rectangle = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 200, height: 200), cornerRadius: 10) 
rectangle.fillColor = #colorLiteral(red: 0.807843148708344, green: 0.0274509806185961, blue: 0.333333343267441, alpha: 1.0) 
rectangle.strokeColor = #colorLiteral(red: 0.439215689897537, green: 0.0117647061124444, blue: 0.192156866192818, alpha: 1.0) 
rectangle.lineWidth = 5 
rectangle.alpha = 0.4 
let labelNode = SKLabelNode(text: "Hello World") 
labelNode.fontSize = 20 
labelNode.fontName = "San Fransisco" 
labelNode.position = CGPoint(x:100,y:100) 
skScene.addChild(rectangle) 
skScene.addChild(labelNode) 
  1. Créez votre avion et définissez la scène comme votre propriété matérielle

par exemple.

let plane = SCNPlane(width: 20, height: 20) 
let material = SCNMaterial() 
material.isDoubleSided = true 
material.diffuse.contents = skScene 
plane.materials = [material] 
let node = SCNNode(geometry: plane) 
scene.rootNode.addChildNode(node) 
  1. Animez votre scène

par exemple

labelNode.run(SKAction.repeatForever(SKAction.rotate(byAngle: .pi, duration: 2))) 

enter image description here

+0

Merci pour la réponse quand j'ajouter ce code dans Arkit exemple il fin lorsque je tente d'ajouter noeud plan dans ma scène self.sceneView.scene.rootNode.addChildNode (noeud) Il donne cette erreur "validateDepthStencilState: 3675: assertion échouée' MTLDepthStencilDescriptor utilise frontFaceStencil mais MTLRenderPassDescriptor a une texture nil stencilAttachment '" Une idée?S'il vous plaît aider – Developer

+0

J'ai seulement testé le code dans un terrain de jeu SceneKit. Je ne sais pas pourquoi cela ne devrait pas fonctionner dans ARKit – orangenkopf

+0

merci pour l'aide son à cause de cette ligne skScene.addChild (rectangle) besoin de supprimer cette ligne pour l'exécuter – Developer