PDA

Voir la version complète : After effects export camera



sinclairzxfr
15/02/2007, 15h08
Bonjour à tous,

Je suis à la recherche d'un petit scripte pour interpréter les données camera de After Effects pour l'exploiter dans C4D.
PS : à partir de la piste camera de AE, on peut récupérer ces données (position, rotation…)* par « copier » puis coller dans un traitement texte :


Adobe After Effects 6.5 Keyframe Data

Units Per Second 25
Source Width 500
Source Height 300
Source Pixel Aspect Ratio 1
Comp Pixel Aspect Ratio 1.06667

Position
Frame X pixels Y pixels Z pixels
0 2409.6 152 372.423
269 250 150 -740
353 250 150 -740
399 751 150 -740
407 750 150 -586
494 750 150 -586
538 1259 150 -586
547 1267 150 -440
719 1267 150 -440
756 1786 150 -440
765 1788 150 -290
904 1788 150 -290
929 1788 150 -800
950 -275 150 -800
967 -275 150 -800
983 -253 150 -588
1079 -253 150 -588
1110 -770 150 -588
1124 -779 150 -440
1337 -779 150 -440
1456 2409.6 152 372.423

X Rotation
Frame degrees
0 26
270 0
1337 0
1456 26

Y Rotation
Frame degrees
0 -82
270 0
353 0
371 10
407 0
494 0
513 -10
547 0
719 0
734 10
765 0
1337 0
1456 -82


End of Keyframe Data

Aurety
15/02/2007, 15h14
Salut Sinclair, il existe si je me souviens bien un tutorial qui traite de ce problême, d'un japonais ( kuroyama je crois ), mais te dire ou j'ai vu ça, j'en sais fichtrement rien. :arg:

Jean-Laurent
15/02/2007, 16h39
Si j'ai bien compris, il faut surtout réflechir à la manière la plus aisée de rentrer toutes tes données dans le code en ayant le moins de trucs à remanier.
Placer la caméra à un instant donné est ensuite chose facile.

Il faut donc un petit script qui sépare tous ces chiffres et les replace correctement dans une matrice de la bonne taille.

Je trouve l'idée amusante. Je manque un peu de temps en ce moment :cry2:, mais si tu n'es pas pressé, je peux te faire ça dans la semaine.

Sauf, si tu trouves avant un truc tout fait évidemment. :odile:

sinclairzxfr
15/02/2007, 17h15
D'après les informations d'Aurety, j'ai recherché sur le net en vain.. :calim:
Alors là Jean-Laurent je m'en remets à ta programmation et surtout prend le temps qu’il faut. :poucehaut:

Jean-Laurent
15/02/2007, 22h01
Bon, au premier coup d'oeil c'est pas encore gagné. :coup:

L'éditeur coffee n'aime pas trop le format des données.

Il déteste particulièrement les sauts de ligne.

J'ai pensé à tout aligner sur une seule ligne (ce qui se fait facilement, même avec le bloc note) mais le second problème c'est la taille des données qui ne rentre pas dans une seule variable par copier-coller.

Si quelqu'un a une idée pour l'une de ces deux dernières questions. :prie:

La seule bonne nouvelle pour l'instant c'est qu'une fois sur une même ligne et rentrées dans une variable, je parviens à les remettre en forme dans une matrice.

paspas
16/02/2007, 11h59
La seule bonne nouvelle pour l'instant c'est qu'une fois sur une même ligne et rentrées dans une variable, je parviens à les remettre en forme dans une matrice.

:twisted: zutttttttt c' est la partie que je savais fair aussi* :D


sinon majoul pour le rubik cube* a utlisé cette méthode

http://www.frenchcinema4d.fr/forum/index.php?topic=14828.0


Exemple : 1_90_45_%* = 1 c’est l’axe 1 , le 90 c’est la rotation en degré , le 45 c’est le temps en image,* et* le % marque la fin de ligne.


paspas

erik
16/02/2007, 13h00
Salut Sinclair, il existe si je me souviens bien un tutorial qui traite de ce problême, d'un japonais ( kuroyama je crois ), mais te dire ou j'ai vu ça, j'en sais fichtrement rien.* :arg:


Oui, le site est ici :
http://homepage.mac.com/komaruyama/Tutorials/AE/index.html
"Ko Maruyama", ah l'Asie... !

sinclairzxfr
19/02/2007, 14h41
Merci erik,

sinon pour les programmeurs en xpresso
http://maxon.digitalmedianet.com/articles/viewarticle.jsp?id=42002

Aurety
19/02/2007, 15h10
Voilà sinclair, c'est à celui-ci que je pensais. Content que tu l'ais trouvé... :poucehaut:

Jean-Laurent
19/02/2007, 19h00
sinon pour les programmeurs en xpresso


Ah, donc visiblement c'est Base80 qui a la solution avec un noeud qu'il a créé.
Il faudra que je retrouve ça.

Jean-Laurent
21/02/2007, 09h49
Aujourd'hui je devrais avoir le temps de me pencher un peu plus sur le sujet.
Je regarderai plus en détail le lien donné par sinclairzxfr.

