Three.js: Von Blender exportiertes Modell verformt sich, wenn Animation angewendet wird

Erstellt am 7. Sept. 2014  ·  3Kommentare  ·  Quelle: mrdoob/three.js

Beim Laden von Modellen aus dem Blender-Exporter tritt ein seltsames Problem auf. Wenn ich das Modell lade, ohne eine Animation anzuwenden, sieht es so aus:

screen shot 2014-09-07 at 1 26 00 am

Aber sobald ich Animation anwende, verformt sich das Modell und sieht so aus--

screen shot 2014-09-07 at 1 24 25 am

mit entsetzlich gestreckten Fingern und verdrehtem Körper. Das Modell führt die Animation weiterhin aus, jedoch verformt.

Hier ist der Code, den ich zum Laden und Animieren des Modells verwende

    var loader = new THREE.JSONLoader();
    loader.load( "js/models/Golfer_SWING.js", function(geometry, materials){

    for ( var i = 0; i < materials.length; i ++ ) {
        var m = materials[ i ];
        m.skinning = true;
    }

    playerObject = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial( materials ) );
    playerObject.position.set( -50, -250, 0 );
    playerObject.scale.set( 100, 100, 100 );
    playerObject.rotation.y = -180 * Math.PI/180;

    scene.add( playerObject );

    playerObject.castShadow = true;
    playerObject.receiveShadow = true;

    helper = new THREE.SkeletonHelper( playerObject );
    helper.material.linewidth = 3;
    helper.visible = false;
    scene.add( helper );
    swingAnimation = new THREE.Animation( playerObject, geometry.animations[0] );
    swingAnimation.play();

    } );

Ich habe eine Reihe von häufig vorgeschlagenen Konfigurationsänderungen an der Blend-Datei ausprobiert, aber keine davon funktioniert. Hier ist ein Link zur Blend-Datei.

http://cl.ly/3H3M2T3i1o1p

Ich verwende r68 und den neuesten Mixer-Exporter.

Help (please use the forum)

Hilfreichster Kommentar

Ich habe einige Korrekturen an Ihrer Blender-Datei vorgenommen, damit sie für den Three.js-Export geeignet ist.

  • Maßstab der Mesh-Objekte zurücksetzen (Strg-A, im Objektmodus)
  • Die Animation wurde so geändert, dass sie bei Frame 1 statt bei Frame 0 beginnt. Alle anderen Keyframes wurden um einen Frame verschoben.
  • Bei Frame 0 wurde ein Rest-Pose-Keyframe hinzugefügt (außerhalb des neuen Animationsbereichs)
  • Alle Scheitelpunkte des Keulennetzes zu einer Scheitelpunktgruppe namens "hand.R" hinzugefügt (wie der Knochenname)

Jetzt können Sie das Modell und die Animation korrekt exportieren, indem Sie Bild 0 auswählen und dann exportieren.

https://dl.dropboxusercontent.com/u/46299249/Golfer_FIXED.blend

Alle 3 Kommentare

Sie _müssen_ Ihr Netz und Ihre Animation exportieren, wobei das Skelett von allen Transformationen befreit ist.

Ich habe es mit Ihrer Datei versucht und die richtigen Ergebnisse erzielt, indem ich jeden Bone im Pose-Modus auswählte und dann Pose->Clear Transform->All auswählte und dann einen Three.js-Export durchführte.

Dies hat keinen Einfluss auf Ihre Szene oder andere Keyframes, aber Sie müssen dies jedes Mal tun, wenn Sie exportieren.

Ich habe einige Korrekturen an Ihrer Blender-Datei vorgenommen, damit sie für den Three.js-Export geeignet ist.

  • Maßstab der Mesh-Objekte zurücksetzen (Strg-A, im Objektmodus)
  • Die Animation wurde so geändert, dass sie bei Frame 1 statt bei Frame 0 beginnt. Alle anderen Keyframes wurden um einen Frame verschoben.
  • Bei Frame 0 wurde ein Rest-Pose-Keyframe hinzugefügt (außerhalb des neuen Animationsbereichs)
  • Alle Scheitelpunkte des Keulennetzes zu einer Scheitelpunktgruppe namens "hand.R" hinzugefügt (wie der Knochenname)

Jetzt können Sie das Modell und die Animation korrekt exportieren, indem Sie Bild 0 auswählen und dann exportieren.

https://dl.dropboxusercontent.com/u/46299249/Golfer_FIXED.blend

satori99, vielen Dank! Ich kämpfe seit Tagen damit. Und vielen Dank für die Bereitstellung einer festen Datei. Bei mir funktioniert es jetzt :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen