|
Re: Caméra traker vidéo exportable dans blender !!! |
|
---|---|---|
OverdOzed
![]() ![]() Inscrit:
05/09/2006 10:53 De la forêt de Shlipak, pret de la taverne des nains
Post(s): 1822
|
jerentreamamaison :
Citation : ok mais apres dans blender,j'ouvre ma fenetre de script,j'importe et je fais alt+p???? Voilà c'est exactement ça ... ![]() Tout le monde : Bon, alors après de nombreuses nuits j'ai enfin fini dans la douleur mon tuto utilisant Voodoo ... et j'ai découvert pas mal de trucs : Premièrement, le tracking automatique n'est pas toujours une issue ... ça je m'en douté un peu mais bon ... c'est toujours bon de le rappeler. Donc, avant d'allez plus avant dans les explications, voici l'effet final ainsi qu'un petit "making of en 4 étapes : http://coyhot.free.fr/Gallery/Videos/Press/CA/Transformers.wmv Comme vous pouvez le voir, il n'y a pas beaucoup de points de track ... et c'est fait expret. En lançant Voodoo avec ses valeurs par défaut sur ce plan (donc avec beaucoup plus de points), je n'ai jamais réussi à faire descendre le RMSE en dessous de 1,75 (avant la phase de "refinement" qui à pris plus de 3 heures à partir de ce RMSE sur mon AMD 3200+ ..... pour finalement arriver à 0.98). Pour baisser le nombre de points, j'ai augmenter leur répartition en poussant le paramètre "Win Size for Local Max" à 20, dans la section "KLT Tracking". Parce que parfois, trop de points tue le tracking (expérience faite sous la première version de Matchmover, où l'accumulation de petites erreurs sur un nombre de points trop importantes faisait monter la valeur du RMSE). Ensuite, le deuxième problème du tracking automatique de Voodoo venait du choix des images Keyframes : Pour pouvoir reconstruire les points en 3D dans l'espace et ainsi en déduire le mouvement de la caméra, un tracker 3D se base toujours sur deux images en particulier. Afin de maximiser la véracité de la reconstruction des points, il faut que les deux vues de ces deux images soient convergentes et qu'elles possèdent un maximum de points en commun. Le mieux est qu'elle forme un angle se trouvant entre 40 et 70 degrés. Voodoo choisissez à la base la première image comme première image clé (ça on ne peut pas le changer, il prend malheureusement toujours la première image comme première keyframe). Il à ensuite choisi de manière automatique la 4ème image comme deuxième image clé. Le problème c'est que là, je suis très loin de me trouver entre 40 et 70 degrés .... j'ai pas du dépasser les 5, tout au plus. Alors pour la convergence des deux vues, faudra repasser. J'ai donc changer, dans la section "Free Move" la méthode "Automatic", pour une "Manual" et j'ai indiqué dans "Set a Keyframe every" La valeur 100. Ainsi, la première image clé est toujours la première, mais la deuxième est la 100ème. Et là j'ai un bon angle de 50 degrés entre deux vues convergentes (puisque je tourne autour de la scène). Je relance le tracking. Bon, déjà ça track vachement plus vite. Normal : j'ai qu'une quarantaine de points et en plus je ne les reconstruits pas avant l'image 100. Comme nous en avons parlé précédemment, je track sur une image faisant la moitier de mon image PAL, resisée avec Virtual Dub. En fait je pense que ça aide le tracker de faire ça avant, car quand Voodoo nous propose de choisir une trame, il l'à duplique afin de garder le ratio original de l'image. L'image est donc deux fois moins définie et ont voie apparaitre des artéfacts sur les lignes obliques. Franchement, à voir leurs têtes, je pense que ça doit être moins difficile à tracker qu'une image deux fois plus petites ... mais avec des pixels contigus sur les obliques, sans artéfacts. Sans rien toucher d'autre, mon RMSE tombe à 0.65 !!! Après une heure de "refinement" (forcément plus cours que le précédent car partant d'une valeur plus basse), je tombe à 0.23 !!! Je fais mon export et je ramène ça dans 3DS Max via le Maxscript (et oui, je peux pas faire du Blender tous les mois alors ce coup-ci, c'était sous Max ... mais ce qui suis peut facilement être adapté sous Blender ou n'importe quel autre soft, d'ailleurs). Première chose ... faites un scale de toute la scène (elle est parenté à un objet global afin de le faire facilement) à 1000 % sinon, vous risquez d'avoir des erreurs d'approximation énorme dans ce qui suit !!!! Là, je me rend compte de deux choses : * Le mouvement de ma caméra semble vraiment très réaliste et reproduit parfaitement le mouvement que j'ai fait dans la rue. Ben j'espère bien quand même !!!.... avec un RMSE à 0.23, faut pas déconner !!! * Les points reconstruits ne sont absoluments pas précis ... et ce malgré le RMSE de 0.23 ... REMBOURSE !!!!!! Alors là je me pose l'éternelle question qui va véritablement conditionner l'intégration de mon Robot : Comment trouver la position du sol !!!???? ![]() Et bien je croit avoir trouvé une méthode qui marche à tous les coups. On se place au début de l'animation, on duplique la Caméra à son emplacement actuel et on supprime toutes ses clés d'anim afin qu'elle deviennent une caméra fixe. On appelera cette caméra "GAUCHE". On se rend à la dernière image de l'anim (ou à la centième image qui est justement la deuxième image clé), on reduplique notre caméra, on vire les clés d'anim de ce duplicata et on nommera cette deuxième caméra fixe "DROITE". On obtient donc deux caméras fixes convergentes dans l'espace. On place en Background l'image de la séquence d'images correspondant à chaque vue : - Première image de l'anim pour la cam "GAUCHE" - Dernière image (ou 100ème si vous avez choisi l'image clé) pour la cam "DROITE" Ensuite, on crée un ségments (une ligne, quoi). Dans 3DS MAX il existe le "Mètre ruban", représentant une droite contrôlable avec deux points. On place un point de contrpole de la droite exactement sur la cam "GAUCHE", donc sur son pivot ... donc sur son centre optique. Dans la vue de la cam "GAUCHE" (on regarde donc aux travers des yeux de la caméra), on déplace le deuxième point de la droite pour "visez" un élément reconnaisable dans l'image du background (par exemple, un coin du carré blanc ... sur le sol bien sur sinon ça sert à rien). On à donc une droite qui passe par le centre optique de la caméra et qui "vise" ensuite un point en particulier dans la vue caméra. On créer une deuxième droite (donc un deuxième "Mètre ruban" dans "3DS MAX") et on fait exactement la même opération .... mais sur la caméra "DROITE" ... et surtout on vise le même élément (le même coin du même carré blanc sur le sol, vous plantez pas de coin, hein ?) dans cette vue de caméra "DROITE". On à donc deux droites qui dans l'espace se croise à peu de chose prêt en un point. Et bien cette intersection, c'est la véritable position dans l'espace de ce satané coin du carré blanc !!! Placez-y un Empty afin de marquer l'endroit ! Utilisez cette méthode afin de trouver la position dans l'espace de deux autres points du sol (placez donc, deux autres Empty), assez éloignés les uns des autres et vous obtenez un triangle qui vous donnera l'élévation et l'inclinaison de votre sol. Il suffit ensuite de crée un vrai triangle où chaque vertices viendra se snapper sur chaque Empty. On peut ainsi venir aligner le pied de notre Robot sur la normale de notre triangle. L'alignement est automatique !!! En fait, on vient tout bonnement de recréer un Setup de géométrie épipolaire entre deux vues de caméras calibrés (extraites du tracking Voodoo). C'est sur cette méthode que fonctionne tous les logiciels de stéréo-modélisation comme "Image modeler" par exemple. Une petite n'image pour montrer ce que ça donne dans 3DS Max : http://coyhot.free.fr/Blender/Reconstruction_Epipolaire.jpg Si les petits gars dévelloppeurs de Voodoo insérés un module permettant de cliquez sur deux pixels "identiques" dans les deux vues différentes ... afin de donner la concordance entre les deux points, alors il pourrait récréer cette sorte de Empty directement dans Voodoo ... puisque les caméras sont déjà calibrées. Ainsi à l'export, il pourrait faire des Empty plus gros, repérant les points "définis par l'utilisateur". Avec cette méthode, on pourrait même indiquer à Voodoo directement où est le sol afin qui redresse la scène et la remète droite. J'ai commencé à faire un petit topo aux codeurs afin de leur expliquer ma théorie ... j'essaie d'envoyer ça avant la fin de la semaine. A mon avis c'est pas grand chose à faire et ce serait bougrement plus efficace que leur "Modeling Tools" avec lequel je n'ai réussi à recaler autre chose que des objets qui flottait dans les airs ... pas très pratique pour caller les pieds de mon robot sur le sol. Et puis ce serait cool de pouvoir choisir les deux Images clés nous même, afin de ne pas forcémenent prendre toujours la première. On verra bien le retour de l'équipe de DEV .... ![]()
Contribution le : 28/08/2007 01:04
|
|
_________________
François "CoyHot" Grassard Web : http://www.coyhot.com Blog : http://coyhot.blogspot.com/ Mail : francois@coyhot.com |
||
![]() ![]() |