2012-11-28 36 views
26

यदि आप चाहते थे:ओपनजीएल/सी ++ प्रोजेक्ट में 3 डी मॉडल आयात करने के लिए अनुशंसित फ़ाइल प्रारूप और ग्राफिक्स पुस्तकालय?

  • किसी 3 डी संपादक में ऑब्जेक्ट मॉडल करें, उदा।

    • क्या फ़ाइल स्वरूप होगा: ब्लेंडर, माया, आदि
    • एक डेटा/फ़ाइल स्वरूप
    • ओपन का उपयोग कर एक परियोजना में मॉडल आयात और C/C++
    फिर

    में मॉडल का निर्यात आप सादगी, पोर्टेबिलिटी, और संगतता (यानी आम/लोकप्रिय) के संदर्भ में निर्यात करने की सलाह देते हैं?

  • मॉडल को आपके ओपनजीएल सी/सी ++ प्रोजेक्ट (यानी अधिमानतः ओपन सोर्स) में आयात करने के लिए आप किस ग्राफिक्स लाइब्रेरी का उपयोग करके अनुशंसा करेंगे?
  • इसके अतिरिक्त, वहाँ डेटा/फ़ाइल स्वरूप हैं जो एनीमेशन, यानी "एनिमेटेड मॉडल" प्रारूप को कैप्चर करते हैं, जैसे कि एनीमेशन को 3 डी एडिटर में मॉडलिंग किया जा सकता है और किसी भी तरह कोड के अंदर डाला जा सकता है (उदाहरण के लिए एनीमेशन अनुक्रम में फ़्रेम तक पहुंच या समय के साथ परिवर्तन से संबंधित विवरणों को सहेजने/लोड करने के लिए कुछ अन्य प्रतिमान)?

आम तौर पर, मैं प्राथमिकता के रूप में सादगी की तलाश कर रहा हूं, यानी कला और कंप्यूटर विज्ञान दोनों में अपनी पृष्ठभूमि को जोड़ने के साथ शुरू करने में मदद करता हूं। मैं उमास में एक कंप्यूटर साइंस प्रमुख हूं, साथ ही साथ, ग्रीष्मकालीन/शीतकालीन सत्रों के दौरान आर्ट इंस्टीट्यूट ऑफ बोस्टन में कक्षाओं के साथ-साथ विश्वविद्यालय में ग्राफिक डिज़ाइन में ऐच्छिक लेकर "छद्म" कला में दोहरे प्रमुखों की तरह, तो , दूसरे शब्दों में, मैं एक पूर्ण नौसिखिया नहीं हूं, लेकिन साथ ही मैं वास्तव में उन विकल्पों को नहीं चाहता जो पागल उन्नत कॉन्फ़िगरेशन के साथ इतने अधिक लोड हो गए हैं, जिससे मूल प्रदर्शन परियोजना के साथ शुरुआत करना मुश्किल हो जाता है; यानी इन दोनों दुनिया के बीच के अंतर को पुल करने के तरीके को समझने के पहले चरण के रूप में, उदाहरण के लिए। एक 3 डी चरित्र वाली एक प्रोग्राम बनाना जिसमें उपयोगकर्ता बातचीत कर सकता है।

+2

