Three.js: Muat Animasi Animasi Mixamo

Dibuat pada 11 Feb 2015  ·  67Komentar  ·  Sumber: mrdoob/three.js

Hei im mencurangi dan menghidupkan karakter saya dengan mixamo ... lalu saya mengimpornya ke blender melalui FBX ... saya kemudian mengekspornya ke js dengan eksportir Anda (mencoba setiap eksportir ... setiap).

Hasilnya ada di sini:
http://instagram.com/p/y8NQjQkk9-/?modal=true

Itu selalu terlihat terdistorsi seperti ini dan aku sepertinya tidak bisa memahaminya ... selalu tangan ... Apakah karena jumlah tulang. mixamo memiliki 16 atau sth. dan marine_anim dari contoh lebih dari 50.

Tolong bantu saudara keluar ... setelah tiga hari saya di akhir kebijaksanaan saya | bermain-main

Question

Komentar yang paling membantu

Atau Anda dapat mengekspor sebagai FBX dari Mixamo dan memuat langsung menggunakan FBXLoader.
Pada rilis terakhir (R89) seharusnya bekerja dengan sangat lancar.

Semua 67 komentar

Setelah PR ini https://github.com/mrdoob/three.js/pull/6052 digabungkan, saya sarankan untuk mencoba eksportir dari cabang dev. Ini memiliki 2 opsi posisi pose yang berbeda untuk POSE dan REST . Setel armatur Anda ke satu atau yang lain, lalu selama ekspor pastikan properti Skeletal animation cocok. Cobalah keduanya dan lihat apakah ada yang membantu. Untuk beberapa orang POSE berfungsi, dan yang lainnya REST .

hmm jadi diekspor menggunakan istirahat animasi kerangka dan dalam mode pose ...

ini adalah file saya http://we.tl/CNM5qEmBMs
termasuk final asli dan kedua ekspor ...

Mode istirahat = tidak ada gerakan sama sekali
Mode pose = distorsi aneh

u berkata "Ini memiliki 2 pilihan posisi pose yang berbeda untuk POSE dan REST. Setel armature Anda ke satu atau yang lain" ... saya tidak tahu bagaimana mengatur amature saya menjadi pose atau istirahat ... saya ingin menggunakan blender hanya sebagai a penerjemah dari mixamo ke threejs ... maaf jika pertanyaan saya adalah noob

maksud Anda mode pengeditan pose dan mode edit untuk objek?

Ok Pose mode --- distorsi yang sama
Edit mode log kesalahan berikut:

error

Tidak dapat membuat ulang kesalahan ini tetapi saya perhatikan, dengan melihat nomor baris di traceback, Anda mungkin tidak menggunakan versi (terbaru) yang sama dengan yang ditemukan di dev . Pastikan juga Anda tidak melakukan ekspor Scene dengan aset ini. Lakukan saja ekspor geometri tunggal untuk saat ini (karena ObjectLoader belum berfungsi dengan mesh berkulit).

Sejauh menyangkut animasi yang rusak; Saya dapat membuat ulang animasi yang rusak dan masalah animasi yang hilang. Ada orang yang mendapatkan pengekspor animasi yang berfungsi (contoh https://github.com/mrdoob/three.js/issues/5582#issuecomment-73444737) jadi saya curiga ada beberapa masalah dengan proses impor FBX. Sangat sulit untuk menentukan apakah itu eksportir atau impor FBX. Saya bertanya-tanya apakah ada transformasi yang perlu diterapkan pada tulang, tetapi saya belum tahu.

Halo, terima kasih banyak atas waktu dan wawasan Anda!

Anda mungkin tidak menggunakan versi (terbaru) yang sama dengan yang ditemukan di dev.

Saya pikir saya bekerja dengan versi terbaru karena saya dapat memilih pose dan istirahat:
"Opsi animasi sekarang menjadi enum yang mengharuskan pengguna untuk memilih antara POSE dan REST"

karena ObjectLoader belum bekerja dengan jerat yang dikuliti

Dari pengalaman saya itu tidak gila ... saya memuat geometri dan adegan dengan objectloader menjadi threejs. Kesalahan berikut dibuat dengan Objectloader dan memberikan hasil yang sama seperti ekspor Geometrie sebelumnya.
newerror

Saya dapat membuat ulang animasi yang rusak dan masalah animasi yang hilang.

Akan sangat menarik jika Anda TIDAK dapat membuat ulang masalah ...
Karenanya, apakah Anda melihat kemungkinan untuk mengekspor model ke threejs ...

Ini menarik secara umum sebagai model exportet oleh mixamo. Jika model ini berhasil - setiap model mixamo akan berhasil. (dalam teori ;))

terima kasih telah memeriksanya.

Dengan versi Blender saat ini dan hanya geometri dan tanpa ekspor adegan saya dapatkan dalam mode pose:

poseterror

dan dalam mode istirahat

resterror

saya hanya dapat mengekspor geometri jika saya mengekspor adegan lubang

ok saya pikir saya menemukannya ... ini adalah bug dalam referensi antara simpul geometri dan animasi tulang ... mesh dan kerangka tidak aktif

