Three.js: تحميل الرسوم المتحركة Mixamo

تم إنشاؤها على ١١ فبراير ٢٠١٥  ·  67تعليقات  ·  مصدر: mrdoob/three.js

مرحبًا ، أعمل على تزوير شخصيتي وتحريكها باستخدام mixamo ... ثم أقوم باستيرادها إلى الخلاط عبر FBX ... ثم أقوم بتصديرها إلى js مع المصدر الخاص بك (جرب كل مصدر ... كل).

النتيجة هنا:
http://instagram.com/p/y8NQjQkk9-/؟modal=true

يبدو دائمًا مشوهًا هكذا ولا يمكنني فهمه ... دائمًا اليدين ... هل بسبب عدد العظام. mixamo لديه 16 أو شيء. و Marine_anim من الأمثلة أكثر من 50.

الرجاء مساعدة أخي ... بعد ثلاثة أيام في نهاية حكمتي | ترقيع

Question

التعليق الأكثر فائدة

بدلاً من ذلك ، يمكنك فقط التصدير كـ FBX من Mixamo والتحميل مباشرةً باستخدام FBXLoader.
اعتبارًا من الإصدار الأخير (R89) ، يجب أن يعمل بسلاسة كبيرة.

ال 67 كومينتر

بعد دمج هذا العلاقات العامة https://github.com/mrdoob/three.js/pull/6052 أقترح تجربة المصدر من فرع dev. لديها خياران مختلفان لموقف الوضعية مقابل POSE و REST . اضبط المحرك الخاص بك على أحدهما أو الآخر ، ثم أثناء التصدير تأكد من تطابق خاصية Skeletal animation . جرب كليهما ومعرفة ما إذا كان أي منهما يساعد. بالنسبة لبعض الأشخاص ، يعمل POSE ، والبعض الآخر REST .

حسنًا ، تم تصديرها باستخدام بقية الرسوم المتحركة الهيكلية وفي وضع الوضعية ...

هذه هي ملفاتي http://we.tl/CNM5qEmBMs
بما في ذلك النهائي الأصلي وكلا الصادرات ...

وضع الراحة = عدم الحركة على الإطلاق
وضع الوضعية = تشوهات غريبة

قلت "إنه يحتوي على خيارين مختلفين لوضعيات الوضع من أجل POSE و REST. اضبط المحرك الخاص بك على أحدهما أو الآخر" ... لا أعرف كيفية ضبط جهاز amature على الوضع أو الراحة ... أريد استخدام الخلاط فقط باعتباره مترجم من mixamo إلى threejs ... آسف إذا كان سؤالي إلى noob

هل تقصد أن أوضاع التحرير تشكل وتحرير الوضع للكائنات؟

طيب وضع بوز - نفس التشوهات
وضع التحرير في سجل الأخطاء التالي:

error

لا يمكن إعادة إنشاء هذا الخطأ ولكني لاحظت ، بالنظر إلى أرقام الأسطر في traceback ، ربما لا تستخدم نفس الإصدار (الأحدث) الموجود في dev . تأكد أيضًا من أنك لا تقوم بتصدير Scene مع هذا الأصل. ما عليك سوى إجراء عمليات تصدير هندسية مفردة في الوقت الحالي (نظرًا لأن ObjectLoader لا يعمل مع الشبكات المقشرة حتى الآن).

بقدر ما يتعلق الأمر بالرسوم المتحركة المعطلة ؛ يمكنني إعادة إنشاء كل من الرسوم المتحركة المعطلة ومسألة الرسوم المتحركة المفقودة. هناك أشخاص يعملون على تصدير الرسوم المتحركة (مثال https://github.com/mrdoob/three.js/issues/5582#issuecomment-73444737) لذلك أشك في وجود بعض المشكلات في عملية استيراد FBX. من الصعب جدًا تحديد ما إذا كان المصدر أو استيراد FBX. تساءلت عما إذا كانت هناك تحولات يجب تطبيقها على العظام ، لكنني لا أعرف بعد.

مرحبًا يا رجل ، شكرًا جزيلاً لك على وقتك وبصيرة!

ربما لا تستخدم نفس الإصدار (الأحدث) الموجود في dev.

أعتقد أنني أعمل مع أحدث إصدار لأنني أستطيع تحديد الوضع والراحة:
"أصبح خيار الرسوم المتحركة الآن تعدادًا يتطلب من المستخدم الاختيار بين POSE و REST"

منذ ObjectLoader لا يعمل مع شبكات الجلد حتى الآن

من واقع خبرتي ، لم يكن الأمر أكثر إثارة ... لقد قمت بتحميل الأشكال الهندسية والمشهد باستخدام أداة تحميل الكائنات في threejs. تم إنشاء الخطأ التالي باستخدام أداة تحميل الكائنات ويعطي نفس النتيجة مثل عمليات تصدير Geometrie السابقة.
newerror

يمكنني إعادة إنشاء كل من الرسوم المتحركة المعطلة ومسألة الرسوم المتحركة المفقودة.

سيكون من الممتع حقًا إذا لم تتمكن من إعادة إنشاء المشكلة ...
ومن ثم هل ترى أي إمكانية لتصدير النموذج إلى threejs ...

من المثير للاهتمام بشكل عام أنها نموذج تصدير من mixamo. إذا كان هذا النموذج يعمل - كل نموذج mixamo سيعمل. (نظريا ؛))

على أي حال تشك للنظر في الأمر.