+1, बहुत अच्छा सवाल है। "डेटा/फ़ाइल स्वरूपों के लिए जो एनीमेशन कैप्चर करते हैं" के लिए, [Alembic] (http://alembic.io) इसके लिए बहुत अधिक डिज़ाइन किया गया है। अगर आप विंडोज़ पर हैं तो शुभकामनाएं बनाना ;-) – Cameron

+0

ठीक है, मैं इसे देख लूंगा। (कमांड लाइन के माध्यम से मैक ओएसएक्स पर बिल्डिंग।) धन्यवाद! : डी – Simone

उत्तर

12

COLLADA, और Assimp (कि के रूप में मिसाल) (मैं इसे एक "आह" अंत में साथ कह रहा हूँ)।

और इसलिए, क्यों COLLADA? सरल:

  • कोलाडा ख्रोनोस (सोनी विशेष रूप से) द्वारा निर्मित एक खुला मानक है। एक खुले मानक प्रारूप की सुंदरता यह है कि यह एक मानक है! आपको आश्वस्त किया जा सकता है कि मानक-अनुरूप उत्पाद का कोई भी आउटपुट किसी अन्य मानक-अनुरूप उत्पाद द्वारा सही ढंग से पढ़ा जाएगा। हालांकि, यह कहना दुखद है कि कुछ 3 डी मॉडलिंग उत्पाद विशेष रूप से कोलाडा के मानकों के अनुरूप मानकों के अनुरूप नहीं हैं। लेकिन फिर भी आश्वस्त रहें: ब्लेंडर, माया, 3 डीएस मैक्स और 3 डी मॉडलिंग में अन्य सभी बड़े नामों के प्रारूप के लिए अच्छा समर्थन है।
  • COLLADA एक्सएमएल का उपयोग करता है। यदि आप अपना खुद का पाठक या लेखक बनाने की योजना बना रहे हैं, तो इससे आपके लिए यह अधिक आसान हो जाता है।
  • अतिरिक्त: कोलाडा, मुझे लगता है, एकमात्र प्रारूप जो एक विशिष्ट कंपनी से बंधे नहीं है। यह हमारे लिए एक बहुत अच्छी बात है, आप जानते हैं।
  • अतिरिक्त 2: यह ज्ञात है कि कोलाडा को पार्स किया जाना धीमा है। यह सच है। लेकिन इसके बारे में सोचें: अन्य सभी गैर-बाइनरी प्रारूप (जैसे एफबीएक्स) में भी वही समस्याएं हैं। आपकी जरूरतों के लिए, कोलाडा पर्याप्त होना चाहिए।
  • अतिरिक्त 3: COLLADA एनिमेशन का समर्थन करता है!

आयातक पुस्तकालय के लिए, मैं अत्यधिक असीम की सलाह देता हूं। क्यूं कर?

  • असिंप किसी भी लोकप्रिय प्रारूप के लिए समर्थन करता है जिसे आप कल्पना कर सकते हैं। इसमें सभी प्रारूपों के लिए एक एकीकृत इंटरफेस है ताकि दूसरे प्रारूप में स्विचिंग दर्द से कम हो।
  • असीम्प एक्स्टेंसिबल है। इस प्रकार आप अपना मालिकाना प्रारूप आयात कर सकते हैं और अभी भी अपना कोड संशोधित नहीं कर सकते हैं।
  • अतिरिक्त 4: असीम्प खुला स्रोत है! चलो ओपन सोर्स सॉफ्टवेयर का समर्थन करते हैं!
+0

कोलाडा विशेष रूप से जटिल मॉडल के लिए पार्स धीमा है;) –

+0

@ माइकलिव बिल्कुल सही है। लेकिन उनके उद्देश्य के लिए, कोलाडा वह कभी भी पूछने के मुकाबले ज्यादा है। –

+1

तो इस मामले में वह 3 डी का उपयोग कर सकते हैं और lib3ds का उपयोग कर सकते हैं। तेज़ और सरल। कोलाडा पुराना स्कूल है;) –

5