Setelah menskalakan secara manual dan memutar mesh ke arah kerangka seperti ini

for (var i = 0; i < geometry.children[0].geometry.vertices.length; i++) {
                vector = geometry.children[0].geometry.vertices[i];
                var axis = new THREE.Vector3(0, 1, 0);
                var angle = Math.PI / 2;
                geometry.children[0].geometry.vertices[i].applyAxisAngle(axis, angle);
                geometry.children[0].geometry.vertices[i].multiplyScalar(0.01);
 }

saya mendapat hasil yang cukup baik.

Jadi pertama-tama - mengapa saya perlu memutar mesh ... saya ingat ketika mengimpor ke mixamo bahwa saya harus memutar model saya tepat 90 derajat ... itu karena -z mengarahkan
Mengapa penskalaan? tidak tahu...

sekarang datang hal buggy model saya tidak memiliki TPos yang sempurna ... lengannya rendah ... saya memasangnya di mixamo dan itu masih sempurna setelah itu ... saya melihatnya di blender ... dan itu sempurna untuk ... melihatnya secara maksimal juga sempurna.
LALU ekspor ke Threejs dan pemetaan antara tulang dan tubuh mengacu pada tubuh yang aslinya dibuat secara maksimal.

tpose

karenanya ada bug matematika dalam mereferensikan simpul dan tulang dalam matriks transformasinya.

Saya ingin tahu apakah itu benar-benar bug atau malah fitur opsional. Ini bisa dengan sangat baik memperbaiki masalah yang Anda alami tetapi menghentikan ekspor untuk orang lain yang tidak harus mengimpor aset FBX (sesuatu yang telah saya lihat sebelumnya dengan animasi POSE dan REST). Logika yang digunakan (untuk tulang dan simpul) telah ada untuk sementara waktu (disalin dari eksportir lama) dan saya tidak mengatakan bahwa itu sempurna atau tanpa kekurangan tetapi jika ini adalah bug dalam matematika, saya pikir kita akan melihatnya lebih banyak masalah. Harus menerapkan contoh kode Anda ke eksportir dan kemudian menjalankan banyak tes pada banyak kasus uji (yang bukan sesuatu yang saya bohongi).

Saya telah melihat masalah serupa dalam produksi di mana suatu aset melakukan banyak perjalanan melalui berbagai program dan eksportir. Tambahkan ke re-orientasi sumbu persamaan ini dan Anda memiliki resep untuk kejahatan yang dapat disertifikasi. Jika saya dapat menemukan cara untuk menerapkan ini ke eksportir, itu akan menjadi pilihan hanya sampai ada kepastian yang jauh lebih besar bahwa itu memang berlaku untuk semua pengguna dan bukan kasus sudut.

Dengan versi Blender saat ini dan hanya geometri dan tanpa ekspor adegan saya dapatkan dalam mode pose:

Error tersebut secara spesifik mengatakan "Bukan objek mesh yang valid". Ekspor geometri didasarkan pada pemilihan dan kemungkinan besar Anda telah memilih dinamo, bukan jala.

hai bung lagi terima kasih telah memeriksanya.
saya tidak ingin mengatakan bahwa kode saya harus masuk ke eksportir. Apa yang ingin saya tunjukkan adalah: bahwa dalam rantai dari max ke mixamo ke blender - semuanya ditetapkan sebagaimana mestinya. setelah mencapai threeJs - ada perubahan sederhana yang terjadi (dalam kasus saya itu membusuk dan skala) yang menyebabkan kesalahan .. transformasi ini mengacu pada mesh asli yang pernah dibuat (di mana pun) dan diabaikan dalam blender dan mixamo ... tetapi dihidupkan kembali selama ekspor.

sayangnya saya harus mengakui bahwa saya bukan seorang penyihir matriks - jika tidak saya akan senang memberikan bantuan karena kalian bekerja sangat keras. Terima kasih atas pemaparan anda.

Saya tidak pernah menggunakan mixamo. Apakah itu menggunakan Y-up? Yang saya ingin tahu apa yang terjadi adalah jika maksimo adalah Y-up maka impor FBX harus mengubah orientasi aset ke Z-up, dan kemudian eksportir mereorientasi lagi untuk Y-hingga three . Bertanya-tanya apakah transformasi aset perlu diterapkan di Blender setelah impor jika itu kemudian akan mengekspor dengan benar ke three .

Menerjemahkan rig dari satu platform / format ke yang lain menjadi jelek setelah lebih dari beberapa iterasi. Bahkan di beberapa pipeline dan alat paling canggih yang pernah saya gunakan, selalu ada batasan tentang apa yang dapat dilakukan oleh aset yang dicurangi. Mungkin ada solusi di luar sana yang berhasil untuk Anda dan semua orang, tetapi belum jelas apa itu.

saya tidak ingin mengatakan bahwa kode saya harus masuk ke eksportir.

Dan saya lebih umum mengacu pada sesuatu yang akan mencoba menerapkan sudut sumbu ke posisi simpul.