مع الإصدار الحالي من Blender والأشكال الهندسية فقط وبدون تصدير مشهد ، أحصل على وضع الوضعية:

poseterror

وفي وضع الراحة

resterror

لا يمكنني تصدير الشكل الهندسي إلا إذا قمت بتصدير مشهد الحفرة

حسنًا ، أعتقد أنني وجدته ... إنه خطأ في المرجع بين رؤوس الهندسة والعظام المتحركة ... الشبكة والهيكل العظمي متوقفان

بعد تغيير حجم الشبكة يدويًا وتدويرها باتجاه الهيكل العظمي مثل هذا

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

حصلت على نتيجة جيدة.

لذا أولاً وقبل كل شيء - لماذا أحتاج إلى تدوير الشبكة ... أتذكر عند الاستيراد إلى mixamo أنه كان عليّ تدوير نموذجي بالضبط 90 درجة ... بسبب -z التوجيه
لماذا التحجيم؟ لا دليل ...

الآن يأتي الشيء الذي عربات التي تجرها الدواب لم يكن نموذجي يحتوي على TPos المثالي ... كانت الأذرع منخفضة ... قمت بتزويرها في Mixamo وكانت لا تزال مثالية بعد ذلك ... رأيتها في الخلاط ... وكانت مثالية ... رأيته في الحد الأقصى كان مثاليًا أيضًا.
ثم التصدير إلى Threejs ورسم الخرائط بين العظام والجسم كان يشير إلى الجسم الذي تم إنشاؤه في الأصل بحد أقصى.

tpose

ومن ثم هناك خطأ رياضي في الإشارة إلى الرؤوس والعظام في مصفوفة التحويل الخاصة بهم.

أتساءل عما إذا كان هذا خطأ بالفعل أم أنه ميزة اختيارية. يمكن أن يؤدي هذا إلى حل المشكلة التي تواجهها بشكل جيد ولكنه يكسر الصادرات لشخص آخر لا يضطر إلى استيراد أصول FBX (شيء رأيته من قبل مع الرسوم المتحركة POSE و REST) المنطق المستخدم (للعظام والرؤوس) موجود منذ فترة (تم نسخه من المصدر القديم) وأنا لا أقول أنه مثالي أو بدون عيوب ولكن إذا كان هذا خطأ في الرياضيات ، أعتقد أننا كنا سنرى المزيد من القضايا. يجب عليك تطبيق مثال الكود الخاص بك على المصدر ثم إجراء الكثير من الاختبارات على الكثير من حالات الاختبار (وهذا ليس شيئًا لديّ حوله).

لقد رأيت مشكلات مماثلة في الإنتاج حيث يقوم أحد الأصول برحلات متعددة عبر برامج ومصدرين متعددين. أضف إلى محور المعادلة هذا إعادة توجيهات ولديك وصفة للخدع المعتمد. إذا تمكنت من معرفة كيفية تنفيذ هذا في المصدر ، فسيكون خيارًا فقط حتى يكون هناك قدر أكبر من اليقين من أنه ينطبق بالفعل على جميع المستخدمين وليس حالات الزاوية.

مع الإصدار الحالي من Blender والأشكال الهندسية فقط وبدون تصدير مشهد ، أحصل على وضع الوضعية:

يقول الخطأ تحديدًا "ليس كائن شبكة صالحًا". تعتمد الصادرات الهندسية على التحديد ومن المرجح أن تكون قد تم تحديد المحرك وليس الشبكة.

مرحبًا يا رجل مرة أخرى ، شكرًا لك على البحث في الأمر.
لم أكن أريد أن أقول إن الكود الخاص بي يجب أن يدخل إلى المصدر. ما أردت الإشارة إليه هو: أنه داخل السلسلة من ماكس إلى ميكسامو إلى الخلاط - يتم تعيين كل شيء بالطريقة التي ينبغي أن يكون عليها. بمجرد وصوله إلى threeJs - هناك تغيير بسيط يحدث (في حالتي كان تعفنًا ومقياسًا) مما يسبب الخطأ .. هذا التحول يشير إلى الشبكة الأصلية التي تم إنشاؤها مرة واحدة (في أي مكان) ويتم تجاهلها في الخلاط و mixamo ... لكن انتعش اثناء التصدير.

لسوء الحظ ، لا بد لي من الاعتراف بأنني لست ساحر مصفوفة - وإلا أود أن أقدم يد العون لأنكم تعملون بجد للغاية. شكرا على آرائكم.

لم أستخدم mixamo أبدًا. هل تستخدم Y-up؟ ما أتساءل عما حدث هو أنه إذا كان maximo هو Y-up ، فسيتعين على استيراد FBX إعادة توجيه الأصل إلى Z-up ، ثم يقوم المصدر بإعادة التوجيه مرة أخرى لـ Y-up إلى three . أتساءل عما إذا كانت تحويلات الأصل ستحتاج إلى أن يتم تطبيقها في Blender عند الاستيراد إذا كان ذلك سيصدر بشكل صحيح إلى three .

تصبح ترجمة الحفارات من نظام أساسي / تنسيق إلى آخر أمرًا قبيحًا بعد أكثر من تكرارين. حتى في بعض خطوط الأنابيب والأدوات الأكثر تقدمًا التي عملت معها على الإطلاق ، كانت هناك دائمًا قيود على ما يمكن أن يتم وضع الأصول المزيفة من خلاله. قد يكون هناك حل يناسبك أنت والجميع لكنه بالتأكيد ليس واضحًا على الفور ما هو.

