PDA

Voir la version complète : Cinema4D animation et three.js



Duyi
27/07/2019, 01h18
Bonjour à tous :),

J’essaie à titre expérimentale d'exporté des modèles de cinema4D vers three.js.
Alors pour les objets immobiles pas de problème, pour les animations simples (position, scale, rotation) impec.

Mais alors faire des animations avec des joints, soit ça part en sucette, soit ça charge pas. J'ai testé les exports collada, glTf, fbx, rien ne fonctionne correctement. J'ai testé de baker les animations pour éviter des bugs mais rien n'y fait.

Il y a bcp de ressource avec blender mais avec c4d j'ai pas trouvé gd chose.

Merci pour votre aide :icon_prie:

César Vonc
27/07/2019, 08h40
Salut,

De mon expérience, le format FBX marche le mieux. Quel genre de soucis as-tu ? As-tu également bien téléchargé la dernière version de three.js et du fbxloader ?

Duyi
27/07/2019, 10h38
Oui j'ai bien les dernières versions des loaders du pack officiel.

Voici mon process

Je crée un mesh avec joint dont j'anime le goal

https://zupimages.net/up/19/30/2tmd.gif

l'export fbx (c4d r20)

https://zupimages.net/up/19/30/x42b.png

le rendu

https://zupimages.net/up/19/30/99i2.gif

le FBX loader comme dans la doc



var loader = new THREE.FBXLoader();
loader.load('./cube.fbx', function (object, onLoad, onProgress, onError) {
mixer = new THREE.AnimationMixer(object);
var action = mixer.clipAction(object.animations[0]);
action.play();
object.traverse(function (child) {
if (child.isMesh) {
child.castShadow = true;
child.receiveShadow = true;
}
});

if (onError) {
console.log(onError)
}
scene.add(object);
});



J'ai testé d'autre export collada, GLTF. J'ai testé un bake alembic + export fbx. Le bake en PLA. J'ai tjr des rendus comme ça ou alors ça charge pas.

Je pense que je dois mal faire les choses concernant l'animation de joints mais je trouve pas d'infos à ce sujet

Duyi
28/07/2019, 15h20
Bon après multiple essais, j'ai pas trouvé mieux que de passer par blender pour réexporter en fbx, ce qui règle le problème :(.

César Vonc
28/07/2019, 19h37
As-tu essayé d'exporter ton fbx dans d'autres versions que la 7.5 ?

Normalement elle devrait marcher mais il doit y avoir un bug dans le fbxloader, la doc stipule que les fichiers sont pris en charge à partir de la 6.4 en version binaire :

https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/FBXLoader.js


Peux-tu poster ton fichier d'exemple ainsi que le fbx de blender ? J'y jetterai un œil dès mon retour de vacances.

Duyi
28/07/2019, 21h30
J'ai ajouté les fichiers en PJ.

Oui j'ai testé toutes les versions fbx, même résultat.

Les différences que j'ai remarqué entre les deux versions c'est le poid le fichier c4d est ~ trois fois moins lourd.

Et les animations sont exportés de manières différentes.

Blender me retourne un tableau avec 3 animations




Array(3)

0: AnimationClip

duration: 3
name: "Root|Joint_3_Goal|CINEMA_4D_Main|Layer0"
tracks: (15) [VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack]
uuid: "2B3F7C81-B4C7-49D1-86B0-2D33DB22FE8F"
__proto__: Object


1: AnimationClip

duration: 3
name: "Root|Root|CINEMA_4D_Main|Layer0"
tracks: (15) [VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack]
uuid: "2BD9D82A-16D8-48AE-85EA-9087F0D4B351"
__proto__: Object


2: AnimationClip

duration: 3
name: "Root|Root|CINEMA_4D_Main|Layer0.001"
tracks: (15) [VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, VectorKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack]
uuid: "DA88F3BB-5BFE-46C4-B145-5B87E96B02B6"
__proto__: Object


length: 3




Résultat :
https://zupimages.net/up/19/30/xyjk.gif

Alors que j'en ai qu'une sous c4d




0: AnimationClip

duration: 3
name: "CINEMA_4D_Main"
tracks: (3) [QuaternionKeyframeTrack, QuaternionKeyframeTrack, QuaternionKeyframeTrack]
uuid: "7D629C2E-8C07-4302-A217-E29DD4755675"
__proto__: Object


length: 1
__proto__: Array(0)


Résultat :
https://zupimages.net/up/19/30/zv3l.gif

César Vonc
22/10/2019, 00h25
Je confirme que l'export FBX de C4D n'est pas très compatible avec ThreeJS, toujours à l'heure actuelle, je cherche également une solution autre que Blender. : /

Édit : J'arrive à un résultat bien meilleur si tous les axes des objets animés sont centrés et sans rotation.