vector = geometry.children[0].geometry.vertices[i];
var axis = new THREE.Vector3(0, 1, 0);
var angle = Math.PI / 2;
geometry.children[0].geometry.vertices[i].applyAxisAngle(axis, angle); <-- would need something like this as well

tetapi saya juga memahami sedikit, dan mungkin ini mencoba membuat eksportir menangani terlalu banyak variabel

Komentar menarik disini tentang FBX
https://github.com/mrdoob/three.js/issues/2803#issuecomment -11458920

Sudahkah Anda menerapkan rotasi yang mungkin Anda buat ke model dan angker di dalam file blender? Anda tahu, dengan ctrl + A> Rotasi dan Skala, dalam mode objek. Saya telah melihat hal yang sangat mirip terjadi karena tidak melakukan itu. @bayu_joo

Jaring saya selalu terdistorsi atau saya mendapatkan kesalahan dan saya tidak dapat mengekspor banyak animasi. Beralih kembali ke pengekspor r69 yang tampaknya bekerja dengan baik bahkan di Blender 2.73a

@ tolong-tunggu ... sebenarnya saya tidak ... tapi mungkin dari mixamo ke blender ...
@ kimasendorf apakah Anda mencoba membuat ulang mesh secara manual di threejs?

Jala dimodelkan di Blender. Meskipun ini adalah karakter poli rendah, tentu saja rumit untuk membuat ulang mesh secara manual dalam threejs. Dan bagaimana itu bisa membantu?

dalam kasus saya jala dan tulang di mana tidak selaras satu sama lain ... maka model tikungan mencoba menyesuaikan tulang ... jika Anda tidak memiliki tulang maka ini tidak ada hubungannya dengan itu ...

btw ... maksudku "membuat ulang" lol ... maaf aku mencoba menulis "menyetel kembali" model ...

Saya mendapat masalah serupa dengan setiap kerangka yang lebih kompleks yang saya coba sejauh ini. Termasuk marinir yang termasuk dalam repo three.js dan ditampilkan dalam contoh. Inilah yang saya dapatkan dengan itu menggunakan sakelar pose:

Marinir dalam pose:
https://antont.github.io/three.js/examples/webgl_animation_skinning.html

Ekspor itu ada di:
https://github.com/antont/three.js/blob/blenderexport_buggy_marineskinning/examples/models/skinned/marine/marine_anims-pose.json

Contoh minimal dari tes eksportir berfungsi. Skeleton helper mencocokkan model saat menggunakan mode pose di sana.

Saya akan mencoba (beberapa) trik ini dari yang sudah menutup masalah lain (# 4660) berikutnya:

  1. Anda akan membutuhkan bingkai utama di setiap tulang yang ingin Anda ekspor.
  2. Jala harus dalam pose-T. Berikut dua cara untuk melakukannya: a. Lakukan aksi pose-T. Tindakan ini membutuhkan bingkai di mana semua tulang telah berubah menjadi bersih. Ini harus menjadi kerangka saat ini ketika eksportir dipilih. b. Hapus pengubah Armature dari mesh segera sebelum ekspor. Setelah file diekspor, batalkan tindakan terakhir untuk mendapatkan pengubah kembali.

dan:

Saya hanya bisa mendapatkan ini berfungsi ketika saya menyimpan pengubah Armature, tetapi menonaktifkan grup simpul dan amplop tulang (kemudian diaktifkan kembali setelah ekspor). Dalam kasus saya, menghapus pengubah tidak membantu.

mungkin juga:

Sudahkah Anda menerapkan rotasi yang mungkin Anda buat ke model dan angker di dalam file blender? Anda tahu, dengan ctrl + A> Rotasi dan Skala, dalam mode objek.

Jika seseorang mengalahkan saya dalam mendapatkan ekspor yang berfungsi dari campuran contoh itu dan memberi tahu apa yang dibutuhkan .. banyak terima kasih! :) Saya menggunakan campuran ini: https://github.com/mrdoob/three.js/blob/master/examples/models/skinned/marine/marine_anims.blend

Oke, sekarang berfungsi, perbarui https://antont.github.io/three.js/examples/webgl_animation_skinning.html (jika seseorang melihat versi buggy sebelumnya, pastikan untuk tidak mendapatkannya dari cache sekarang)

Mencoba banyak hal bolak-balik, memeriksa semua tulang dikunci, baik opsi istirahat & pose dll. Tetapi pada akhirnya tampaknya hanya ketika saya memiliki apply modifiers mendapatkan deformasi yang aneh. Masuk akal karena kemudian pengubah angker diterapkan ke basis geom saat ekspor, dan kemudian dideformasi lebih lanjut oleh skel anim di three.js.

Jadi, ada ekspor yang berfungsi dari campuran laut yang tidak dimodifikasi dengan eksportir baru di: https://github.com/antont/three.js/blob/example_skinning/examples/models/skinned/marine/marine_anims.json

Saya pikir itu hanya memiliki satu animasi, perlu mencari tahu selanjutnya bagaimana mengekspor semua animasi dengan ekspor baru.

