2011-02-03 14 views
6

मैं सी # में विभिन्न सिमुलेशन उपकरण प्रोग्रामिंग कर रहा हूँ/नेटनेट उच्च स्तरीय ग्राफिक्स पुस्तकालय

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

Ive slimDX पर देखा, लेकिन इसकी तलाश में कम स्तर है (कम से कम दस्तावेज वाले हिस्सों, लेकिन मुझे वास्तव में किसी अन्य की परवाह नहीं है)। डब्ल्यूपीएफ परिप्रेक्ष्य अच्छा लग रहा था, लेकिन यह स्थिर एक्सएएमएल परिभाषित दृश्यों पर लक्षित लगता है, और यह वास्तव में मुझे भी अनुकूल नहीं करता है।

असल में, मैं ब्लिट्जबेसिक जैसी भाषाओं की तरह की सुविधाओं की तलाश में हूं। क्या यह बिल्कुल मौजूद है?

+0

अद्यतन: मैं सिर्फ देखा VTK के लिए एक खुला स्रोत नेट आवरण, जारी की गई है ActiViz कहा जाता है। यह बहुत अच्छा लगता है, लेकिन 100% आश्वस्त नहीं है। मैं कुछ और हल्के वजन की तलाश में हूं। –

उत्तर

3

शायद XNA Game studio जो आप ढूंढ रहे हैं वह है।

DirectX पर भी एक नज़र डालें।

+0

इनमें से कोई भी उच्च स्तर के अर्थ में नहीं है कि ओपी पूछ रहा है। एक्सएनए में एक क्षेत्र को प्रस्तुत करने में बहुत काम लगता है। –

4

WPF परिप्रेक्ष्य शांत देखा, लेकिन यह स्थिर XAML परिभाषित दृश्यों पर फिर से

देखो लक्षित लगता है, WPF के रूप में गतिशील के रूप में आप कभी भी आवश्यकता होगी हो सकता है।

आप 3 डी सहित पूरी तरह से एक्सएएमएल के बिना किसी भी डब्ल्यूपीएफ प्रोग्राम को लिख सकते हैं।

+0

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

+0

मेरा मतलब है; जीडीआई + और डब्ल्यूपीएफ 3 डी के भाव में उच्च स्तर नहीं है, क्योंकि किनारे के दौर और सभी प्रकार की eyecandy के लिए पैरामीटर प्रदान करने में। मेरी याददाश्त में विकसित डेटा के गigs पर नजर रखने के लिए बस कुछ आसान है। –

+1

मैं जीडीआई + उच्च स्तर पर कॉल नहीं करूंगा, डब्ल्यूपीएफ के बगल में नहीं। –

3

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


संपादित करें:। तुम सच में 100K संस्थाओं का समर्थन करने की जरूरत है और वे सभी क्षेत्रों के रूप में प्रदान किया जा सकता है, तो मैं और सुझाव है कि आप 3 डी इंजन पूरी तरह से बाईपास केवल गणित के लिए एक्सएनए का उपयोग करें। मैं निम्नलिखित की तरह एक दृष्टिकोण की कल्पना करूंगा:

  • कैमरा (दृश्य) और परिप्रेक्ष्य मैट्रिक्स सेट अप करने के लिए एक्सएनए का उपयोग करें। इसमें कुछ आसान मैट्रिक्स स्थिर कार्य हैं जो इसे आसान बनाते हैं।

  • प्रोजेक्शन मैट्रिक्स की गणना करें और अपने सभी 'गोलाकार' मूल बिंदुओं को देखने के लिए निराशा को इंगित करें। यह आपको एक्स, वाई स्क्रीन निर्देशांक और फ्रैस्ट्रम में जेड गहराई देगा। आप या तो इसे 3K 100K तत्व मैट्रिक्स द्वारा प्रोजेक्शन मैट्रिक्स के 100K व्यक्तिगत मैट्रिक्स गुणा या गुणा के रूप में व्यक्त कर सकते हैं। पूर्व मामले में, यह नई .NET 4 समांतर कार्यक्षमता का उपयोग करते हुए समांतरता के लिए एक महान उम्मीदवार है।

  • यदि आपको लगता है कि 100K मैट्रिक्स गुणा एक समस्या है, तो आप परिवर्तन से पहले बिंदुओं को कम करके इसे महत्वपूर्ण रूप से कम कर सकते हैं यदि आप जानते हैं कि उनमें से केवल एक छोटा सबसेट किसी भी समय दिखाई देगा। उदाहरण के लिए, आप अपने मूल स्थान में अपने फ्रस्ट्रम की सीमाओं को खोजने के लिए प्रोजेक्शन मैट्रिक्स को घुमा सकते हैं और फ्रस्ट्रम के लिए अक्ष-संरेखित बाउंडिंग बॉक्स बना सकते हैं। इसके बाद आप इस बॉक्स के बाहर के सभी बिंदुओं को बाहर कर सकते हैं (एक्स, वाई और जेड में सरल तुलना परीक्षण।) प्रक्षेपण मैट्रिक्स में परिवर्तन होने पर आपको केवल इस बाध्यकारी बॉक्स को पुन: सक्रिय करने की आवश्यकता है, इसलिए यदि यह बार-बार बदलता है, तो यह उचित अनुकूलन हो सकता है।

  • बार जब आप अपने तब्दील अंक है, छिन्नक बाहर किसी भी (जेड < 0, जेड> maxDist, एक्स < 0, वाई < 0, एक्स> चौड़ाई, वाई> ऊंचाई) क्लिप। अब आप एक भरा चक्र ड्राइंग, जेड को इसकी त्रिज्या आनुपातिक साथ (जेड = 0 सबसे बड़ा त्रिज्या और जेड = maxDist शायद एक भी बात करने के लिए नहीं हो पाती हैं। होता)/गहराई आप छायांकन की भावना प्रदान करना चाहते हैं द्वारा प्रत्येक बिंदु प्रदान कर सकते हैं , आप गोलाकार ब्रश के साथ गोलाकारों पर प्रकाश को बहुत कम अनुकरण करने के लिए प्रस्तुत कर सकते हैं। यह काम करता है क्योंकि आपके दृश्य में सब कुछ एक क्षेत्र है और आप शायद छाया की तरह चीजों के बारे में चिंतित नहीं हैं। यह सब WPF (छायांकित ब्रश समेत) में करना काफी आसान होगा, लेकिन DrawingVisual कक्षाओं का उपयोग करना सुनिश्चित करें और फ्रेमवर्क तत्वों का उपयोग नहीं करना चाहिए। साथ ही, आपको यह सुनिश्चित करना होगा कि आप सही जेड ऑर्डर में आकर्षित करते हैं, इसलिए यदि आप ट्रांसफॉर्म किए गए पॉइंट्स को डेटा स्ट्रक्चर में स्टोर करते हैं तो आप इसे जोड़ते हैं।

  • आप अभी भी प्रदर्शन समस्या हो रही है, वहाँ आगे अनुकूलन आप का पीछा कर सकते हैं। उदाहरण के लिए, यदि आप जानते हैं कि केवल आपके बिंदुओं का एक उप-समूह चल रहा है, तो आप प्रतिस्थापित बिंदुओं के लिए परिवर्तित स्थानों को कैश कर सकते हैं। यह वास्तव में आपके डेटा सेट की प्रकृति और यह कैसे विकसित होता है पर निर्भर करता है।

  • के बाद से अपने डेटा सेट इतनी बड़ी है, आप जिस तरह से आप यह कल्पना को बदलने पर विचार हो सकता है। 100K अंक प्रस्तुत करने के बजाय, अपनी कार्यस्थल को वॉल्यूमेट्रिक ग्रिड में विभाजित करें और प्रत्येक ग्रिड घन के अंदर बिंदुओं की संख्या (घनत्व) रिकॉर्ड करें। आप केवल बिंदु गहनता को इंगित करने के लिए ग्रिड का केंद्र ही प्रोजेक्ट कर सकते हैं और कुछ अतिरिक्त प्रतिक्रिया (जैसे रंग, अस्पष्टता या ब्रश बनावट) के साथ इसे 'गोलाकार' के रूप में प्रस्तुत कर सकते हैं। घनत्व से मेल खाने के लिए कुछ ब्रश पैटर्निंग के साथ 'गोलाकार' और दूर-दराज के रूप में 'क्लस्टर' ऑब्जेक्ट्स के रूप में दूर बिंदुओं को प्रस्तुत करके पारंपरिक तकनीक प्रतिपादन दृष्टिकोण के साथ आप इस तकनीक को जोड़ सकते हैं। एक साधारण एल्गोरिदम कैमरे के चारों ओर एक बाउंडिंग क्षेत्र पर विचार करना है; क्षेत्र के अंदर सभी बिंदु सामान्य रूप से परिवर्तित हो जाएगा; क्षेत्र से परे, आप केवल घनत्व ग्रिड का उपयोग कर प्रस्तुत करेंगे।

