سؤال

أنا أعمل حاليا على إنشاء خط أنابيب يستند إلى استيراد لعبتي Indie باستخدام Maya Ascii .ma كتنسيق مصدر وتنسيق خاص بي للفيزياء والرسومات كإخراج. سأظل أشياء مثل سمات مجموعة الحركة داخل مايا، مثل مفصل المفصلي. أنواع أخرى من المعلمات التي تحتاج إلى الكثير من القرص ينتهي في ملفات مصدر منفصلة (ربما .ini للحصول على أشياء مثل الكتلة، الثوابت الربيع، قوة المحركات الفيزيائية وما شابه ذلك).

الإدخال هو بالتالي.

ربما سأستفيد بيثون 3.1 لإعادة تهيئة البيانات، ووجدت بالفعل بعض رمز LGPL 2.1 الذي يقرأ Maya ASCII الأساسية. ربما سأستخدم بيثون أيضا لإطلاق النظام الأساسي أثناء التطوير. تم تطوير اللعبة في C ++.

هل هناك أي شيء في كل هذا الذي تقدمه ضده؟ ملخص سريع للأشياء التي قد تكون معيبة:

  • خط أنابيب استيراد (لا يستند إلى التصدير)؟
  • مايا (وليس 3DS)؟
  • مايا ASCII .MA (وليس .mb)؟
  • .ini (وليس .xml)؟
  • فصل الحركة الذكية في Maya و "Freak-Tweak" السمات في .ini (ليس كل ما في المايا)؟
  • Python 3.1 لبناء البيانات (وليس جزءا لا يتجزأ من C ++)؟

تحرير: إذا كان لديك اقتراح أفضل لكيفية تنفيذ سلسلة أداة استيراد / تصدير الفيزياء / الرسومات، فأنا أقدر المدخلات.

هل كانت مفيدة؟

المحلول

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

  • مايا .MA (على الأقل حتى v.2010 الحالي) مبنية من قبل ميل. MEL تورينج إكمال، ولكن الطريقة التي يوضح بها المشهد الهرمي من حيث العقد أكثر بكثير إلى الأمام مباشرة من "الكود".
  • إضافة خطأ في التعامل مبكرا أو أنك سوف تكون آسف لاحقا.
  • يجب عليك التعامل مع الكثير من العقد المختلفة، حيث تتحول إلى حد بعيد الأكثر إغاثة. تشمل الأنواع الأخرى تنسيقات، مواد (العديد من الأنواع المختلفة)، "محركات Shader" والملفات (مثل القوام).
  • .MA فقط يصف الأشكال والقرص؛ ولكن نادرا ما يحدد القمم الخام. اخترت الاحتفاظ ببرنامج نصي صغير "تصدير" داخل .ma لتجنب الاضطرار إلى توليد جميع البدائيات بنفس الطريقة تماما مثل المايا. في الفينتان، كانت هذه هي الطريقة الصحيحة للذهاب. وإلا يجب أن تكون قادرا على القيام بأشياء مثل
    1. "إنشاء كرة"،
    2. "حرك الاختيار اللين مع دائرة نصف قطرها هذا، وهكذا من هنا إلى هناك"، و
    3. "تحرك وحدات Vertex 252 XYZ" (مع جميع القمم المحددة ضمنيا).
  • تعرف مايا المضلعات للشبكات. قد ترغب في تحويل RT إلى مثلثات.
  • جميع المعلمات الموجودة على نوع معين من العقدة هي إما محددة صراحة أو ضمنيا. عليك أن تعرف قيمها الافتراضية (عند تحديد ضمنيا)،
  • أساسا، يتم تعريف كائن من خلال تحويل، شبكة وبدائية. التحويل هو الوالد من الشبكة. يحتوي التحويل على التحجيم والتناوب والترجمة الترجمات المحورية وحتى الآن. الروابط شبكة إلى بدائي والعكس صحيح. البدائية لها نوع ("polycube") والأبعاد ("العرض، الارتفاع، العمق").
  • قد يكون العقد "ميراث متعددة". على سبيل المثال، يحتوي شبكة Instanized عدة مرات على شبكة واحدة (وبيرية واحدة)، ولكن الآباء المتعددين (التحولات).
  • تحول العقدة محسوبة مثل (انظر مايا xform doc. لمزيد من المعلومات):

vrt = getattr("rpt")
rt = mat4.translation(vrt)
...
m = t * rt * rpi * r * ar * rp * st * spi * sh * s * sp
  • أقوم ببناء محركي حول الفيزياء، وبالتالي فإن محرك اللعبة يريد شبكات توضع على الأشكال الفيزيائية، ولكن عند النمذجة أريدها بطريقة أخرى. هذا للحفاظ عليه عام للتطبيقات المستقبلية ("الشبكات بدون الفيزياء"). هذا القرار الصغير تسبب لي حزن خطير في التحولات. الجبر الخطي حصلت على فرشاة متابعة. مشاكل في التحجيم والتناوب والترجمة والقص؛ قمت بتسمية ذلك، لقد كان ذلك.
  • بنيت أداة الاستيراد الخاصة بي cgkit.محلل المايا. شكرا ماتياس بااس!
  • إذا كنت ستفعل شيئا مشابها، فأنا نوصيك بشدة في تطل محول بلدي قبل كتابة الخاصة بك. أخذني هذا المشروع "الصغير" لي ثلاثة أشهر مؤلمة للوصول إلى حالة عمل أساسية.

نصائح أخرى

كنسخة تسلسل عام كلاهما قابل للقراءة البشرية والبالغة البشرية، لديه دعم ممتاز لبثون (، حسنا، أي دعم اللغة حقا)، قد ترغب في التفكير في استخدام Yaml أو JSON عبر ملفات INI أو XML.

يمكن أن تكون XML مقبولة في قضيتك إذا لم تنفذ أبدا الملفات باليد.

تتمثل إحدى مزايا JSON و YAML في الكتابة: يتم تحليل كل من التنسيقات إلى قوائم الثعبان القواميس، القواميس، يطفو، Ints ... أساسا: Sane Python أنواع.

أيضا، ما لم تكن متأكدا من أن كل مكتبة ستستخدمها على الإطلاق في 3.1، فقد ترغب في التفكير في الالتصاق مع 2.x بسبب مشكلات توافر المكتبة.

يجب أن تفكر في استخدام خط أنابيب قائم على التصدير أو تنسيق ملف موحد مثل OBJ أو COLLADA بدلا من إعادة تطبيق محلل .ma وتكرار جميع Ina Maya Internals اللازمة لتفسيرها.

لا يقصد بتنسيق .ma / .mb أن يقرأ عن طريق أي برنامج بخلاف مايا نفسها، لذلك لا يضع Autodesk أي جهد في جعل هذه العملية السهلة. لتحليلها 100٪ بشكل صحيح، ستحتاج إلى تنفيذ لغة البرمجة النصية بأكملها.

جميع خطوط الأنابيب القائمة على مايا التي رأيتها إما محتوى التصدير الأول في تنسيق ملف موحد، أو تشغيل البرامج النصية MEL داخل Maya لمحتوى تفريغ باستخدام واجهات MEL NODE.

ملاحظة من Maya يمكن تشغيلها في وضع "بلا رأس" حيث يقوم بتحميل مشهد، وينفذ البرنامج النصي MEL، ويقدم، دون تحميل واجهة المستخدم الرسومية. وبالتالي لا توجد مشكلة في استخدامها داخل أنظمة البناء الآلي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top