2011-05-25 13 views
11

(Aşağıdaki orijinal posta) Düzenle (Karıştırıcıdan ogl olarak görüntülenecek doğru kemik verisi?

)

Bu yüzden aşağıdaki kod ile geldim. Örgü, kemik yapısı ve animasyonları ihraç edebilirim. Basit bir iskeleti canlandırabilirim. Ama bir nedenden ötürü birden fazla kemiği canlandırıyorsam, bir şeyler ters gidiyor ve kol yanlış eksende hareket edecektir.

Benim cpp kodu burada: http://kyuu.co.uk/so/main.cpp

Benim piton ihracat kodu burada: http://kyuu.co.uk/so/test.py

birisi yanlış yapıyorum söyleyebilir misiniz? Blenderdaki kemik ruloluyla ilgili bir şey olabileceğini düşünüyorum. Bunun hakkında birçok yayın gördüm.

Teşekkürler.

(Orijinal Mesaj :)

ben eksik ben çözemiyorum şimdi ve hala bir süredir bu sorun üzerinde çalışıyor olması, bu yüzden kimse tür bana yardımcı olacak umuyorum: 3

Sağ

class bone { 
    bone * child; 
    Eigen::Matrix4f local_bind_pose; // this i read from a file 
    Eigen::Matrix4f final_skinning_matrix; // i then transform each vertex by this matrix 

    // temporary variables 
    Eigen::Matrix4f inv_bind_pose; 
    Eigen::Matrix4f world_bind_pose; 
} 

Ie: benim uygulamasında aşağıdaki kodu gibi bir şey var Basit bir kemik hiyerarşisi.

ben birlikte inv_bind_pose çalışabilir inanıyoruz:

world_bind_pose = bone.parent.world_bind_pose * local_bind_pose 
inv_bind_pose = world_bind_pose.inverse() 

Ben bind_pose ana kemiğe göreceli olması gerektiğini biliyoruz.

Blender'ın z = up olduğunu biliyorum ve y = up kullanıyorum.

Ancak bu bilgileri karıştırıcıdan veremiyorum. 2.56.3 sürümünü kullanıyorum.

Matrisin döndürme kısmı bone.matrix_local olur mu? Çeviri kısmı bone.tail() - bone.head() mu?

Kemik rulosu nedir? Bu sonucu etkiliyor gibi görünüyor.

Bazı referanslar:

http://www.gamedev.net/topic/571044-skeletal-animation-bonespace

http://blenderartists.org/forum/showthread.php?209221-calculate-bone-location-rotation-from-fcurve-animation-data

http://www.blender.org/development/release-logs/blender-240/how-armatures-work

http://code.google.com/p/gamekit/source/browse/trunk/Engine/Loaders/Blender/gkSkeletonLoader.cpp?spec=svn482&r=482

Thank-size çok!

+0

Blender> 2.6'da, openGL alanına dönüştürmek için bpy_extras.io_utils.axis_conversion (bkz: blender.org/documentation/blender_python_api_2_66a_release/…) 'i kullanabilirsiniz. – sarahm

cevap

0

Bu oldukça karmaşık görünüyor. Matris dönüşümlerini nasıl uygulayacağınızın sırasını kolayca bozabileceğinizi tahmin ediyorum. Her şeyi kafanızda tutabileceğiniz çok basit bir sistemle başlamayı deneyin.

+0

Evet, bence sorun bu.Bunu en alt seviyeye kadar basitleştirmeye çalıştım. Belki de kodlama kodu olmadan bir göz atacağım ... Cevabınız için teşekkür ederim. :) – ashleysmithgpu

İlgili konular