Tangkapan layar dari opsi yang digunakan:
threejs-skelexport-marineoptions

@antont terima kasih telah meneliti ini!

Saya menyiapkan saluran tim Slack untuk three.js, terutama untuk menangani masalah animasi tetapi dapat digunakan untuk tiga hal terkait. Ini adalah saluran tim pribadi sehingga orang hanya dapat bergabung melalui undangan. Saya mencari:

  • orang yang mengenal Python
  • orang dengan pemahaman yang kuat tentang tali-temali di Blender
  • orang dengan pengalaman animasi _dan_ adegan yang mau berbagi

Ini bukanlah hal yang elitis. Saya terbatas waktu dan tidak memiliki bandwidth untuk mengajar seseorang Python atau Blender, jadi saya minta maaf jika ini tidak tampak ramah pemula (untuk itulah IRC). Ini untuk mereka yang benar-benar ingin menggigit pantat ini dan memiliki beberapa keahlian yang berguna untuk disumbangkan. IRC mengganggu saya dan bahkan untaian github bukanlah tempat favorit saya untuk berkolaborasi. Telah menggunakan Slack dengan grup lain dan itu luar biasa.

Kirimi saya email (dan harap catat alamat github Anda juga) untuk undangan
ed [dot] caspersen [at] gmail [dot] com

Saya pikir perubahan dalam blender apis terbaru telah merusak metode yang digunakan eksportir untuk memilih tindakan pada mesh.

Perilaku yang saya lihat (tidak sepenuhnya dikonfirmasi) adalah bahwa eksportir mengekspor:

  1. Tindakan yang dipilih pada angker yang merupakan induk dari mesh yang dipilih ...
  2. Mencoba mengekspor animasi lain yang tidak dipilih, dan gagal saat mencoba menyetel animasi pada armatur, untuk melangkah melalui bingkai utama tindakan. Hasilnya adalah animasi dari langkah 1 diekspor berulang kali di bawah nama tindakan yang berbeda ... Durasi tampaknya benar, namun di antara tindakan yang berbeda.

Saya pikir perubahan baru-baru ini di Blender sekarang membutuhkan angker menjadi objek yang dipilih sebenarnya dalam tampilan 3d agar tindakan yang berubah benar-benar berlaku.

Ini dapat diselesaikan dengan mengubah eksportir agar memerlukan armatur yang akan dipilih untuk ekspor, bukan mesh, dan perubahan tindakan yang dilakukan pada skrip mungkin berfungsi.

Beri tahu saya jika Anda ingin bantuan lebih lanjut dengan pengekspor blender .. Saya memiliki latar belakang yang layak dalam pembuatan skrip untuk pra 2.6 ..

Masalah lain, saya harus memiliki kombinasi yang tepat dari "istirahat" yang dipilih baik di params skrip dan pada angker. Ini sepertinya rapuh ..

Masalah lainnya adalah "Terapkan Pengubah" ...
Dari apa yang saya tahu, dalam keadaan normal mengekspor mesh berkulit, ini seharusnya tidak pernah terjadi, dan harus default ke nonaktif atau memiliki tombol terpisah untuk mengecualikan mesh berkulit.
Menerapkan pengubah, membuat angker mengubah mesh ke frame apa pun yang saat ini disetel.
Ini selang pengikat untuk mesh dan menunjukkan masalah yang ditampilkan di tempat lain di utas ini.

Alangkah baiknya menemukan cara untuk mempersingkat langkah-langkah ini.

Saya baru saja menjalankan beberapa tes dan mengonfirmasi bahwa eksportir mengekspor bingkai dari animasi yang sama untuk setiap animasi yang diekspor ...

Jadi karena saya mengekspor mesh saya dengan tindakan "berjalan" yang dipilih ...
Semua animasi dalam file adalah salinan dari animasi "berjalan" dengan nama berbeda dan dengan panjang berbeda.

Saya terkejut eksportir tidak langsung mogok jika Anda memiliki tindakan dengan lebih banyak bingkai di dalamnya, daripada animasi lain dalam file tersebut.

Deskripsi singkat dari bug ini:

Semua bingkai utama animasi yang diekspor adalah animasi yang dipilih, bukan bingkai utamanya sendiri.

Saya telah menemukan setidaknya sebagian perbaikan untuk ini ...

Di "io_three \ eksportir \ api \ animation.py"

di awal "parse_pose_action" (sekitar baris 183)

memasukkan:

context.scene.objects.active = armature

Dengan perubahan ini, saya sekarang mendapatkan animasi unik yang diekspor ...

Hai, terima kasih atas umpan balik + perbaikan ini. Saya membuat perubahan yang direkomendasikan dan mengekspor dengan "Pose" dan "Apply modifier" = off dan ini berfungsi dengan baik !!
Terima kasih

context.scene.objects.active = angker

Menantikan untuk mencoba ini.

Memiliki masalah yang sama dengan yang saya angkat:

https://github.com/mrdoob/three.js/issues/7165

Bekerja di sekitar berhasil untuk saya, senang bahwa saya benar-benar bisa menjalankan banyak animasi. Terima kasih untuk itu!