Pour le problème de la string trop longue, visiblement l'objet "text" accepte des "strings" de longueurs suffisantes.
L'idée serait je pense de prendre 4 objet text invisibles et de copier-coller à l'intérieur (position et les 3 rotations). :wip:

Jean-Laurent
21/02/2007, 20h04
La petite avancée de la journée.

Après avoir regardé le lien et fait un petit tours sur le site de Base80, j'ai juste compris le principe. :oops:
Le "noeud" du problème étant le noeud "Text" qui permet de récupérer un fichier text et de l'exploiter.

Je suis tétu et je reste donc sur ma première idée.
Voici donc le noeud coffee "position" qui permet par simple copier-coller dans une spline text de récupérer les données sous forme d'un tableau (50,4) la taille est adaptable.



var i;
var premier;
var deuxieme;
var nombre="";
var n=0;
var p=0;
var l=1;

main()
{

var tableau=new(array,50,4);
var ligne=new(array,4);

for (i=0; i<1000 ; i++)
{

premier = strmid(Input1,i,1);
deuxieme=strmid(Input1,i+1,1);

if (l&&premier!=""&&premier[0]==32&&(evaluate(deuxieme)!=0||deuxieme=="-")) {n+=1;nombre="";}

nombre+=premier;
ligne[n]=nombre;
if (evaluate(nombre)!=0) {l=1;}

tableau[p][n]=ligne[n];

if (premier!=""&&premier[0]==10) {n=0;nombre="";p+=1;l=0;}
}}


Dans le même noeud (à 4 entrées) on récupérera les rotations.

Il ne reste maintenant qu'à construire l'Xpresso qui va autours pour déplacer la caméra. :wip:
J'espère que tu n'es toujours pas pressé. :wink:

EDIT: Finalement, tout se passe plutôt bien, je finalise le tout et je poste un lien.

http://cinema4d.chez-alice.fr/camera.JPG

Jean-Laurent
22/02/2007, 12h48
Pour ce que j'ai testé, ça marche. En cas de problème contacter le service après vente.
http://cinema4d.chez-alice.fr/importAE.JPG

Le fonctionnement est assez simple. On fait un copier-coller des données directement dans les splines textes (positions et rotations) qui sont invisibles. La caméra suit.
Par contre on ne peut visiblement pas créer de clefs d'animation en COFFEE. :cry2:

Il faudrait voir si c'est faisable en Xpresso en demandant aux spécialistes, car autrement, pour l'instant il n'y a pas d'interpolation entre les images clés. Il faut appuyer sur F9 à la main. :wip:

Le fichier en R10: http://cinema4d.chez-alice.fr/importAE.c4d
Si besoin, je peux fournir un V 9.5. :odile:

Edit: Je vais améliorer quelques petites choses.
Essayer d'enregistrer automatiquement les clefs, ça serait bien.
Mais aussi n'exécuter la mise en forme des données qu'une seule fois en début de programme.

sinclairzxfr
23/02/2007, 14h27
Quelle réactivité !

Jean-laurent tu devrais postuler chez Maxon euh chez Nemetschek. :prie:
J'attends avec impatience les nouvelles améliorations...

Jean-Laurent
23/02/2007, 18h02
Merci. :oops:
Mais on est encore très loin de la programmation de haut vol. :lol:

Pour le calcul des données une seule fois en début, c'est chose faite.
Par contre pour la création automatiques de clés j'ai bien peur que ce ne soit manifestement impossible en coffee comme en Xpresso. En tout cas je n'ai rien trouvé. :cry2:

La solution du bricoleur du dimanche pourrait consister à recréer directement l'algorythme d'interpolation entre les images clés.
Je ne connais pas AE, mais de toute manière, il n'y a aucune information sur d'éventuelles tangentes liées aux images clés. J'en déduis donc que l'interpolation entre celles-ci est une interpolation assez basique.

J'espère que tu n'es toujours pas pressé. :lol:

En résumé, si tout marche bien, il faudra faire un simple copier-coller des données et lancer le rendu.

Pour l'angle de la caméra etc... ça se passe comment? Il n'apparaît pas dans les données.

Jean-Laurent
23/02/2007, 21h19
C'est fait. :boss:
L'interpolation marche bien. J'ai actualisé le lien au dessus.

Le seul truc que je ne comprends pas c'est pourquoi le noeud "range mapper" (cartographie d'intervalle) que j'ai pourtant déjà utilisé ne marche pas.
Je souhaitais passer les degrés en radian. J'ai intégré ça dans le code tant pis (ou tant mieux), mais c'est curieux...

http://cinema4d.chez-alice.fr/intervalle.JPG

sinclairzxfr
26/02/2007, 15h30
Bonjour Jean-Laurent,


Pour l'angle de la caméra etc... ça se passe comment? Il n'apparaît pas dans les données.
Normal je ne l'ai pas utilisé dans cette compo.

Voici un autre exemple avec toutes les données de la camera sur deux clés une à 0 et l'autre 121 (frames) :