पहले, here आप के बारे में सुझाव दिया पढ़ें कर सकते हैं मॉडल लोड हो रहा है lbs.Lib Assimp वास्तव में अच्छा है और समर्थन करता है, कई formats.For वरीय formats.Collada-मैं की सिफारिश नहीं है, क्योंकि है कि XML (पाठ) आधारित स्वरूपों है जो पार्स करने में धीमा है। ओबीजे प्रारूप भी व्यापक है लेकिन कोलाडा जैसी ही समस्याओं से पीड़ित है। यह अभी भी अच्छा है अगर आप अपना खुद का पार्सर लिखना चाहते हैं क्योंकि इसकी संरचना बहुत सरल है। लेकिन इसके बजाय मैं 3 डी का सुझाव दूंगा जो बाइनरी है। हालांकि यह एनीमेशन का समर्थन नहीं करता है आज सबसे लोकप्रिय प्रारूप जो स्थिर जाल और एनीमेशन दोनों का समर्थन करता है वह एफबीएक्स है। आप download for free ऑटोोडस्क से एफबीएक्स एसडीके कर सकते हैं और इसे अपने इंजन से कनेक्ट कर सकते हैं। कारण मैं एफबीएक्स चुनूंगा क्योंकि एसडीके और प्रारूप दोनों वास्तव में मजबूत हैं। उदाहरण के लिए, एफबीएक्स में आप न केवल ज्यामिति और एनीमेशन को एम्बेड कर सकते हैं बल्कि दृश्य वस्तुओं को रोशनी, कैमरे इत्यादि के रूप में भी एम्बेड कर सकते हैं। ऑटोडस्क डॉक्स भी बहुत अच्छे हैं। उम्मीद है कि यह मदद करता है।

+3

+1। मैंने इसे काम पर इस्तेमाल किया है और अन्य गेम स्टूडियो भी इसका इस्तेमाल करते हैं। एसडीके अच्छा है और कई चीजों का समर्थन करता है। –

+0

आप एफबीएक्स के लिए एक अच्छा मामला बनाते हैं। मैं निश्चित रूप से एफबीएक्स एसडीके और असिंप का पता लगाऊंगा। इसके अलावा, अन्य स्टैक ओवरफ्लो पोस्ट को इंगित करने के लिए धन्यवाद। बहुत उपयोगी। :) – Simone

3

मैं अपने स्वयं के कस्टम प्रारूप का उपयोग करके पुनः प्राप्त करूँगा जो मूल रूप से आपके प्रोग्राम में उपयोग किए गए वर्टेक्स बफर और इंडेक्स बफर का एक बाइनरी डंप है। (वहां d3d शब्दों का उपयोग करके, मुझे पता है कि ओपनजीएल में एक ही अवधारणाएं हैं लेकिन याद नहीं रख सकती हैं कि उनके पास अलग-अलग नाम हैं)।

मैं फिर गधे का उपयोग करके एक अलग प्रोग्राम लिखूंगा जो कि बहुत अधिक प्रारूप लेता है और फ़ाइल को आपके कस्टम प्रारूप में लिखता है। फिर आप अपने असली मॉडल को स्टोर करने के लिए कोलाडा या व्हाटवर का उपयोग कर सकते हैं, लेकिन रनटाइम पर उस प्रारूप को लोड करने की जटिलता और धीमी गति नहीं है।

+0

शायद भविष्य में इसका पता लगाने के लिए कुछ ऐसा है यदि ऐसा करने के लिए व्यावहारिक अर्थ हो। पहले उस रास्ते को नीचे चला गया, यानी यह सोचने के लिए प्रयोग किया जाता था कि मेरे पुस्तकालयों का निर्माण "सबकुछ" के लिए सबसे अच्छा समाधान था, लेकिन अधिकांशतः यह "पहिया को पुनर्निर्मित करने" के लायक नहीं है जब तक कि आप इसे व्यावहारिक उद्देश्य के लिए नहीं कर रहे हैं, यानी कुछ सुधार करना मौजूदा समाधान, और निश्चित रूप से यह एक उन्नत संस्करण को डिजाइन करने में आपके निर्णयों को सूचित करने के लिए मौजूदा समाधानों के साथ कुछ प्रकार का अनुभव रखने में मदद करता है। इन दिनों मैं पूर्णतावाद में पकड़े जाने के बजाय, पारेतो के सिद्धांत की सदस्यता लेता हूं, यानि 80-20% नियम। – Simone