Bagus! Senang aku dapat membantu!

Saya menautkan beberapa bug lain yang mungkin merupakan manifestasi dari ini, kembali ke utas ini.

@manthrax (dengan perbaikan parsial) berfungsi dengan baik untuk saya mengekspor 'Animasi kerangka: Pose' dan membatalkan pilihan 'Gunakan pengubah selama render' di pengubah angker.
image

Demo karakter dengan 3 animasi yang berfungsi> http://unboring.net/lab/6326/hero_72/

Menurut Anda, apakah mungkin / mudah untuk mengekspor dan menjalankan animasi dengan benar menggunakan 'Mode istirahat'?
Karena dalam kasus ini, eksportir hanya menulis keyframe bukan setiap frame, dan file json berubah dari 873kb menjadi 174kb.

Mengirimkan beberapa undangan Slack. Tidak yakin jam berapa saya akan punya waktu besok tetapi saya harus punya beberapa jam di hari Minggu.

@arturitu Saya dapat melihat itu ... Apa perilaku saat ini untuk pose rest_mode yang salah?
Apakah sepertinya masalah yang sama?

@reps :

Mengekspor saat ini membutuhkan waktu lama di mesin saya untuk animasi besar ...

Ternyata sebagian besar waktu disebabkan oleh spam log ...

Dan hanya mematikan logger mungkin tidak akan memperbaiki ini. Saya pernah mengalami masalah ini dengan skrip python di masa lalu ... Bahkan jika keluaran logging dinonaktifkan, konstruksi string masih berlangsung di pernyataan logging.
Skrip perlu ditulis ulang untuk melakukan sesuatu seperti "if (logging) log.debug (" blah ");" pada semua pernyataan logging, agar tidak menimbulkan overhead pemformatan semua pesan.

Cukup mengomentari pesan logging yang saya lihat di animasi / ekspor keyframe, membuat waktu ekspor saya dari 2 menit, turun menjadi sekitar 5 detik.

@arturitu Saya mencoba ekspor rest_pose ... Saya mendapatkan file yang lebih kecil, tetapi ikatan kerangka kacau saat mencoba pemutaran ... Ada ide?

Saya sedang menguji dengan file campuran laut, terikat ke mesh yang berbeda ...

image

Animasi kerangka: Istirahat

image

Animasi kerangka: Pose

@manthrax saya rasa di Istirahat ada masalah dengan bagian tulang di JSON, karena banyak dari mereka memiliki banyak "induk": null, sedangkan di Pose tulang memiliki nilai induk yang benar. Dan jumlah tulangnya berbeda (dalam kasus saya di Pose tulis 38 dan di Istirahat hanya 28)

Tapi saya tidak tahu apakah perlu jenis BlendCharacter.js lain untuk menampilkan animasi yang benar

Skrip perlu ditulis ulang untuk melakukan sesuatu seperti "if (logging) log.debug (" blah ");" pada semua pernyataan logging, agar tidak menimbulkan overhead pemformatan semua pesan.

Mungkin tidak, ini dapat dialamatkan dalam modul logging itu sendiri. Lihat itu sekarang

Masalah lain, saya harus memiliki kombinasi yang tepat dari "istirahat" yang dipilih baik di params skrip dan pada angker. Ini sepertinya rapuh ..

Ya, dan saya telah berusaha menyelesaikannya di masa lalu. Ada bagian yang dikomentari dengan

armature.data.pose_position =

seluruh. Saat mencobanya di shell Blender, itu berfungsi tetapi tidak selama ekspor. Saya belum mencoba di versi Blender terbaru jadi mungkin ini sudah diperbaiki (sampai rusak lagi).

Dengan perubahan ini, saya sekarang mendapatkan animasi unik yang diekspor ...

Tangkapan yang bagus. Kesadaran kontekstual Blender yang dibutuhkannya begitu implisit kadang-kadang menjadi menjengkelkan untuk ditangani.

Menonaktifkan log itu mudah. Karena tiga repo terlalu besar, saya membuat repo temp yang hanya akan berhubungan dengan eksportir, semuanya pada akhirnya akan digabungkan kembali.
https://github.com/repsac/io_three

Dari apa yang saya tahu, dalam keadaan normal mengekspor mesh berkulit, ini seharusnya tidak pernah terjadi, dan harus default ke nonaktif atau memiliki tombol terpisah untuk mengecualikan mesh berkulit.

Jika kasus yang baik tidak dapat dibuat mengapa harus tetap aktif maka saya akan memilih untuk mengaturnya ke False jika animasi diaktifkan. Satu-satunya masalah mungkin dalam ekspor adegan, yang saya anggap sebagai pagar jika ekspor adegan harus mendukung animasi. Pernah mengalami masalah dengan cara Blender menangani tindakan di bawah kap yang membuatnya tampak sangat rapuh.

@repsac Hanya ingin mengatakan .. Eksportirnya mengagumkan. Saya harap tidak ada komentar saya yang dikritik ... Saya telah menulis lebih banyak eksportir blender primitif di masa lalu .. tetapi tidak ada yang membahas hal ini, jadi tidak berlebihan untuk mengatakan ini adalah pencapaian besar.

