2009-02-25 15 views
7

मैं जॉग में एक गेम लिख रहा हूं और इन-गेम चरित्र का प्रतिनिधित्व करने की आवश्यकता है। मैं चरित्र आंदोलनों के लिए कंकाल एनीमेशन का उपयोग करने की योजना बना रहा हूं, और निश्चित रूप से चरित्र चमकीला होगा। मुझे जॉगएल के लिए कोई अच्छा मॉडल लोडर नहीं दिख रहा है, इसलिए मैं चश्मा या कुछ के आधार पर खुद को फ़ाइल टाइप लोड करने की योजना बना रहा हूं। मैं अपने 3 डी मॉडलर के रूप में ब्लेंडर का उपयोग करने की भी योजना बना रहा हूं, इसलिए वहां मौजूद कुछ प्रकार सबसे अच्छे होंगे।मैन्युअल रूप से लोड इन-गेम चरित्र मॉडल के लिए अनुशंसित 3 डी मॉडल प्रकार?

मैं किस फ़ाइल प्रकार का अनुशंसा करता हूं जिसका उपयोग मैं करता हूं? .blend? .x, .3ds, .md2/3/5, ... ?? याद रखें मुझे एक स्पष्ट परिभाषित प्रारूप के साथ कुछ चाहिए, ताकि मैं लोडर को कुछ यादृच्छिक फ़ाइल प्रारूप को डिबफस्केट किए बिना लिख ​​सकूं, और इसे उपर्युक्त सुविधाओं का समर्थन करने की आवश्यकता है। आपने जो भी अन्य जानकारी दी है, उसके बारे में आप यह क्यों दे सकते हैं कि यह क्यों चुना गया है और यह सबसे अच्छा क्यों है, यह भी बहुत ही खुशहाल होगा!

धन्यवाद!

संपादित करें: मैं एक ब्लेंडर एमएस 3 डी निर्यातक लिखूंगा। जब मैं समाप्त करूँगा तो मैं इसे here पोस्ट करूंगा।

इस बीच, नीचे मेरा चिह्नित उत्तर देखें; लेकिन तब से और अधिक चला गया है। मैं यह अद्यतन करने के लिए नहीं जा रहा हूं जो मैं कर रहा हूं, लेकिन मूल रूप से मुझे जेमॉन्की इंजन मिला और इसमें पहले से ही एक एमएस 3 डी आयातक और अन्य उपप्रणालीएं हैं जिन्हें मैंने हाथ-लेखन शुरू कर दिया था। दृश्यग्राफ सामान के बावजूद (यही कारण है कि मैं जावा 3 डी से परहेज कर रहा था) मुझे लगता है कि इसके साथ बलों में शामिल होने के लिए यह मेरी सबसे अच्छी शर्त होगी, इसलिए मैं यही कर रहा हूं।

उत्तर

2

सबसे पहले, अन्य दो उत्तरदाताओं के लिए धन्यवाद।इसके अलावा basszero आप मिश्रण फ़ाइल के बारे में सही थे, और मुझे पहले विकिपीडिया की जांच करनी चाहिए! यह ब्लेंडर की स्मृति के पास के बेकार बाइनरी डंप है।

इस प्रश्न को लिखने के कुछ समय बाद, मैंने आगे बढ़ने और ओबीजे लोडर लिखने का फैसला किया, क्योंकि 1) यह मुझे एक 3 डी फ़ाइल प्रारूप लोड करने का अनुभव देगा और 2) यह एक अच्छा, सामान्य रूप से प्रयुक्त प्रारूप था लेकिन यह भी लोड करने में आसान है। यह एक अच्छा निर्णय बन गया, क्योंकि यह मुझे एहसास हुआ, मुझे वास्तव में किसी वस्तु और समूह के बीच का अंतर नहीं पता था, और मुझे सामग्री के बारे में बहुत कुछ नहीं पता था। इससे मुझे इन 3 डी संरचनाओं के लिए कोड स्थापित करने में मदद मिली।

दोनों उत्तर एक्सएमएल-आधारित प्रारूपों की अनुशंसा करते हैं। मैं एक एक्सएमएल प्रारूप नहीं चाहता। मुझे विश्वास नहीं है कि यह एक्सएमएल के लिए सही जगह है। मेरा मानना ​​है कि उन प्रारूपों को बनाया गया था क्योंकि एक्सएमएल लचीला, सार्वभौमिक और स्कीमा बनाने में आसान है, लेकिन यह वह नहीं है जिसे मैं ढूंढ रहा हूं। मैं एक प्रारूप चाहता हूं जो लोड करने के लिए तेज़ है (एक्सएमएल नहीं है, अपेक्षाकृत बोल रहा है), यह लचीला या मानव-पठनीय नहीं होना चाहिए, और कुछ ऐसा है जो मैं एक्सएमएल पुस्तकालयों पर भरोसा करने के बजाय एक आयातक लिख सकता हूं। बास्सेरो ने भी कहा, "एक्सएमएल होने की लागत पर," और वह पूरी तरह से सही है; यह एक लागत है जिसे मुझे लगता है कि बोझ के लायक नहीं है।

मेरा ओबीजे लोडर किया जाता है। मैंने इसे वास्तविक मॉडल कक्षाओं से अलग कर दिया, और इसे मेशफ़ैक्टरी इंटरफ़ेस के साथ कार्यान्वित किया ताकि भविष्य में मैं एक अलग लोडर लिख सकूं यदि मैं चाहता था ... योजना कौन सा है। मैं पिछले कुछ दिनों में और अधिक शोध कर रहा हूं और ms3d प्रारूप पर फैसला किया है।

ms3d प्रारूप कंकाल rigging (जोड़ों) और keyframe कंकाल एनीमेशन का समर्थन करता है, और इसके अलावा एक बनावट मानचित्र और अल्फा मानचित्र का समर्थन करता है। इसके अलावा, यह एक आसानी से कंप्यूटर-पठनीय बाइनरी प्रारूप है जो मानव पठनीय टैग और लेबल और ऐसे के साथ कोई स्थान बर्बाद नहीं करता है (जैसे एक्सएमएल और ओबीजे डू)।

ब्लेंडर, दुर्भाग्यवश, एमएस 3 डी निर्यात स्क्रिप्ट नहीं है (इसलिए) मैं इसके लिए एक स्क्रिप्ट लिखूंगा। सौभाग्य से, यह एक कठिन प्रक्रिया नहीं है, और आप ब्लेंडर के दस्तावेज के माध्यम से पढ़ सकते हैं और अन्य निर्यातकों को उदाहरण के रूप में उपयोग कर सकते हैं। मुझे अपने पायथन पर ब्रश करना होगा, लेकिन अन्यथा यह अन्य स्क्रिप्ट्स के बारे में मैंने जो देखा है उससे बहुत सरल लगता है।

चीजों का जावा पक्ष आसान होना चाहिए, वास्तव में यह ओबीजे प्रारूप से भी आसान होगा क्योंकि ms3d अधिक संरचित है। मुझे ms3d प्रारूप ऑनलाइन के लिए specifications मिला, सी शैली (प्रतिभा!) में, इसलिए वे अविश्वसनीय रूप से आत्म-व्याख्यात्मक हैं और मेरे पास प्रारूप के बारे में कोई और प्रश्न नहीं है। मैं इस अध्याय के अपने कार्यान्वयन को बंद कर दूंगा, हालांकि मैं बाद में अपनी खुद की विविधताओं को लागू कर सकता हूं; मेरे अपने आयातक और निर्यातक को लिखने के बारे में यह बहुत अच्छी बात है, मैं प्रारूप को संशोधित कर सकता हूं जैसा कि मैं फिट देखता हूं।

सब कुछ में, मैंने फैसला किया है कि यह सबसे अच्छा समाधान है।

और बेसरियो, जैसा कि मैंने अपने ओबीजे लोडर से देखा है, आप बिल्कुल सही हैं: "एक बार जब आप इसे सभी में पढ़ लें, डेटा (प्रदर्शन सूची, बनावट, वर्टेक्स सरणी, वर्टेक्स बफर इत्यादि) और प्रतिपादन एक पूरी तरह से अलग जानवर हैं। "

क्रूचैन: मेरे लिए कोई जावा 3 डी नहीं, मैं जॉग के साथ चिपक रहा हूं। मैं वास्तव में उस पुस्तक का मालिक हूं (हालांकि इस समय यह उपलब्ध नहीं है) हालांकि मुझे याद नहीं है कि उसने मॉडल कैसे लोड किए हैं, लेकिन मुझे पूरा यकीन है कि उन्होंने जावा 3 डी प्रारूप लोडर का उपयोग किया जो इसे स्वचालित रूप से करता है। ऐसा कुछ नहीं है जिसका मैं उपयोग करने की योजना बना रहा हूं ... क्षमा करें!

-Ricket

3

यदि आप सिर्फ ज्यामिति के साथ रह सकते हैं, या अपने स्वयं के बनावट को संभालने के लिए तैयार हैं, तो .obj शायद सबसे सरल और व्यापक रूप से समर्थित 3 डी फ़ाइल प्रारूप है। यह मूल रूप से 3 डी मॉडलिंग की ascii है।

अन्यथा मैं vrml की ओर रुख करता हूं। यह अच्छी तरह से परिभाषित है और शुरू करने के लिए कम से कम कुछ कोड है। मैंने स्वतंत्र रूप से उपलब्ध कोड का उपयोग कर java3D में vrml मॉडल सफलतापूर्वक लोड कर दिए हैं। मूल फ़ाइल आकार बड़ा होता है, लेकिन इसे संपीड़ित प्रारूप का उपयोग करके हल किया जा सकता है।