لم أكن أريد أن أقول إن الكود الخاص بي يجب أن يدخل إلى المصدر.

وكنت أشير بشكل عام إلى شيء يحاول تطبيق زوايا المحور على مواضع الرأس.

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

لكنني أيضًا أتفهم بعض الشيء ، وربما يحاول هذا جعل المصدر يتعامل مع العديد من المتغيرات

تعليق مثير للاهتمام هنا بخصوص FBX
https://github.com/mrdoob/three.js/issues/2803#issuecomment -11458920

هل قمت بتطبيق التدوير الذي ربما أجريته على الطراز الخاص بك والمُحرك داخل ملف الخلاط؟ كما تعلم ، باستخدام ctrl + A> Rotation and Scale ، في وضع الكائن. لقد رأيت أشياء مشابهة جدًا تحدث بسبب عدم القيام بذلك. تضمين التغريدة

تظهر شبكتي مشوهة باستمرار أو تظهر لي أخطاء ولا يمكنني تصدير رسوم متحركة متعددة. تم الرجوع إلى مصدر r69 الذي يبدو أنه يعمل بشكل جيد حتى في Blender 2.73a

@ من فضلك انتظر ... لا في الواقع لم أكن ... ولكن ربما من mixamo إلى الخلاط ...
@ kimasendorf هل حاولت

تم تصميم الشبكة في Blender. على الرغم من أنها ذات طابع بولي منخفض ، إلا أنه من المعقد بالتأكيد إعادة إنشاء الشبكة يدويًا في threejs. وكيف يمكن أن يساعد ذلك؟

في حالتي شبكة وعظام حيث لا تتماشى مع بعضها البعض ... ومن هنا ينحني النموذج في محاولة لتناسب العظام ... إذا لم يكن لديك عظام ، فهذا ليس له أي علاقة به ...

راجع للشغل ... لا أقصد "إعادة إنشاء" لول ... أنا آسف لقد حاولت كتابة "إعادة تنظيم" النموذج ...

لدي مشاكل مماثلة مع كل هيكل عظمي أكثر تعقيدًا حاولت حتى الآن. بما في ذلك البحرية المدرجة في repo three.js والمذكورة في الأمثلة. إليك ما أحصل عليه باستخدام مفتاح الوضع:

البحرية في تشكل:
https://antont.github.io/three.js/examples/webgl_animation_skinning.html

هذا التصدير في:
https://github.com/antont/three.js/blob/blenderexport_buggy_marineskinning/examples/models/skinned/marine/marine_anims-pose.json

يعمل المثال الأدنى من اختبارات المصدر. يتطابق مساعد الهيكل العظمي مع النموذج عند استخدام وضع الوضع هناك.

سأحاول (بعض) هذه الحيل من تلك المشكلة الأخرى المغلقة بالفعل (# 4660) التالية:

  1. ستحتاج إلى إطارات مفتاحية على كل عظم تريد تصديره.
  2. يجب أن تكون الشبكة في الوضع T. فيما يلي طريقتان للقيام بذلك: احصل على إجراء على شكل حرف T. يحتاج هذا الإجراء إلى إطار يتم فيه تطهير جميع العظام. يجب أن يكون هذا هو الإطار الحالي عند تحديد المصدر. ب. احذف معدّل حديد التسليح من الشبكة مباشرة قبل التصدير. بعد تصدير الملف ، التراجع عن الإجراء الأخير لاستعادة المعدل.

و:

لم أتمكن من تشغيل هذا إلا عندما احتفظت بمُعدِّل حديد التسليح ، لكنني عطلت كل من مجموعات الرأس والمغلفات العظمية (ثم أعيد تمكينها بعد التصدير). في حالتي ، لم يساعد حذف المُعدِّل.

ربما أيضًا:

هل قمت بتطبيق التدوير الذي ربما أجريته على الطراز الخاص بك والمُحرك داخل ملف الخلاط؟ كما تعلم ، باستخدام ctrl + A> Rotation and Scale ، في وضع الكائن.

إذا كان شخص ما يضربني في الحصول على تصدير عمل من هذا المثال ، فمزج وأخبرني بما هو مطلوب .. جزيل الشكر! :) أنا أستخدم هذا المزيج: https://github.com/mrdoob/three.js/blob/master/examples/models/skinned/marine/marine_anims.blend

حسنًا ، لقد نجحت في العمل الآن ، وقم بتحديث

جربت الكثير من الأشياء ذهابًا وإيابًا ، وفحصت جميع العظام ، وكل من خيارات الراحة والوضع وما إلى ذلك ، ولكن في النهاية يبدو الأمر كذلك عندما كان لدي apply modifiers حصلت على التشوه الغريب. من المنطقي أنه بعد ذلك تم تطبيق معدل المحرك على قاعدة geom عند التصدير ، ثم تم تشويهه بشكل أكبر بواسطة الرسوم المتحركة skel في three.js.

إذاً ، هناك تصدير عملي للمزيج البحري غير المعدل مع المصدر الجديد على: https://github.com/antont/three.js/blob/example_skinning/examples/models/skinned/marine/marine_anims.json

أعتقد أنه يحتوي على واحدة فقط من الرسوم المتحركة على الرغم من ذلك ، تحتاج إلى معرفة كيفية تصدير جميع الرسوم المتحركة مع التصدير الجديد.

لقطة شاشة للخيارات المستخدمة:
threejs-skelexport-marineoptions

antont شكرا لبحث هذا!