re Logging: Saya masih tidak yakin bagaimana overhead pemformatan pesan log dihilangkan dengan hanya menonaktifkan output dalam kerangka kerja logging, tapi mungkin saya tidak memahami nuansa kerangka kerja.

Dari apa yang saya tahu, setiap pencatatan dalam bentuk "someLoggingFunction (" teks yang diformat: xyz ")" akan SELALU menyebabkan konversi teks / pemformatan pesan, bahkan jika fungsi tidak memancarkan teks secara internal

Untuk zero overhead logging, sesuatu harus berbentuk "Logger.log (function () {return SomeFormattedText;}), di mana fungsi yang diteruskan hanya dipanggil jika logging diaktifkan.

. Dalam bahasa yang benar-benar dikompilasi dan dioptimalkan, kompilator mungkin dapat mendeteksi bahwa fungsinya adalah no-op dan sklp panggilan pemformatan, tetapi bahkan kemudian, pemformatan panggilan dapat memiliki efek samping untuk program lainnya, jadi umumnya mereka akan tetap disertakan.

re: Ekspor adegan mendukung animasi ...
Saya setuju, bahwa dalam waktu dekat, mungkin terlalu dini untuk menempuh jalan itu, TETAPI, jika kita sampai pada titik di mana itu bisa berhasil .. akan sangat luar biasa untuk dapat membangun seluruh level dengan animasi, dan mengekspor Kincir angin WYSIWYG ke three.js akan berputar ... sungai dan air terjun dapat menghidupkan UV .. platform dapat terbang di sekitar .. semua tanpa menulis kode apa pun. Suatu hari ...: D

Dari apa yang saya tahu, setiap pencatatan dalam bentuk "someLoggingFunction (" teks yang diformat: xyz ")" akan SELALU menyebabkan konversi teks / pemformatan pesan, bahkan jika fungsi tidak memancarkan teks secara internal

Nah, panggilan logging apa pun harus diformat seperti itu:

logger.info("foo bar %s", arg)

Jadi string tidak diformat sampai API logging melewati *args bawah tenda. Saya mengubah logika logging menjadi

https://github.com/repsac/io_three/blob/master/addons/io_three/exporter/__init__.py

        level = options.get(constants.LOGGING, constants.DISABLED)
        version = options.get('addon_version')
        if level != constants.DISABLED:
            logger.init('io_three.export.log', level=level)

https://github.com/repsac/io_three/blob/master/addons/io_three/logger.py

def _logger(func):

    def inner(*args):
        if LOGGER is not None:
            func(*args)

    return inner


<strong i="18">@_logger</strong>
def info(*args):
    LOGGER.info(*args)


<strong i="19">@_logger</strong>
def debug(*args):
    LOGGER.debug(*args)


<strong i="20">@_logger</strong>
def warning(*args):
    LOGGER.warning(*args)


<strong i="21">@_logger</strong>
def error(*args):
    LOGGER.error(*args)


<strong i="22">@_logger</strong>
def critical(*args):
    LOGGER.critical(*args)

Tidak ada pesan yang harus diformat. Saya tidak memiliki adegan yang besar jadi saya tidak bisa menguji ini tetapi secara teori seharusnya, dan jika tidak maka itu menjadi alasan # 4576 mengapa saya benci pemrograman.

Saya harap tidak ada komentar saya yang dianggap sebagai kritik

Tidak jarang, antara perusahaan teknologi yang penuh dengan bro-grammers di sini di SF (termasuk Silicon Valley) dan industri VFX, saya telah mengatakan waaaaaaay lebih buruk kepada saya dalam wawancara.

Saat ini membahas seluruh utas ini dan mencoba menyusun daftar peluru tentang apa yang secara khusus harus dilakukan. Akan mempostingnya ketika saya memiliki sesuatu sehingga Anda dapat melihat apakah sudah dekat.

Oh luar biasa! Sepertinya penebangan Anda tertutup. Python saya sedikit lemah untuk memahami nuansa solusi Anda.

Dunia kecil, aku juga di SF!

Sangat keren ... sejauh yang bisa saya kumpulkan dari utas ini, sebagian besar adalah perbaikan satu baris, dan kemudian menyelesaikan ambiguitas mode "istirahat" ... Saya masih tidak yakin mode istirahat kasus penggunaan apa yang pernah ada .. jika Anda mengetahuinya, saya akan berterima kasih untuk memahaminya ...

Saya harus menggali semua masalah lama untuk memberi Anda tautan khusus, tetapi demi tanggapan cepat, berikut adalah uraiannya:

  • sekitar r66 ada komit yang mengubah ekspor dari menggunakan REST menjadi menggunakan mode POSE
  • Saya telah memulai versi eksportir saya sendiri sekitar waktu ini, yang menjadi yang kita bicarakan sekarang, dan mendasarkan logika asli saya dari logika REST
  • di r70 tambang adalah eksportir pengganti, saat itulah semua terjadi
  • Saya mengganti logika dengan dukungan POSE, yang kemudian menghentikan ekspor untuk pengguna lain
  • Saya tidak mengerti apa yang sedang terjadi, jadi saya menerapkan sakelar di antara 2

