2016-08-25 1 views
0

J'essaye d'animer des parties spécifiques d'un objet SCNScene dans SceneKit (dans mon cas, je veux animer les doigts d'une main). J'importe le fichier .dae (COLLADA) facilement à partir de Blender avec les os respectifs pour générer l'articulation sur le modèle.Comment créer une animation générée par l'utilisateur dans SceneKit avec le fichier .dae (COLLADA) de Blender

override func viewDidLoad() { 
    super.viewDidLoad() 

    var scene = SCNScene(named: "hand.dae")! 
    sceneView.scene = scene 
    sceneView.allowsCameraControl = true 
    sceneView.autoenablesDefaultLighting = true 
    sceneView.backgroundColor = UIColor.lightGrayColor() 
} 

Mon but est d'animer les os sur iOS avec des valeurs générées par l'utilisateur entre 0 et 1. Imaginez un UISlider où vous faites défiler en arrière et voir le mouvement de doigt spécifique en fonction de la valeur du curseur.

Ceci est nécessaire capture d'écran d'animation

Image with the animation pretended

J'ai Animer essayé le modèle en appelant un fichier d'animation comme l'exemple Fox Apple:

private var indexFingerAnimation: CAAnimation! 
indexFingerAnimation = CAAnimation.animationWithSceneNamed(“move_index_finger.dae”) 
indexFingerAnimation = false 
indexFingerAnimation = 0.3 
indexFingerAnimation = 0.3 
indexFingerAnimation = Float.infinity 

Le problème est que est une animation globale au lieu de seulement l'index. En outre, il s'agit toujours d'une animation «prédéfinie» au lieu d'une animation contrôlée par l'utilisateur. En fin de compte, je veux mélanger des animations (par exemple déplacer l'index et le pouce en même temps révélant des gestes)

Est-ce possible? Je me bats parce que je n'arrive pas à comprendre comment manipuler des parties spécifiques du maillage. Je commence à étudier MetalKit mais ce n'est pas clair pour moi c'est la solution.

Toute aide serait vraiment appréciée.

+0

Que voulez-vous dire par " Global "animation? Voulez-vous dire qu'il cible tous les doigts au lieu d'un seul? Je ne connais pas Blender mais il devrait être possible d'exporter une animation qui ne cible que les os d'un doigt donné. Sinon, vous pouvez traiter vos animations (en utilisant les API CA) pour filtrer celles que vous souhaitez conserver. Ensuite, si vous voulez "chercher" dans vos animations, essayez de mettre la vitesse à 0 et rajoutez vos animations après avoir changé leur beginTime. – Toyos

+0

Merci Toyos. "Global" signifie que je ne peux animer qu'une "animation exportée" à la fois. Mon défi est de déplacer, en même temps, l'index et le pouce (ou tout autre doigt) et je n'arrive pas à comprendre comment le faire. Puis-je animer un os individuellement? Comment devrais-je faire ça? – Joao

Répondre

-1

Je n'ai jamais essayé deux animations en même temps mais je peux tourner SCNNode dans le fichier DAE avec deux ou plus animer

Vous devez définir le point de pivot et les regrouper