Three.js: O modelo exportado do Blender deforma quando a animação é aplicada

Criado em 7 set. 2014  ·  3Comentários  ·  Fonte: mrdoob/three.js

Estou encontrando um problema estranho ao carregar modelos do exportador do Blender. Quando carrego o modelo sem aplicar animação, fica assim -

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

mas uma vez que aplico a animação, o modelo deforma e se parece com isto -

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

com os dedos horrivelmente esticados e o corpo torcido. O modelo ainda executa a animação, mas deformado.

Aqui está o código que estou usando para carregar e animar o modelo

    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();

    } );

Eu tentei um monte de alterações de configuração comumente sugeridas para o arquivo blend, mas nenhuma delas funcionou. Aqui está um link para o arquivo blend.

http://cl.ly/3H3M2T3i1o1p

Estou usando o r68 e o exportador de liquidificador mais recente.

Help (please use the forum)

Comentários muito úteis

Fiz algumas correções em seu arquivo do blender para torná-lo adequado para exportação do three.js.

  • Redefina a escala dos objetos de malha (ctrl-A, no modo de objeto)
  • Alterou a animação para começar a partir do quadro 1, em vez do quadro 0. e mudou todos os outros quadros-chave em um quadro.
  • Adicionado um quadro-chave de repouso no quadro 0 (fora do novo intervalo de animação)
  • Adicionados todos os vértices da malha do clube a um grupo de vértices denominado "mão.R" (igual ao nome do osso)

Agora você pode exportar corretamente o modelo e a animação selecionando o quadro 0 e, em seguida, exportando.

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

Todos 3 comentários

Você _deve_ exportar sua malha e animação com o esqueleto limpo de todas as transformações.

Tentei com seu arquivo e obtive resultados adequados selecionando cada osso no modo de pose e selecionando Pose-> Clear Transform-> All, e então fazendo uma exportação de three.js.

Isso não afetará sua cena ou outros quadros-chave, mas você deve fazer isso sempre que exportar.

Fiz algumas correções em seu arquivo do blender para torná-lo adequado para exportação do three.js.

  • Redefina a escala dos objetos de malha (ctrl-A, no modo de objeto)
  • Alterou a animação para começar a partir do quadro 1, em vez do quadro 0. e mudou todos os outros quadros-chave em um quadro.
  • Adicionado um quadro-chave de repouso no quadro 0 (fora do novo intervalo de animação)
  • Adicionados todos os vértices da malha do clube a um grupo de vértices denominado "mão.R" (igual ao nome do osso)

Agora você pode exportar corretamente o modelo e a animação selecionando o quadro 0 e, em seguida, exportando.

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

satori99, muito obrigado! Estou lutando com isso há dias. E muito obrigado por fornecer um arquivo fixo. Agora está funcionando para mim :)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

konijn picture konijn  ·  3Comentários

scrubs picture scrubs  ·  3Comentários

fuzihaofzh picture fuzihaofzh  ·  3Comentários

filharvey picture filharvey  ·  3Comentários

alexprut picture alexprut  ·  3Comentários