Sejauh ini tampaknya ada 2 hal yang harus ditangani:

1) pengaturan konteks aktif pada angker

context.scene.objects.active = armature

2) jangan menerapkan pengubah ke jerat yang dikuliti

Saya akan menguji peralihan pose otomatis lagi. Seseorang pernah berkata bahwa mereka telah mengetahuinya dari skrip yang berbeda tetapi saus rahasia itu tidak berhasil masuk ke eksportir.

@manthrax Dapatkah Anda melakukan pembayaran di cabang saya dan melihat apakah ini berhasil untuk Anda?
https://github.com/repsac/three.js/tree/anim_fix

Ini berfungsi dengan baik untuk animasi dalam mode pose selama keyframe pertama Anda memiliki armatur yang dikonfigurasi persis sama dengan mesh Anda. Jika Anda mencoba menambahkan transformasi loc / rot / scale apa pun, dalam mode pose, dan menetapkannya sebagai bingkai utama pertama, maka model akan terdistorsi.

Saya juga mengalami masalah REST / POSE (up to date dev-branch). Model ini memiliki 40+ tulang dan 7 aksi. POSE berfungsi dengan baik, tetapi file yang diekspor sangat besar. REST memiliki animasi yang benar-benar terdistorsi.

Masalahnya tampaknya terletak di array _skinIndices_ yang diekspor. Baik dalam mode POSE atau REST, array _skinIndices_ identik, tetapi urutan dan indeks dalam array _bones_ yang diekspor sangat berbeda. Saya pikir itu karena __rest_bones () _ menggunakan _armature.data.bones_ untuk mengindeks tulang dan __pose_bones_ menggunakan _armature.pose.bones_ (api / mesh.py). Kemudian __skinning_data () _ selalu menggunakan _armature.pose.bones_ terlepas dari setelan REST / POSE. Sebuah tes cepat tampaknya mengkonfirmasi hal ini. Menggunakan _armature.data.bones_ di __skinning_data () _ mengekspor model dan animasi saya dengan benar dalam mode REST.

Saya tidak cukup mengenal three.js untuk menjawab ini dan mengirimkan perbaikan, tetapi mana yang sebenarnya _skinIndices_ atau urutan _bones_? Urutan _bones_ di REST tampaknya identik dengan indeks grup simpul Blender, yang mungkin merupakan hal yang baik.

Halo, masalah ini belum ditutup atau disimpulkan tentang apa yang sekarang? jadi saya memiliki kekhawatiran lain tentang masalah ini: apakah ada yang mengalami pemutaran 2 animasi secara bersamaan? Uji coba saya tidak berhasil tetapi saya tidak yakin tentang kualitas objek 3D saya. Di sisi lain dari apa yang saya baca di atas, saya bertanya-tanya apakah ini benar-benar mungkin?

untuk menyelesaikan kekhawatiran: apakah eksportir blender mengizinkan NLA?

@Derived ya beberapa pencampuran animasi dan pemutaran bekerja di three.js terbaru

Nla secara umum hanya didukung untuk tulang AFAIK

Hai, terima kasih atas tanggapan ini. Ya, saya dapat menjalankan beberapa animasi dan ada "campuran" dari animasi tersebut; Saya menggunakan v71 tetapi dengan versi pengekspor blender yang diperbarui (seperti yang dibahas di atas). Tapi izinkan saya menjelaskan pengamatan saya dengan lebih baik:

Model saya memiliki 2 animasi yang dicurangi: (A1) angkat lengan dan (A2) putar kepala ke kiri.

1) Mainkan (A1) "angkat lengan" dan kemudian berhenti di setengah jalan animasi (lengan di setengah jalan)
2) mainkan (A2) "putar kepala ke kiri" => kepala menoleh ke kiri TAPI lengan kembali ke posisi awal alih-alih tetap di tempatnya.
3) Akhirnya jika saya memainkan 2 bersama-sama, kepala menoleh ke kiri dan lengan terangkat tetapi tidak seperti yang seharusnya mereka lakukan melainkan sebagai perpaduan (A1) (angkat) dan (A2) (jangan gerakkan lengan) dengan pengaruh tulang yang tidak bergerak dari (A1) ke pindahan dari (A2) dan sebaliknya.
Oleh karena itu saya melihat ke dalam file json dan dapat melihat animasi yang menjelaskan posisi tulang untuk SEMUA tulang di setiap animasi. Jadi, untuk (A2) "turn head left" animasinya mencakup posisi tulang untuk lengan yang tidak berubah (kanan, A2 tidak bergerak di A2). Tapi bagaimana three.js menebak posisi tulang ini tidak signifikan dan seharusnya tidak mempengaruhi jalannya (A1)?
Semoga contoh ini bisa dimengerti.

Kehilangan pikiranku karena ini

Inilah jaring saya yang dicurangi di blender:

blender-cycle

Ini dia dalam threejs:

