سؤال

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

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

Polygonized curved 3D object

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

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

المحلول

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

نصائح أخرى

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

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

وهناك جردت أسفل مصدر الخلاط يبدو شيئا من هذا القبيل:


#!BPY
import bpy, struct
from Blender import *

self.fh = open("MyFileName", "w")
m = bpy.data.meshes["MyMeshName"]
faces = m.faces
for face in faces:
    for (vertex, uv) in zip(face.verts, face.uv):
        self.fh.write(struct.pack('<fff', *vertex.co)) # coords
        self.fh.write(struct.pack('<fff', *vertex.no)) # normals
        self.fh.write(struct.pack('<ff',  uv.x, uv.y)) # uvs

self.fh.close()

إذا كنت ترغب في تحليل .dae الملفات، وأقترح أن ننظر في كولادا الموزعون..dae هو في الواقع امتداد لملفات Collada، وهو أحدث جهد من مجموعة خرونوس (مشرفو OpenGL) للحصول على تنسيق ملف واحد موحد لتبادل البيانات ثلاثية الأبعاد.

أما بالنسبة للمحللين الحاليين، فإليك ما صادفته:

  • كولادا دوم, ، التنفيذ المرجعي.كما يوحي الاسم، فهو مجرد تجريد لشجرة XML.
  • كولادا, ، تجريد أجمل.ومع ذلك، فقد توقف هذا المشروع منذ ما يقرب من عامين، ومن خلال ما جمعته، فمن غير المرجح أن نرى أي تحديث في المستقبل.
  • OpenCollada, ، جهد جديد حديث.لم أجربه ولكن هناك مجتمع نشط وراءه.

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

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

إذا كنت تعتقد أن إعراب XML بسيطة، ثم آمل كنت تخطط لاستخدام المكتبات الموجودة للقيام بذلك، مثل المغتربين، Xerces، أو بعض الدول الأخرى محددة للتنفيذ لغة.

عند النظر الاستيراد / التصدير، أول محاولة للعثور على مكتبة مفتوحة المصدر التي يمكن التعامل مع الاستيراد بالنسبة لك وجعل البيانات متاحة للبرنامج الخاص بك في شكل معقول. إذا كان هذا غير متوفر، ويجب أن تكتب المستورد الخاص بك، ثم حاول العثور على ASCII بسيط (<م> يستند إلى XML لا ) أو تنسيق ثنائي الذي يناسب احتياجاتك. قد يكون PLY مناسبة. فقط باعتباره الملاذ الأخير، وأود أن أوصي تحاول تنفيذ المستورد للتنسيق القائم على XML.

وهناك أيضا: Lib3DS - http://www.lib3ds.org/ LibOBJ (لن اسمحوا لي إضافة وصلة)

ويجب أن نلقي نظرة على:

http://sketchup.google.com/community/developers.html

والفريق سكتشب يوفر C ++ COM الخادم مجانا. باستخدام هذا، يمكنك الحصول على الكثير من المعلومات حول ملف .skp.

ويجب أن تكون قادرة على استخدام هذا الخادم COM لكتابة المستورد .skp للتطبيق الخاص بك.

ويجب عليك محاولة للحصول على الملف .tlb إذا كنت تستطيع. هذا وسوف تعطيك الوصول إلى مؤشرات الذكية، والتي سوف تبسيط المستورد (العميل COM) الخاص بك

ولقد استخدمت الإصدار 6 SDK (التي تضمنت ملف يقول:). لا يظهر الإصدار الحالي من SDK لتضمين هذا الملف.

واحدهم قام بنشرها حل (للملف يقول: مفقود) في المحافل المطور: http://groups.google.com/group/su-sdk-fileshare/ المواضيع

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