मैं .3ds की अनुशंसा नहीं करता। इस प्रारूप के लिए मैंने पाठक को संभालने का एकमात्र समय डेल्फी पास्कल में किया था, और यह गन्दा, बीमार परिभाषित, प्रक्रिया करने में मुश्किल है और इसमें कई 'विविधताएं' हैं जैसे कि मैं अपने पाठक हैंडलिंग मॉडल को निर्यात करने में कामयाब रहा 3 डी-मैक्स ने खुद को ठीक किया है, यह 3 डी प्रारूप में होने वाले अन्य पैकेजों के कई मॉडलों को खारिज कर दिया गया है लेकिन ठीक तरह से गठित नहीं किए गए थे।

जोड़ा गया: इसके अलावा मैं आपको जावा 3 डी एपीआई और O'Reilly पुस्तक Killer Game Programming in Java पर एक नज़र डालने की सलाह दूंगा, भले ही आप Java3D मार्ग पर न जाएं, यह आपके कई प्रश्नों का उत्तर देने की संभावना है।

+0

मैं इतना यकीन है .obj के बारे में, यह अत्यंत अक्षम लगता है नहीं कर रहा हूँ। मुझे मानव-पठनीय प्रारूप की आवश्यकता नहीं है। मैं देखता हूं कि वीआरएमएल बड़ा बनाता है और शायद इसका अपना खुद का संस्करण बनायेगा, धन्यवाद! कोई और? :) – Ricket

+0

ओबीजे अक्षम है, लेकिन यह बहुत मानक है। आप Java3D और विशेष रूप से O'Reilly पुस्तक 'जावा में किलर गेम प्रोग्रामिंग' पर एक नज़र डालने के लिए भी पसंद कर सकते हैं जो कई प्रश्नों का उत्तर दे सकता है। – Cruachan

1

मुझे विश्वास है। ब्लेंड ज्यादातर ब्लेंडर से स्मृति संरचनाओं में एक बाइनरी डंप है, जो आपको ब्लेंडर के बाहर बहुत मदद नहीं करेगा। मॉडल के लिए ब्लेंडर का प्रयोग करें, लेकिन एक अलग प्रारूप में निर्यात करें।

यह थोड़ा वर्बोज़ हो सकता है, लेकिन मैंने सुना है कि कोलाडा 3 डी जानकारी को बहुत अच्छी तरह से लपेटता है (एक्सएमएल होने की लागत पर)। उलझन यह है कि एक प्रोपेरी स्कीमा परिभाषा है जिसे आप जेएक्सबी के माध्यम से पारित कर सकते हैं जिसके परिणामस्वरूप आपसे पूर्ण पार्सर डब्ल्यू/कोई काम नहीं होता है।

.md * प्रारूप भी एक अच्छा विकल्प हो सकता है। वे आईडी इंजन (क्यू 1, क्यू 2, क्यू 3, क्यू 4, डूम 3) से हैं और वे दस्तावेज हैं। उनमें एनिमेशन एनिमेशन भी शामिल हैं।

एक बार जब आप इसे सभी में पढ़ लें, डेटा (प्रदर्शन सूची, बनावट, वर्टेक्स सरणी, वर्टेक्स बफर, आदि) का संगठन और प्रतिपादन एक पूरी तरह से अलग जानवर हैं।

0

ओह, आदमी, आप ms3d निर्यातक जारी करने के लिए जब आप इसे खत्म हो जा रहे हैं? और यदि हां, तो यह कैसा चल रहा है? मुझे वास्तव में निर्यातक पर अपना हाथ लेने की ज़रूरत है जो एनीमेशन के लिए काम करता है और फ्रैगमोशन का उपयोग करता है, और ऐसा लगता है कि आपकी आखिरी उम्मीद क्या है।

+0

मैंने अभी तक ब्लेंडर निर्यातक को कोडिंग शुरू नहीं किया है; मेरे अध्ययनों ने मुझे पिछले हफ्ते बहुत व्यस्त किया है। इसके बारे में: http://rickyc.org/ms3dexporter/ पर नजर रखें और जब मैं समाप्त करूं तो मैं इसे वहां रखूंगा। – Ricket

+0

एक योजना की तरह लगता है। मैं इस पर नजर रखूंगा। –

+0

मैंने अंत में एमएस 3 डी निर्यातक लिखना शुरू कर दिया है। मुझे इसे अगले कुछ दिनों में करना चाहिए था। मुझे पता है कि मैंने इसे अभी तक धक्का दिया है (अब यह 3 महीने बाद है ...) लेकिन यदि आपको अभी भी इसकी आवश्यकता है, तो मैं इसे प्रकाशित करूंगा। मैं उस लिंक को इसके बारे में जानकारी और डाउनलोड के साथ अपडेट भी करूंगा, क्योंकि मुझे पता है कि आपको यह संदेश नहीं मिल सकता है। – Ricket

0

एक खुला स्रोत है।मिश्रण फ़ाइल रीडर जो मेस, बनावट, कंकाल और एनीमेशन समेत किसी .blend फ़ाइल से किसी भी जानकारी को निकाल सकता है।

कुछ राक्षस और Irrlicht यहाँ उपयोग के उदाहरण देखें: http://gamekit.googlecode.com

संबंधित मुद्दे