three-cycle

Menghabiskan 2 hari langsung untuk ekspor saja. Blender terbaru, tiga terbaru. Bagaimana keadaan eksportir saat ini?

@DelvarWorld Saya rasa Anda perlu menggunakan eksportir Blender di cabang DEV untuk bekerja dengan benar.

@arturitu Saya :(

@Rumahsakitotak

Bagaimana keadaan eksportir saat ini?

saya pikir ini

repsac tidak ditugaskan oleh mrdoob pada 30 Des 2015

mungkin masalahnya. Jelas membutuhkan cinta.

Saya mungkin akan mencari berbagai bug yang telah dilaporkan belakangan ini. Dapatkah Anda membagikan file untuk mereproduksi masalah ini (semakin sederhana, semakin baik)?

Untuk kenyamanan saya akan memposting ini juga di sini. Saya mencoba mengekspor formulir model pengujian @DelvarWorld dan memposting komentar dan tangkapan layar di # 8412.

@tokopedia
https://github.com/mrdoob/three.js/pull/8412#issuecomment -210675561 yang ini?

Kerja bagus untuk memperbaiki semua masalah ini: +1:!

Ketika Anda selesai menambal, maukah Anda membuka tiket baru dengan deskripsi atau tautan ke masalah eksportir yang tersisa, yang baru dibuat atau ditemukan?

Sangat sulit untuk melacak barang-barang saat diposting di suatu tempat pada tiket yang sudah ada.

Idealnya satu per kasus (jika belum ada) dan master "Masalah Eksportir Blender" (atau sesuatu seperti itu) mereferensikan semuanya.

Yang bisa saya ingat dari puncak kepala saya adalah

  • Normalnya kurang rotasi (tetap)
  • Masalah animasi saat mengekspor hierarki adegan. Apakah ini berfungsi sekarang?
  • Lalu ada masalah pose lainnya yang disebutkan dalam posting Anda
  • Lalu ada masalah skinning / keyframes (pesan kesalahan?)
  • ... (masih ada lagi, saya pikir)

Tentu saja! Itu ide yang bagus. Saya akan mencoba melakukannya akhir pekan ini,
sebaliknya pada hari Senin ketika saya kembali ke kantor.
Pada 15 Apr 2016 17:12, "tschw" [email protected] menulis:

@phfatmonkey https://github.com/phfatmonkey

8412 (komentar)

https://github.com/mrdoob/three.js/pull/8412#issuecomment -210675561
yang ini?

Kerja bagus untuk memperbaiki semua masalah ini [image:: +1:]!

Setelah Anda selesai menambal, maukah Anda membuka tiket baru a
deskripsi atau tautan ke yang tersisa, yang baru dibuat atau ditemukan
masalah eksportir?

Sangat sulit untuk melacak hal-hal saat diposting
di suatu tempat di tiket yang sudah ada.

Idealnya satu per kasus (jika belum ada) dan master "Blender Eksportir
Masalah "(atau sesuatu seperti itu) yang mereferensikan semuanya.

Yang bisa saya ingat dari puncak kepala saya adalah

  • Normalnya kurang rotasi (tetap)
  • Masalah animasi saat mengekspor hierarki adegan. Apakah ini berfungsi sekarang?
  • Lalu ada masalah pose lainnya yang disebutkan dalam posting Anda
  • Lalu ada masalah skinning / keyframes (pesan kesalahan?)
  • ...

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung atau lihat di GitHub
https://github.com/mrdoob/three.js/issues/6050#issuecomment -210693332

Bagaimana dengan pengeditan animasi non linier seperti yang bisa dilakukan di Blender? Apakah tidak ada yang tertarik dengan pertanyaan ini? Saya menjelaskan poin dalam pesan sebelumnya tetapi tidak mendapat komentar?

@iv
Pesan yang mana?

Ketika membutuhkan kode khusus, seseorang harus menulisnya. Sebuah kontribusi mungkin diterima ...

Di sini pesan di atas tertanggal pada 5 Februari saya menjelaskan masalah saat menggabungkan beberapa animasi.
Saya akan dengan senang hati membantu mengembangkannya, tetapi menurut saya diperlukan beberapa diskusi terlebih dahulu untuk berbagi ide dan mendiskusikan cara menerapkannya. Oleh karena itu, saya membuka item saran "Animasi Non Linear" # 7913

Ini adalah masalah yang panjang dan saya akui saya belum membaca semuanya, tetapi jika masalahnya masih seperti yang dijelaskan oleh OP (yaitu membutuhkan cara untuk menghidupkan karakter di Mixamo dan memuat di three.js) maka Anda dapat melakukannya ini dengan eksportir Blender glTF dan THREE.GLTFLoader. Inilah alur kerja saya: https://medium.com/@donmccurdy/creating -animated-gltf-characters-with-mixamo-and-blender-728dc120e678

Atau Anda dapat mengekspor sebagai FBX dari Mixamo dan memuat langsung menggunakan FBXLoader.
Pada rilis terakhir (R89) seharusnya bekerja dengan sangat lancar.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat