2017-08-06 2 views
0

Mon but ultime est d'avoir un SCNNode représentant une image flottant dans l'espace. Ceci est plus ou moins facilement accompli avec le code actuel que j'ai ci-dessous, mais le problème est que le verso de l'image n'est pas rendu et est donc transparent à l'arrière. Je veux être en mesure d'afficher une image différente sur le dos afin qu'il y ait quelque chose à voir des deux côtés. la propriété isDoubleSided ne fonctionne pas ici car elle imite simplement ce qui est à l'avant. Des idées? J'ai étudié l'idée de créer ma propre géométrie à partir de Sources et d'éléments, mais cela semblait très complexe pour ce qui devrait être vraiment simple.Comment dessiner des images différentes de chaque côté de SCNPlane Geometry

Mon code actuel:

private func createNode() -> SCNNode{ 
    let scaleFactor = image.size.width/0.2 
    let width = image.size.width/scaleFactor 
    let height = image.size.height/scaleFactor 

    let geometry = SCNPlane(width: width, height: height) 
    let material = SCNMaterial() 
    material.diffuse.contents = image 
    geometry.materials = [material] 

    return SCNNode(geometry: geometry) 
} 

Merci!

+0

Salut! Je travaille sur un projet AR aussi! Pouvez-vous s'il vous plaît montrer dans votre exemple de code comment vous déclarez la variable d'image? – user287474

+0

@ user287474 Jetez un coup d'œil à mon github et laissez-moi savoir si vous avez d'autres questions! https://github.com/aivantg/ar-invaders – TheBrownCoder

Répondre

1

Puisque vous voulez des images différentes, vous devez utiliser des matériaux différents. SceneKit permet de spécifier le matériau par élément de géométrie. SCNPlane a un seul élément, c'est pourquoi isDoubleSided reflète juste l'image sur le verso. Vous avez deux options:

  • créer deux SCNPlane géométries, les orienter dos à dos et attribuer des images à chaque geometry.firstMaterial.diffuse.contents
  • Créez des SCNGeometry de SCNGeometrySource (4 sommets du plan) et deux SCNGeometryElements (un pour chaque côté: 2 triangles, 6 indices), et assigner un tableau de deux matériaux (images différentes) à la géométrie.

La première option est plus facile, mais ressemble plus à une solution de contournement.

+0

Alors cette première option impliquerait-elle simplement d'ajouter un nœud enfant et de le placer juste derrière le premier plan? – TheBrownCoder

+0

Essayé une fois que je suis arrivé à un ordinateur et cela a fonctionné! Merci :) – TheBrownCoder