J'essaie de créer une application simple qui montre un cube se dépliant dans un plan à 6 faces, les faces s'ouvrant à la fois vers l'intérieur et vers l'extérieur. Voici une vidéo .
Est-ce que cela peut être fait dans le cadre SceneKit comme on m'a dit que cela ne peut pas être fait, mais cela doit être fait dans un logiciel 3D, exporté sous forme de fichier fbx
puis importé dans Unity. Je ne suis pas un développeur d'applications, je veux juste être sûr. Merci.
3 Réponses :
Avez-vous essayé de créer votre cube à partir de quads (GameObject -> 3d -> Object -> Quad). Ensuite, vous pouvez parent chacun des quads à un gameObject vide positionné à l'endroit où vous voulez que la face du cube pivote. Ensuite, faites de tous ces gameObjects un enfant d'un parent "Cube". Ensuite, vous pouvez simplement utiliser l'animateur intégré à Unity pour faire pivoter chaque face autour de son pivot.
Si la question se résume à "Est-il vrai que cela ne peut pas être réalisé avec du code seul et qu'un outil 3D doit être utilisé?" alors la réponse est non.
Cet effet peut être réalisé par programmation sans aucun élément 3D.
Vous pouvez déplier ou désassembler un cube polygonal non seulement dans Autodesk Maya (puis l'exporter au format fbx
ou usdz
), mais vous pouvez également le faire en utilisant 6 plans carrés dans SceneKit ou dans Unity. Il est important de dire que vous devez positionner un point de pivot
de chaque plan carré sur son bord (par défaut, le point de pivot
est centré). Ensuite, vous devez animer une rotation de 90 degrés pour chaque plan.
Voici un code Swift expliquant comment vous pouvez le faire en utilisant le module SceneKit:
import SceneKit class ViewController: UIViewController { @IBOutlet var sceneView: SCNView! override func viewDidLoad() { super.viewDidLoad() sceneView.autoenablesDefaultLighting = true let scene = SCNScene() sceneView.scene = scene sceneView.allowsCameraControl = true sceneView.backgroundColor = UIColor.black // FIRST SIDE OF CUBE let planeNode_01 = SCNNode() planeNode_01.geometry = SCNPlane(width: 1.0, height: 1.0) planeNode_01.geometry?.firstMaterial?.isDoubleSided = true planeNode_01.geometry?.firstMaterial?.lightingModel = .lambert planeNode_01.geometry?.firstMaterial?.diffuse.contents = UIColor.red planeNode_01.position.z = -0.5 planeNode_01.simdPivot.columns.3.y = -0.5 // shifts pivot point planeNode_01.eulerAngles.x = CGFloat.pi / 4 // in radians scene.rootNode.addChildNode(planeNode_01) // SECOND SIDE OF CUBE let planeNode_02 = SCNNode() planeNode_02.geometry = SCNPlane(width: 1.0, height: 1.0) planeNode_02.geometry?.firstMaterial?.isDoubleSided = true planeNode_02.geometry?.firstMaterial?.lightingModel = .lambert planeNode_02.geometry?.firstMaterial?.diffuse.contents = UIColor.green planeNode_01.simdPivot.columns.3.y = -0.5 // shifts pivot point planeNode_02.eulerAngles.x = CGFloat.pi / 2 // in radians scene.rootNode.addChildNode(planeNode_02) // THIRD SIDE OF CUBE // ... } }
Avez-vous essayé de créer votre cube à partir de quads (GameObject -> 3d -> Object -> Quad),