Pour info :
Attention aux rotations, celle qui est en gras correspond à Z.
Quant à "Orientation" je ne vois pas trop la différence avec les rotations XYZ.
"Point of Interest" est la cible de la caméra
"Depth of Fiel" retourne la valeur 1=activation ou 0=non activé



Adobe After Effects 6.5 Keyframe Data

Units Per Second 25
Source Width 500
Source Height 300
Source Pixel Aspect Ratio 1
Comp Pixel Aspect Ratio 1.06667

Point of Interest
Frame X pixels Y pixels Z pixels
0 250 150 0
121 240 142 14

Position
Frame X pixels Y pixels Z pixels
0 250 150 -740.741
121 242 143 -740.741

Rotation
Frame degrees
0 0
121 30

X Rotation
Frame degrees
0 0
121 10

Y Rotation
Frame degrees
0 0
121 20

Zoom
Frame pixels
0 740.741
121 742.041

Depth of Field
Frame
1

Focus Distance
Frame pixels
0 740.741
121 725.741

Aperture
Frame pixels
0 25.3093
121 6.30934

Blur Level
Frame percent
0 100
121 76

Orientation
Frame degrees
0 0 0 0
121 20 5 12


End of Keyframe Data

Jean-Laurent
27/02/2007, 11h02
Pour deux clés seulement, on a plus vite fait de tout rentrer à la main. :mrgreen:

Effectivement, je ne vois pas ce que représente "orientation" puisque ce n'est pas la même chose que les rotations?
Il faudrait que tu testes, en l'absence de rotation et avec une rotation simple de la caméra suivant un axe, de 90°.

De même si la caméra a une cible, seule la position devrait avoir de l'intérêt, les rotations suivent.
C'est peut-être une redondance.

Si tu es amené à changer souvent les distances focales, l'ouverture de la caméra etc... on peut l'intégrer au code si tu veux.

sinclairzxfr
01/03/2007, 16h54
Bonjour Jean-laurent,


Si tu es amené à changer souvent les distances focales, l'ouverture de la caméra etc... on peut l'intégrer au code si tu veux.
Effectivement c'est une bonne idée :poucehaut:

Pour l'orientation et les rotations de la caméra voici ce que dit l'aide de AE.
(depuis le temps que j’utilise AE je ne comprends de moins en moins ces deux aspects) :o


Vous pouvez régler la rotation 3D de deux manières : en modifiant les valeurs de la propriété Orientation d'un calque ou en modifiant ses valeurs de rotation X, Y et Z. Vous pouvez utiliser l'outil Rotation pour modifier les valeurs de la propriété Orientation ou les valeurs de rotation X, Y ou Z.

Lorsque vous animez l'une des valeurs de la propriété Orientation d'un calque 3D, le calque se déplace le long du chemin de rotation le plus court possible dans l'espace 3D, pour créer des rotations naturelles et logiques. Vous pouvez lisser ce tracé en convertissant l'interpolation d'image clé spatiale en une interpolation de Bézier automatique.

Lorsque vous animez l'une des valeurs de rotation X, Y ou Z d'un calque 3D, ce dernier tourne le long de chaque axe individuel. Vous pouvez définir le nombre de rotations et l'angle de rotation. Vous pouvez également ajouter des images clés à la rotation du calque sur chaque axe individuel. L'animation à l'aide de ces propriétés offre davantage d'options de réglage des images clés que la propriété Orientation, mais produit un déplacement plus aléatoire. Cette propriété permet de créer des rotations avec plusieurs révolutions le long d'un axe unique.

sinclairzxfr
13/03/2007, 13h14
Bonjour à tous,

Pour information,
une approche pour 3Dsmax avec une discussion pour C4D

http://generalspecialist.com/2007/02/export-from-after-effects-to-3ds-max.asp (http://generalspecialist.com/2007/02/export-from-after-effects-to-3ds-max.asp)

Jean-Laurent
13/03/2007, 17h14
Pour moi certaines options restent encore obscures. :oops:
Je n'ai pas plus compris que toi la citation du manuel, et ne possédant pas AE, c'est difficile de trouver à l'aveuglette.

Par contre, on peut encore améliorer un peu l'Xpresso, voir le transformer en plug Coffee avec une interface dans le style de ce plug 3DS.

On pourrait récupérer par exemple le fichier complet directement en un bloc et extraire les informations qui nous intéressent. Plus besoin de copier les éléments positions et rotations séparemment.
Pour cela il faut que le fichier texte soit toujours le même. Ou alors connaître les différents fichiers textes associés à chaque version.

Je ferai un essai en fin de semaine mais je n'ai pas encore essayé de récupérer le texte d'un document en coffee.
Si ça intéresse quelqu'un qui aurait une idée, ou qui a déjà fait un plug semblable, il ne faut surtout pas hésiter. J'expliquerais volontier les éventuels points obscures du code précédent. :odile:

johnc
15/03/2007, 03h05
vous soulevez un problème intéressant ... :poucehaut: je vous suis....