+0

ऊपर देखें; मैंने यह भी महसूस किया कि आप इसे WPF में कर सकते हैं, लेकिन प्रदर्शन वास्तव में एक चिंता प्रतीत होता है। उसने कहा, एसपीएच कर रहे 100k क्षेत्र किसी भी तरह से बहुत आसानी से अद्यतन नहीं होने जा रहे हैं। लेकिन यह मेरे कुल सिमुलेशन समय में महत्वपूर्ण रूप से जोड़ने के लिए त्वरित और गंदे प्रतिपादन कॉल के लिए स्वीकार्य नहीं है। मैं पहले ओपन के वर्षों में एक साथ बातें इस तरह हैक करने के लिए इस्तेमाल किया है, लेकिन मैं उम्मीद थी कि अतीत की बात थी। कोई भी मौका है कि आप अपनी हैकरी साझा करने के इच्छुक हैं? आईडी बहुत बाध्य होना चाहिए। –

+0

मैं वास्तविक अनुकरण के लिए अपने प्रतिपादन एसिंक्रोनस प्रदर्शन करता हूं। इसका दुष्प्रभाव है कि दृश्यों को 'सिंक से बाहर' दिखाई दे सकता है जब बहुत सी चीजें चलती हैं या यदि मैं वास्तविक समय से तेज़ी से अनुकरण कर रहा हूं (उदा।कभी-कभी एक वस्तु अंत प्रभावक के पीछे रहती है जो इसे ले जा रही है), लेकिन फिजिक्स में सिमुलेशन सटीक बना हुआ है। मुझे अपनी कंपनी के साथ आईपी चिंताओं को देखते हुए, मुझे यह साझा करना होगा कि मुझे साझा करने की स्वतंत्रता क्या है। मैं किसी भी मामले में अपने मौजूदा एक्सएनए समाधान (मूलभूत प्रकाश जैसी सरल चीजें पाने में कठोर) से विशेष रूप से खुश नहीं हूं और WPF व्यूपोर्ट के साथ प्रयोग कर सकता हूं। –

+0

इनपुट दान के लिए धन्यवाद; ive ने अपने स्वयं के रास्टरराइज़र और रेएट्रैसर लिखे, इसलिए मैं इसे फिर से कर सकता था, लेकिन बात यह है कि मुझे अभी भुगतान नहीं हुआ है। मैं जो चाहता हूं, प्रदर्शन के अनुसार, जीपीयू रैम में निर्देशांक का एक बफर है, जिसे मैं अपने अवकाश पर अपडेट करता हूं। अगर मैं सीपीयू पर किसी भी matrices खुद को जोड़ता हूं, जो कि मैं अमूर्त स्तर और प्रदर्शन के संदर्भ में जो चाहता हूं उससे विचलित हो जाता है। –

0

क्या आपको सी #/नेट का उपयोग करना होगा या मोनो डेवलप काफी अच्छा होगा? यदि आप एक शक्तिशाली 3 डी इंजन चाहते हैं तो मैं http://unity3d.com/ की सिफारिश कर सकता हूं।

+0

हम्म, दिलचस्प लग रहा है, लेकिन क्या इसका मतलब है कि मुझे विजुअल स्टूडियो छोड़ना है? –

+0

आप अभी भी विजुअल स्टूडियो में प्रोग्राम करेंगे और सी # का उपयोग करेंगे, लेकिन मुझे पूरी तरह से यकीन नहीं है कि यूनिटी द्वारा उपयोग किए जाने वाले .NET MonoDevelop का कौन सा संस्करण अभी समर्थन करता है। लेकिन आपको अतिरिक्त बोनस मिलता है कि आपका उत्पाद क्रॉस-प्लेटफ़ॉर्म बन गया है :) – Bakery

+0

यह फ़ोरम-लिंक मिला: http://forum.unity3d.com/threads/20807-Wich-Version(s)-of-.Net-Does- एकता-समर्थन – Bakery

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