قمت بإعداد قناة فريق Slack لـ three.js ، للعمل بشكل أساسي على مشكلات الرسوم المتحركة ولكن يمكن استخدامها لأي شيء متعلق بثلاثة. هذه قناة فريق خاصة بحيث لا يمكن للأشخاص الانضمام إلا عن طريق الدعوة. أنا أبحث عن:

  • الناس الذين يعرفون بايثون
  • الأشخاص الذين لديهم فهم قوي للتزوير في الخلاط
  • الأشخاص الذين لديهم تجارب رسوم متحركة _و_ مشاهد على استعداد للمشاركة

هذا ليس بالشيء النخبوي. أنا محدود بالوقت وليس لدي نطاق ترددي لتعليم شخص ما Python أو Blender ، لذلك أعتذر إذا كان هذا لا يبدو صديقًا للمبتدئين (هذا ما هو IRC من أجله). هذا مخصص لأولئك الذين يريدون فعلاً التخلص من هذا الأمر ولديهم بعض المهارات المفيدة للمساهمة. IRC تزعجني وحتى سلاسل جيثب ليست المكان المفضل لدي للتعاون. تم استخدام Slack مع مجموعات أخرى وكان رائعًا.

أرسل لي بريدًا إلكترونيًا (ويرجى ملاحظة معالج github أيضًا) للحصول على دعوة
إد [نقطة] كاسبرسن [في] gmail [نقطة] كوم

أعتقد أن التغيير في أحدث خلاط apis كسر الطريقة التي يستخدمها المصدر لتحديد الإجراء على الشبكة.

السلوك الذي أراه (لم يتم تأكيده تمامًا) هو أن المُصدر يُصدر:

  1. الإجراء المحدد على المحرك الذي يعد أصل الشبكة المحددة ...
  2. محاولة تصدير الرسوم المتحركة الأخرى غير المحددة ، والفشل عند محاولة تعيين الرسوم المتحركة على المحرك ، من أجل التنقل خلال الإطارات الرئيسية للإجراءات. والنتيجة هي أن الرسوم المتحركة من الخطوة 1 تم تصديرها بشكل متكرر تحت أسماء الإجراءات المختلفة ... يبدو أن المدة صحيحة ولكن من بين الإجراءات المختلفة.

أعتقد أن التغيير الأخير في Blender يتطلب الآن أن يكون المحرك هو الكائن المحدد الفعلي في العرض ثلاثي الأبعاد حتى يسري تغيير الإجراء فعليًا.

يمكن حل ذلك عن طريق تغيير المصدر ليطلب تحديد المحرك للتصدير ، بدلاً من الشبكة ، وقد ينجح الإجراء الذي تم إجراؤه في البرنامج النصي.

اسمحوا لي أن أعرف ما إذا كنت تريد المزيد من المساعدة مع مصدر الخلاط .. لدي خلفية لائقة في البرمجة النصية لما قبل 2.6 ..

قضية أخرى ، كان عليّ اختيار التركيبة الصحيحة من "الراحة" في كل من معلمات البرنامج النصي وفي المحرك. هذا يبدو هش ..

مشكلة أخرى هي "تطبيق المعدلات" ...
مما يمكنني قوله ، في الظروف العادية لتصدير شبكة مقشرة ، لا ينبغي أن يكون هذا هو الحال أبدًا ، ويجب أن يتم إيقاف التشغيل بشكل افتراضي أو أن يكون لديك مفتاح تبديل منفصل لاستبعاد الشبكات ذات الجلد.
تطبيق المعدلات ، يجعل المحرك يحول الشبكة إلى أي إطار تم ضبطه عليه حاليًا.
هذا يخرج من ربط الشبكة ويوضح المشكلات الموضحة في مكان آخر في هذا الخيط.

سيكون من الجيد إيجاد طريقة لتبسيط هذه الخطوات.

لقد أجريت للتو بعض الاختبارات وأكدت أن المصدر يقوم بتصدير إطارات نفس الرسوم المتحركة لكل رسم متحرك يتم تصديره ...

لذلك منذ أن قمت بتصدير الشبكة الخاصة بي مع تحديد إجراء "المشي" ...
جميع الرسوم المتحركة في الملف هي نسخ من الرسوم المتحركة "المشي" تحت أسماء مختلفة وبأطوال مختلفة.

أنا مندهش من عدم تعطل المصدر تمامًا في حالة وجود إجراء به عدد أكبر من الإطارات ، أكثر من الرسوم المتحركة الأخرى في الملف.

وصف succint لهذا الخطأ:

جميع الإطارات الرئيسية للرسوم المتحركة التي تم تصديرها هي تلك الخاصة بالرسوم المتحركة المحددة بدلاً من إطارات المفاتيح الخاصة بها.

لقد وجدت إصلاحًا جزئيًا على الأقل لهذا ...

في "io_three \ exporter \ api \ animation.py"

في بداية "parse_pose_action" (حول السطر 183)

إدراج:

context.scene.objects.active = armature

مع هذا التغيير ، يتم الآن تصدير رسوم متحركة فريدة ...

مرحبًا ، شكرًا على هذه التعليقات + الإصلاح. لقد أجريت التغيير المطلوب وقمت بتصديره باستخدام "Pose" و "Apply modifier" = إيقاف وهذا يعمل بشكل رائع !!
شكر

Context.scene.objects.active = المحرك

أتطلع إلى محاولة هذا.

كانت لدي نفس القضايا التي أثرتها في:

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

عملت الحل بالنسبة لي ، وأنا سعيد لأنني أستطيع بالفعل الحصول على رسوم متحركة متعددة. شكرا على ذلك!

عظيم! يسرني أني استطعت المساعدة!

لقد ربطت بعض الأخطاء الأخرى التي قد تكون مظاهر لذلك ، مرة أخرى إلى هذا الموضوع.

manthrax (مع الإصلاح الجزئي الخاص بك) يعمل جيدًا بالنسبة لي عند تصدير "الرسوم المتحركة الهيكلية: وضعية" وإلغاء تحديد "استخدام المُعدِّل أثناء العرض" في مُعدِّل المحرك.
image

عرض توضيحي لشخصية بثلاث رسوم متحركة> http://unboring.net/lab/6326/hero_72/

هل تعتقد أنه سيكون من الممكن / السهل تصدير الرسوم المتحركة وتشغيلها بشكل صحيح باستخدام "وضع الراحة"؟
لأنه في هذه الحالة ، لا يكتب المصدر سوى الإطارات الرئيسية وليس كل إطار ، وينتقل ملف json من 873 كيلوبايت إلى 174 كيلوبايت

أرسل بعض دعوات Slack. لست متأكدًا من نوع الوقت الذي سأحظى به غدًا ولكن يجب أن يكون لدي بضع ساعات يوم الأحد.

arturitu يمكنني النظر في ذلك ... ما هو السلوك الحالي لوضع rest_mode غير الصحيح؟
هل تبدو نفس المشكلة؟

repsac :

يستغرق التصدير حاليًا وقتًا طويلاً على جهازي للرسوم المتحركة الكبيرة ...

اتضح أن الغالبية العظمى من الوقت ترجع إلى تسجيل البريد العشوائي ...

وببساطة إيقاف تشغيل المسجل ربما لن يصلح هذا. لقد واجهت هذه المشكلة مع نصوص Python في الماضي ... حتى إذا تم تعطيل إخراج التسجيل ، فلا يزال إنشاء السلسلة يحدث في عبارات التسجيل.
يجب إعادة كتابة البرنامج النصي للقيام بشيء مثل "if (logging) log.debug (" blah ")؛" على جميع بيانات التسجيل ، حتى لا تتحمل عبء تنسيق جميع الرسائل.

ما عليك سوى التعليق على رسائل التسجيل التي رأيتها في تصدير الرسوم المتحركة / الإطار الرئيسي ، وجعل وقت التصدير الخاص بي ينتقل من دقيقتين ، إلى حوالي 5 ثوانٍ.

arturitu حاولت تصدير rest_pose ... لقد حصلت على ملف أصغر ، لكن روابط الهيكل العظمي معطلة عند محاولة التشغيل ... أي أفكار؟

أنا أقوم باختبار ملف المزج البحري ، المرتبط بشبكة مختلفة ...

image

الرسوم المتحركة الهيكل العظمي: الراحة

image

الرسوم المتحركة الهيكلية: وضعية

أعتقد أن manthrax في Rest لديها مشكلة في جزء العظام على JSON ، لأن الكثير منهم لديهم الكثير من "الأبوين": null ، بينما في Pose فإن العظام لها القيمة

لكنني لا أعرف ما إذا كان من الضروري استخدام نوع آخر من BlendCharacter.js لإظهار الرسوم المتحركة الصحيحة

يجب إعادة كتابة البرنامج النصي للقيام بشيء مثل "if (logging) log.debug (" blah ")؛" على جميع بيانات التسجيل ، حتى لا تتحمل عبء تنسيق جميع الرسائل.

ربما لا ، قد يكون هذا قابلاً للتوجيه داخل وحدة التسجيل نفسها. انظر إلى ذلك الآن

قضية أخرى ، كان عليّ اختيار التركيبة الصحيحة من "الراحة" في كل من معلمات البرنامج النصي وفي المحرك. هذا يبدو هش ..

إنه كذلك ، وقد حاولت حل هذا في الماضي. هناك أقسام علق بها مع

armature.data.pose_position =

فوق كل. عند تجربته في غلاف Blender ، نجح الأمر ولكنه لم يكن كذلك أثناء التصدير. لم أجرب في إصدارات Blender الحديثة ، لذا ربما تم إصلاح ذلك (حتى يتم كسره مرة أخرى).

مع هذا التغيير ، يتم الآن تصدير رسوم متحركة فريدة ...

مسكة جيدة. إن وعي Blender السياقي الذي يتطلبه ضمني للغاية في بعض الأحيان يصبح مجرد التعامل معه جنونيًا.

كان تعطيل السجل سهلا. نظرًا لأن الريبو الثلاثة كبير جدًا جدًا ، فقد قمت بإنشاء ريبو مؤقت يتعلق فقط بالمصدر ، سيتم دمج كل شيء في النهاية مرة أخرى.
https://github.com/repsac/io_three

مما يمكنني قوله ، في الظروف العادية لتصدير شبكة مقشرة ، لا ينبغي أن يكون هذا هو الحال أبدًا ، ويجب أن يتم إيقاف التشغيل بشكل افتراضي أو أن يكون لديك مفتاح تبديل منفصل لاستبعاد الشبكات ذات الجلد.

إذا كان لا يمكن تقديم حالة جيدة ، فلماذا يجب أن تظل قيد التشغيل ، فسأختار تعيينها على False إذا تم تمكين الرسوم المتحركة. قد تكون المشكلة الوحيدة في عمليات تصدير المشهد ، وأنا على الحياد إذا كان يجب أن تدعم عمليات تصدير المشهد الرسوم المتحركة على أي حال. واجهتك مشكلات في كيفية تعامل Blender مع الإجراءات تحت الغطاء مما يجعلها تبدو هشة للغاية.

repsac أردت فقط أن أقول .. المصدر رائع. آمل ألا يكون أي من تعليقاتي انتقادات ... لقد كتبت الكثير من مصدري الخلاطات البدائيين في الماضي .. ولكن لا شيء في نطاق هذا ، لذلك ليس من المبالغة القول إنه إنجاز كبير.

إعادة التسجيل: ما زلت غير متأكد من كيفية التخلص من الحمل الزائد لتنسيق رسالة السجل بمجرد تعطيل الإخراج في إطار عمل التسجيل ، ولكن ربما لا أفهم الفروق الدقيقة في إطار العمل.

مما يمكنني قوله ، فإن أي تسجيل للنموذج "someLoggingFunction (" نص منسق: xyz ")" سيتحمل دائمًا تحويل النص / تنسيق الرسالة ، حتى لو لم تصدر الوظيفة النص داخليًا

من أجل عدم وجود تسجيل زائد ، يجب أن تتخذ الأشياء شكل "Logger.log (function () {return SomeFormattedText؛}) ، حيث يتم استدعاء الوظيفة التي تم تمريرها فقط إذا تم تمكين التسجيل.

. في لغة مترجمة ومحسّنة حقًا ، قد يكون المترجم قادرًا على اكتشاف أن الوظيفة هي no-op و sklp لاستدعاءات التنسيق ، ولكن حتى ذلك الحين ، يمكن أن يكون لاستدعاءات التنسيق آثار جانبية لبقية البرنامج ، لذلك بشكل عام ستظل مدرجة.

إعادة: تصدير المشهد الداعم للرسوم المتحركة ...
أوافق على أنه على المدى القريب ، ربما يكون من السابق لأوانه السير في هذا الطريق ، ولكن إذا وصلنا إلى النقطة التي يمكن أن ينجح فيها ذلك .. سيكون من المدهش جدًا أن تكون قادرًا على إنشاء مستويات كاملة باستخدام الرسوم المتحركة والتصدير ستدور WYSIWYG إلى three.js طواحين الهواء ... الأنهار والشلالات يمكن أن تتحرك بالأشعة فوق البنفسجية .. يمكن أن تطير المنصات .. كل ذلك بدون كتابة أي رمز. يوم ما ...: د

مما يمكنني قوله ، فإن أي تسجيل للنموذج "someLoggingFunction (" نص منسق: xyz ")" سيتحمل دائمًا تحويل النص / تنسيق الرسالة ، حتى لو لم تصدر الوظيفة النص داخليًا

حسنًا ، يجب تنسيق أي مكالمة تسجيل على هذا النحو:

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

لذلك لا يتم تنسيق السلسلة حتى يتم تمرير واجهة برمجة تطبيقات التسجيل *args تحت الغطاء. لقد غيرت منطق التسجيل إلى

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)

يجب عدم تنسيق أي رسالة. ليس لدي أي مشاهد كبيرة ، لذا لا يمكنني اختبار هذا ولكن من الناحية النظرية يجب أن يكون ، وإذا لم يكن كذلك ، يصبح هذا هو السبب # 4576 الذي يجعلني أكره البرمجة.

آمل ألا يكون أي من تعليقاتي بمثابة نقد

ليس بالكاد ، بين شركات التكنولوجيا المليئة بالإخوان هنا في SF (بما في ذلك Silicon Valley) وصناعة VFX ، لقد كان أسوأ ما قاله لي في المقابلات.

ننتقل حاليًا إلى هذا الموضوع بأكمله ونحاول وضع قائمة نقطية بما يجب القيام به على وجه التحديد. سيتم نشره عندما يكون لدي شيء حتى تتمكن من معرفة ما إذا كان قريبًا.

أوه ممتاز! يبدو أنك قد قمت بتغطية قطع الأشجار. كان ثعباني ضعيفًا قليلاً لفهم الفروق الدقيقة في الحل الخاص بك.

عالم صغير ، أنا في SF أيضًا!

رائع جدًا ... بقدر ما يمكنني استخلاصه من هذا الموضوع ، فهو في الغالب إصلاح سطر واحد ، ثم حل غموض وضع "الراحة" ... ما زلت غير متأكد من وضع راحة حالة الاستخدام على الإطلاق .. إذا كنت تعرف واحدًا ، فسأكون ممتنًا لفهمه ...

سأضطر إلى البحث في جميع المشكلات القديمة لإعطائك روابط محددة ، ولكن من أجل الحصول على استجابة سريعة ، يوجد هنا تفصيل:

  • حول r66 ، كان هناك التزام قام بتغيير الصادرات من استخدام REST إلى استخدام وضع POSE
  • لقد بدأت نسختي الخاصة من المصدر في هذا الوقت تقريبًا ، والتي أصبحت هي النسخة التي نتحدث عنها الآن ، واستندت إلى منطقتي الأصلية على منطق REST
  • في R70 ، كان المنجم هو المصدر البديل ، أي عندما انفجر كل الجحيم
  • لقد استبدلت المنطق بدعم POSE ، والذي أدى بعد ذلك إلى كسر الصادرات للمستخدمين الآخرين
  • لم أستطع أن أفهم ما كان يحدث بحق الجحيم ، لذا قمت بتطبيق التبديل بين الاثنين

حتى الآن يبدو أن هناك عنصرين يجب معالجتهما:

1) تحديد السياق النشط على المحرك

context.scene.objects.active = armature

2) لا تطبق المعدلات على شبكات الجلد

سأختبر تبديل الوضع الآلي مرة أخرى. قال أحدهم ذات مرة إنهم اكتشفوا ذلك من نص مختلف ولكن تلك الصلصة السرية لم تصل إلى المصدر.

manthrax هل يمكنك تسجيل الخروج من فرعي ومعرفة ما إذا كان هذا يناسبك؟
https://github.com/repsac/three.js/tree/anim_fix

يعمل هذا بشكل جيد مع الرسوم المتحركة في وضع الوضعية طالما أن الإطار الرئيسي الأول الخاص بك يحتوي على المحرك الذي تم تكوينه تمامًا مثل الشبكة الخاصة بك. إذا حاولت إضافة أي تحويلات loc / rot / scale ، في وضع الوضعية ، وقمت بتعيينها كأول إطار رئيسي ، فسيتم عرض النموذج مشوهًا.

واجهت مشكلة REST / POSE أيضًا (تحديث فرع dev). يحتوي النموذج على 40 + عظام و 7 إجراءات. يعمل POSE بشكل جيد ، لكن الملف الذي تم تصديره ضخم. يحتوي REST على رسوم متحركة مشوهة تمامًا.

يبدو أن المشكلة موجودة في مصفوفة _skinIndices_ المُصدَّرة. في وضع POSE أو REST ، تكون مصفوفة _skinIndices_ متطابقة ، لكن الترتيب وبالتالي الفهارس في مصفوفة _bones_ المُصدرة مختلفة تمامًا. أعتقد أن هذا لأن __rest_bones () _ يستخدم _armature.data.bones_ لفهرسة العظام و __pose_bones_ يستخدم _armature.pose.bones_ (api / mesh.py). لاحقًا __skinning_data () _ دائمًا ما يستخدم _armature.pose.bones_ بغض النظر عن إعداد REST / POSE. يبدو أن الاختبار السريع يؤكد ذلك. يؤدي استخدام _armature.data.bones_ في __skinning_data () _ إلى تصدير نموذجي والرسوم المتحركة بشكل صحيح في وضع REST.

لا أعرف ثلاثة.جس جيدًا بما يكفي للإجابة على هذا وتقديم إصلاح ، ولكن أيهما خاطئ في الواقع _ مؤشرات الجلد_ أم ترتيب _عظام_؟ يبدو أن ترتيب العظام في REST مطابق لمؤشرات مجموعات قمة Blender ، وهو أمر جيد على الأرجح.

مرحباً ، هذه القضية لم تغلق ولا تنتهي على ما هو الآن؟ لذلك لدي قلق آخر بشأن هذه المشكلة: هل جرب أي شخص تشغيل حركتين متزامنتين؟ لا تعمل محاكماتي ولكني لست متأكدًا من جودة الكائن ثلاثي الأبعاد الخاص بي. من ناحية أخرى ، شكل ما قرأته أعلاه أتساءل عما إذا كان هذا ممكنًا بالفعل؟

لاستكمال القلق: هل يسمح مصدر الخلاط بـ NLA؟

تعملDerived yes للرسوم المتحركة المتعددة وتشغيلها في الإصدار three.js الأحدث

Nla بشكل عام مدعوم فقط لعظام AFAIK

مرحبا ، شكرا على هذه التعليقات. نعم يمكنني تشغيل عدة رسوم متحركة وهناك "مزج" للرسوم المتحركة ؛ أستخدم الإصدار 71 ولكن مع إصدار مُصدِّر الخلاط المحدث (كما تمت مناقشته هنا أعلاه). لكن دعني أوضح ملاحظتي بشكل أفضل:

يحتوي نموذجي على رسمين متحركين مزودين: (A1) ذراع رفع و (A2) أدر رأسه إلى اليسار.

1) العب (A1) "ارفع الأذرع" ثم توقف في منتصف طريق الرسوم المتحركة (الأسلحة في منتصف الطريق)
2) اللعب (A2) "انعطف إلى اليسار" => يتحول الرأس إلى اليسار ولكن تعود الأسلحة إلى الموضع الأولي بدلاً من البقاء في مكانها.
3) أخيرًا ، إذا لعبت 2 معًا ، يتحول الرأس إلى اليسار ورفع الذراعين ولكن ليس كما يفعلون ولكن بدلاً من ذلك كمزج (A1) (الرفع) و (A2) (لا تحرك الذراعين) مع تأثير عدم تحريك العظام من (A1) إلى المتحركين من (A2) والعكس.
لذلك نظرت في ملف json ويمكنني أن أرى الرسوم المتحركة تصف مواضع العظام لجميع العظام في كل رسم متحرك. لذلك ، بالنسبة لـ (A2) "انعطف إلى اليسار" ، تشتمل الرسوم المتحركة على مواضع عظام للأذرع لا تتغير (يمينًا ، A2 لا تتحرك في A2). ولكن كيف تخمن Three.js أن هذه المواضع العظمية ليست مهمة ولا ينبغي أن تؤثر على مسار (A1)؟
آمل أن يكون هذا المثال مفهومًا.

أفقد عقلي على هذا

ها هي شبكتي المجهزة في الخلاط:

blender-cycle

هذا هو في threejs:

three-cycle

