PDA

Voir la version complète : Compatibilité Cinema4D / Unity3D



proparjak
09/03/2008, 12h38
Voici un rapide retour d'expérience de l'utilisation de C4D dans un processus de production pour la création d'une application 3D temps réel avec Unity (Ça c'est du teaser).

Autant le dire d'emblée : Cinema 4D version 10 n'est pas la plus compatible des applis 3D avec Unity.
Je devrais dire d'ailleurs "n'est plus" car bizarrement, Maxon, en faisant sa mise-à-jour, depuis la version 9.6 vers la 10 a créer un export FBX moins performant. A tel point qu'Unity Technologies conseille de rester sur le 9.6.

Explication.
Le format FBX ne se limite pas à être un bon "standard" permettant de passer d'un modeleur à un autre.
En soi, ce format est parfait pour le temps réel car il permet de faire du multitaking.

Ceux qui utilise Mocca dans le format propriétaire C4D doivent savoir ce que ça veut dire.
Le multitaking c'est la possibilité de créer différentes animations (marche, course, saut...) dans des "calques" séparés. Il ne suffit plus alors qu'a "appeler" un calque dans Unity3D pour le jouer. Il peut même mixer plusieurs calques et donc plusieurs animations pour donner des transitions naturelles entre la marche et la course par exemple (c'est ce que nous avons fait dans Besmashed).

Pourquoi C4D 10 pose un problème.
Déjà (mais ça c'était aussi avec les précédentes versions), il ne permet pas l'export FBX de plusieurs boucles d'animations. Nous avons dû créer une application qui récupérait toutes les boucles pour les réunir en un même format.

Deuxième point, cette application que nous avons créée n'a pas suffit à résoudre un épineux problème (là lié à la version 10 seule) : les boucles se font mal et nous avons affaire à ce que nous appelons chez nous des "effets de bord".
C'est à dire que sur une animation de 30 frames par exemple, dès que la lecture fait sa boucle et donc passe de la frame 30 à 1 (ou plutôt 29 à 0), les bones partent dans n'importe quel sens.
On a donc face à soi un personnage attent du syndrome de tourette. Insoluble avec C4D 10.
Unity3D a signalé ce problème que Maxon s'est empressé d'ignorer avec sa récente mise-à-jour.

Ces problèmes nous ont fait perdre 1 mois et demi de travail.
Nous avons trouvé la solution en un petit soft 3D s'appelant Cheetah3D qui, lui, est parfaitement compatible avec Unity3D.
Il n'est pas cher, très rudimentaire sur certains aspects de travail surtout quand on passe du confort royal de C4D et demande encore pas mal d'appoints (copie de clés d'anim et copie de take notamment) mais il a d'énormes possibilités au regard de son prix et surtout les boucles d'animations sont nickels.
Malheureusement, ce seront les possesseurs de Macintosh qui auront cette alternative car Cheetah3D ne tourne pas sur Windows.

Voilà, voilà. Long post.
En tous cas, aujourd'hui, j'utilise encore C4D car il est confortable et qu'il me permet de travailler facilement toute la préparation : modeling, map UV, bones et influences puis je passe à Cheetah pour les animations et l'intégration avec Unity3D.

A bientôt.

nikolas
09/03/2008, 12h41
Salut proparjak. Merci de ton retour. Je suis aller faire mumuse avec Besmashed, un bon casual game :poucehaut:
Je suis également aller faire un tour sur le blog de gamepulp et j'ai été choqué de l'article de joystick et de sa conclusion. VOus faites du bon boulot en tout cas :poucehaut:

proparjak
09/03/2008, 12h51
Merci Nikolas de ton appréciation et de ton soutien ! :)
Oui l'article m'a laissé un peu sur le c.. d'où ma réaction sur le blog. C'est pas évident de faire son trou. En tous cas, je crois qu'on maintiendra le modèle économique qu'on veut mettre en place : gratuit, illimité dans le temps, avec pub sur une version "light" et payant pour être débarrassé des pubs et en version totale.

shtl
09/03/2008, 13h48
Ah oui tiens, après m'être fait massacré lors de ma dernière partie de Besmashed, je sentais que seul un gros boudin me permetrai de sauver ma face de mauvais perdant. C'est con, il y a eu du nouveau apparement! (bubbles me manque :( )
J'ai vu les captures des différents niveaux, ça à l'air marrant comme tout :)
Ça donne envi de retenter sa chance. :bounce:
Bon je comprend pas du tout l'article de Joystick, en même temps la presse française de jeux vidéo c'est pas brillant non plus hein :mrgreen: M'enfin c'est valable pour la presse française tout court cela dit :mrgreen: :mrgreen: Bref. La joie des cadeaux empoisonnés. :lol:

Et je ne savais pas quelle mésaventures vous aviez eu avec la r10 et les exports FBX. Je pensais que ce format ne serai plus supporté, encore moins depuis la fusion autodesk. J'ai une petite question. Est-il possible de passer par la r9.6 sans avoir ces problèmes "d'effets de bords"? Où est-ce que le passage par Cheetah3D est obligatoire pour les utilisateurs de c4d, quelle que soit la version?

Enfin quoiqu'il en soit vous vous en tirez très bien :)


PS:
Avoir au moins une version démo jouable, c'est quand même une technique qui fait ses preuves depuis toujours. :poucehaut:

Pascal
09/03/2008, 14h08
J'ai eu l'occasion de voir Chhetah3D, et la ressemblance de l'interface avec celle de C4D m'a laissé particulièrement dubitatif. Pure coïncidence ou plagiat ? Enfin bref, c'est vrai qu'il a l'air assez sympa, pour ce que j'en ai vu.

Pour ma part, le principal problème que j'ai rencontré, dans l'échange C4D-Unity, concerne la récupération des maps. J'utilise le FBX, pour l'instant sans animation, et j'ai remarqué que l'export ne signale pas les absences d'images. Du coup, quand le modèle arrive dans unity, on peut essayer de plaquer un map tant qu'on veut, ça ne marche pas, on a juste la teinte moyenne. Donc, bien penser à vérifier les chemins (un simple rendu dit tout). Il faut aussi toujours placer un matériau avec map sur un objet, au risque de ne pouvoir le faire après coup dans Unity. C'est étrange, on dirait que tant qu'on n'a pas mis de texture, le tag UV n'est pas pris en compte, et donc n'est pas exporté dans le fichier.

proparjak
09/03/2008, 17h50
Content que ça te plaise shtl ! :) Merci pour les compliments ;)
Pour l'article, c'est vrai que c'est assez curieux mais bon, on avance.
Pour répondre à ta question, avec la 9.6 il n'y a pas ces mauvais effets de bord. Il faudra juste manipuler tes différents fichiers FBX pour les réunir en un seul.
Comme je suis super sympa 8) voici le petit exe qu'on a fait pour résoudre cette problématique : http://www.gamepulp.com/FBX_take_joiner.zip
Bon c'est de l'exe windows. Comme on bosse avec les deux plateformes, on a cette capacité de faire une chaîne de prod' illogique en créant un outil windows pour récupérer un fichier sur mac.
Mais bon ça peut toujours être utile.

Pé.
En effet, le problème de chemin est pas mal fastidieux avec Unity3D, que ce soit à partir de Cheetah3D comme Cinema4D. C'est surtout dû à la façon dont fonctionne Unity3D car, par défaut, il ne peut pas s'empêcher de créer des matériaux quand il y a des objets sans. Il faut que dès la première fois qu'il convertit le fichier C4D ou JAS, les objets aient bien leur matériau. Mais même avec un matériau retiré, avec Cheetah, je n'ai pas eu ce problème avec l'uv map.
Peut-être que C4D réagit différemment.

Un autre point qui n'a rien à voir :
Enfin, il faut bien veiller à ce que dans votre fichier, il n'y ait qu'un seul élément animé sinon aucune animation n'est pris en compte dans Unity. Il faut des éléments animés séparés les uns des autres et ajoutés un à un dans Unity3D.
Ce qui manque aussi beaucoup, c'est une gestion des animations via une timeline pour plusieurs objets, pour des cinématiques par exemple ou des environnements "complexes", mais nous allons nous renseigner sur ce point car un studio a créé cet outil dans Unity3D pour leurs propres besoins. Affaire à suivre...

Pascal
09/03/2008, 18h20
Oui, la communauté bouge beaucoup. La semaine dernière est apparu un script de baking pour le moins impressionnant, ce qui permet de réaliser des maps bakés vraiment en conformité avec l'éclairage mis en place dans Unity.

proparjak
10/03/2008, 12h14
J'ai oublié une chose.
Il faut exporter les FBX en texte dans les préferences d'exportation de C4D pour utiliser le FBX Take Joiner.