أمضيت يومين على التوالي في عملية التصدير وحدها. أحدث خلاط ، أحدث ثلاثة. ما هو الوضع الحالي للمصدر؟

DelvarWorld أعتقد أنك بحاجة إلى استخدام مصدر Blender في فرع DEV للعمل بشكل صحيح.

تضمين التغريدة

تضمين التغريدة

ما هو الوضع الحالي للمصدر؟

أنا أعتقد ذلك

تم إلغاء تعيين repsac بواسطة mrdoob في 30 ديسمبر 2015

قد تكون المشكلة. من الواضح أنه يحتاج إلى بعض الحب.

قد أذهب للبحث عن الأخطاء المختلفة التي تم الإبلاغ عنها مؤخرًا. هل يمكنك مشاركة ملف لإعادة إظهار هذه المشكلة (الأبسط ، الأفضل)؟

للراحة سأقوم بنشر هذا هنا أيضًا. حاولت تصدير نموذج اختبار DelvarWorld ونشرت تعليقًا

تضمين التغريدة
https://github.com/mrdoob/three.js/pull/8412#issuecomment -210675561 هذا؟

عمل رائع على إصلاح كل هذه المشكلات: +1:!

عند الانتهاء من التصحيح ، هل تمانع في فتح تذكرة جديدة تحتوي على أوصاف أو روابط لمشكلات المُصدِّر المتبقية أو التي تم إنشاؤها حديثًا أو المكتشفة؟

من الصعب للغاية تتبع الأشياء عندما يتم نشرها في مكان ما على التذاكر الموجودة.

من الناحية المثالية واحد لكل حالة (إذا لم يكن موجودًا بعد) و "مشكلات مصدر الخلاط" الرئيسية (أو شيء من هذا القبيل) يشير إليها جميعًا.

ما يمكنني تذكره من أعلى رأسي هو

  • كانت القواعد تفتقر إلى الدوران (ثابت)
  • مشكلة الرسوم المتحركة عند تصدير التسلسل الهرمي للمشهد. هل يعمل الآن؟
  • ثم هناك مشكلة طرح الباقي المذكورة في رسالتك
  • ثم هناك مشكلة الجلد / الإطارات الرئيسية (رسائل الخطأ؟)
  • ... (كان هناك المزيد ، على ما أعتقد)

بالطبع! هذه فكرة عظيمة. سأحاول الوصول إليه في نهاية هذا الأسبوع ،
وإلا يوم الاثنين عندما أعود إلى المكتب.
في 15 أبريل 2016 5:12 مساءً ، كتب "tschw" [email protected] :

phfatmonkey https://github.com/phfatmonkey

8412 (تعليق)

https://github.com/mrdoob/three.js/pull/8412#issuecomment -210675561
هذا؟

عمل رائع على إصلاح كل هذه المشكلات [الصورة:: +1:]!

عندما تنتهي من الترقيع ، هل تمانع في فتح تذكرة جديدة أ
وصف أو ارتباط ما تبقى ، تم إنشاؤه أو اكتشافه حديثًا
قضايا المصدر؟

من الصعب للغاية تتبع الأشياء عند نشرها
في مكان ما على التذاكر الموجودة.

مثالي واحد لكل حالة (إذا لم يكن موجودًا بعد) و "مصدر الخلاط" الرئيسي
قضايا "(أو شيء من هذا القبيل) تشير إليهم جميعًا.

ما يمكنني تذكره من أعلى رأسي هو

  • كانت القواعد تفتقر إلى الدوران (ثابت)
  • مشكلة الرسوم المتحركة عند تصدير التسلسل الهرمي للمشهد. هل يعمل الآن؟
  • ثم هناك مشكلة طرح الباقي المذكورة في رسالتك
  • ثم هناك مشكلة الجلد / الإطارات الرئيسية (رسائل الخطأ؟)
  • ...

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/mrdoob/three.js/issues/6050#issuecomment -210693332

ماذا عن تحرير الرسوم المتحركة غير الخطي كما يمكن القيام به في Blender؟ ألا يوجد أحد مهتم بهذا السؤال؟ شرحت النقطة في رسالة سابقة ولكن ليس لدي تعليق؟

derivou
اي رسالة؟

عندما يحتاج إلى رمز مخصص ، سيتعين على شخص ما كتابته. مساهمة قد تكون موضع ترحيب ...

هنا رسالة أعلاه مؤرخة في الخامس من فبراير شرحت المشكلة عند الجمع بين العديد من الرسوم المتحركة.
سأكون سعيدًا للمساعدة في التطوير ولكني أعتقد أنه يتطلب أولاً بعض المناقشات لمشاركة الأفكار ومناقشة كيفية تنفيذها. لذلك فتحت عنصر اقتراح "Non Linear Animation" # 7913

هذه مشكلة طويلة وسأعترف بأنني لم أقرأ كل شيء ، ولكن إذا كانت المشكلة لا تزال كما هو موصوف في OP (أي تحتاج إلى طريقة لتحريك شخصية في Mixamo وتحميلها في three.js) ، فيمكنك إنجاز هذا مع مصدر glTF Blender و THREE.GLTFLoader. إليك سير العمل الخاص بي: https://medium.com/@donmccurdy/creating -animated-gltf-character-with-mixamo-and-blender-728dc120e678

بدلاً من ذلك ، يمكنك فقط التصدير كـ FBX من Mixamo والتحميل مباشرةً باستخدام FBXLoader.
اعتبارًا من الإصدار الأخير (R89) ، يجب أن يعمل بسلاسة كبيرة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات