2012-01-20 17 views
41

मैंने सीखने के लिए डब्ल्यूपीएफ की 3 डी क्षमताओं का उपयोग किया है, और कुछ कार्यान्वयन के लिए, और मैंने इसे बहुत सक्षम पाया है, और मैं डायरेक्टएक्स 11 भी सीख रहा हूं, और यह WPF में 3 डी कक्षाओं का उपयोग करने की तुलना में बहुत मुश्किल है। मैंने केवल मूलभूत सामग्री के लिए WPF 3 डी का उपयोग किया है, मेरा प्रश्न है:जटिल अनुप्रयोगों के लिए डायरेक्टएक्स और ओपनजीएल का डब्ल्यूपीएफ 3 डी वैकल्पिक वैकल्पिक है?

क्या डब्ल्यूपीएफ 3 डी 3 डी मॉडलिंग टूल, गेम इंजन और 3 डी सिमुलेशन इत्यादि जैसे उन्नत अनुप्रयोगों के लिए समान रूप से अच्छा है डायरेक्टएक्स और ओपनजीएल का विकल्प?

यदि एक ही लीग में कुछ और है, तो कृपया इसका भी उल्लेख करें।

उत्तर

52

अच्छा सवाल। जवाब है यह पर निर्भर करता है !!

एक और उपयोगी नोट पर मैं यह कह सकता हूं: कुछ साल पहले मैंने ओपनजीएल में एक सीएडी-शैली 3 डी प्रतिपादन अनुप्रयोग विकसित किया था। इसे 1000,000 ऑब्जेक्ट्स के साथ तेल रिग के सीएडी मॉडल प्रदर्शित करना था और उपयोगकर्ता को विस्तार से ज़ूम करने, या ज़ूम आउट करने, वस्तुओं को स्थानांतरित करने की अनुमति देता था ... मैं कुछ निश्चितता के साथ कह सकता हूं कि WPF इसके लिए उपयुक्त नहीं होगा आवेदन का प्रकार क्योंकि यह बहुत धीमा होगा। यह एप्लिकेशन सी ++/सीएलआई का उपयोग करके विकसित किया गया था और एक .NET GUI (टूलबार, विंडो) से सी ++ से ओपनजीएल (रेंडर सतह) तक ब्रिज किया गया था और यहां तक ​​कि thunking के कारण देशी सी ++/ओपनजीएल एप्लिकेशन पर प्रदर्शन हिट पेश किया गया था। इसलिए, यदि आप उच्चतम प्रदर्शन चाहते हैं, आप डायरेक्टएक्स या ओपनजीएल के साथ देशी सी ++ को हरा नहीं सकते हैं।

डब्ल्यूपीएफ सरल 3 डी अनुप्रयोगों के लिए उच्च प्रदर्शन 3 डी ग्राफिक्स और चिकनी अंतःक्रियाशीलता प्रदान कर सकता है। उदाहरण के लिए, एक 3 डी चार्ट सतह या एक 3 डी कैरोसेल, यहां तक ​​कि एक 3 डी सीएडी मॉडल दर्शक तब तक मॉडल काफी सरल था। एक बार जब ऑब्जेक्ट गिनती बढ़ने लगती है तो आप देखेंगे कि प्रतिपादन इंजन इसे संभाल नहीं सकता है - यही वह समय है जब आपको एक प्रतिपादन इंजन पर स्विच करने की आवश्यकता होती है जो GPU तक सीधे पहुंच की अनुमति देता है।

आधा रास्ते समाधान (प्रबंधित + डायरेक्टएक्स) के लिए, SharpDX आज़माएं। यह मूल रूप से प्रबंधित डायरेक्टएक्स का एक खुला स्रोत कार्यान्वयन है और यह बेहद शक्तिशाली और बहुमुखी है। प्रबंधित बनाम देशी सी ++ का प्रदर्शन हिट मामूली (~ 5%) है और जब सही हो जाता है, प्रबंधित डायरेक्टएक्स बेहद सक्षम हो सकता है।

हमने जो कुछ किया है वह सीधे WPX के साथ D3DImage के माध्यम से डायरेक्टएक्स को एकीकृत करता है। हमने इसे WPF 3D Chart Control में हासिल किया है जो ड्राइंग के लिए DirectX11 का उपयोग करता है (WPF3D नहीं)। यह सीधे मूल डायरेक्टएक्स से डब्ल्यूपीएफ तक साझा करता है लेकिन आप SharpDX के साथ समान रूप से अच्छे परिणाम प्राप्त कर सकते हैं, जिसे हमने यहां उच्च गति WPF Drawing Plugin बनाने के लिए उपयोग किया है।

WPF3D के एक शोकेस के लिए मेरा सुझाव है कि आप this link आज़माएं। जैसा कि आप देखते हैं कि डब्ल्यूपीएफ 3 डी बेहद आकर्षक और कभी-कभी जटिल उदाहरण बना सकता है लेकिन आपको वहां कोई 1,000,000 ऑब्जेक्ट ऑयल रिग नहीं मिलेगा;)

अंत में, आप डब्ल्यूपीएफ 3 डी में क्या करना चाहते हैं? बस ब्याज का एक बिंदु या क्या आपके पास लागू करने के लिए एक विशिष्ट परियोजना है और यह जानना है कि यह उपयुक्त होगा या नहीं?

सादर,

+0

उत्तर के लिए धन्यवाद, और मेरा प्रश्न सिर्फ रुचि का एक बिंदु है, लेकिन भविष्य में यह उपयोगी होगा अगर मुझे 3 डी में कुछ लागू करना है। – SpeedBirdNine

+3

@ स्पीडबर्डइन कोई समस्या नहीं है। मैं इस लिंक को http://helixtoolkit.codeplex.com/ पर जांचने का सुझाव दूंगा क्योंकि ऐसा लगता है कि डब्ल्यूपीएफ 3 डी क्षमताओं पर एक बहुत अच्छा शोकेस है। सबसे अच्छा संबंध –

+0

लिंक के लिए फिर से धन्यवाद! – SpeedBirdNine

5

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

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

4

यदि डब्ल्यूपीएफ के 3 डी से आप का मतलब है हार्डवेयर हार्डवेयर त्वरित 3 डी ग्राफिक्स प्रदर्शित करने की क्षमता, तो मैं हाँ कहूंगा। यदि, हालांकि, आप डब्ल्यूपीएफ के 3 डी ढांचे का मतलब है; तो मैं नहीं कहने के लिए लुभाना होगा।

मैंने डब्ल्यूपीएफ 3 डी ढांचे का एक बड़ा सौदा नहीं किया है, लेकिन जो मैंने उपयोग किया है, उससे मुझे बहुत सारे हार्ड कोड कोड शामिल हैं। ऐसा कहा जा रहा है कि इसके आस-पास के तरीके शायद हैं, लेकिन मुझे आमतौर पर नहीं लगता कि ढांचे को उन्नत 3 डी ग्राफिक्स के साथ बनाया गया था (जैसे मॉडलिंग टूल्स और गेम इंजन)।

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

ऐसी परिस्थितियों के लिए, आप एक WPF अनुप्रयोग के भीतर एम्बेडेड D3DImage नियंत्रण का उपयोग कर सकते हैं ताकि डायरेक्टएक्स सामग्री को सीधे आपके एप्लिकेशन पर प्रस्तुत किया जा सके। आप या तो डायरेक्टएक्स स्वयं या SlimDX जैसे प्रबंधित रैपर का उपयोग करके इस सतह पर प्रस्तुत कर सकते हैं। जिसके बाद मैंने बहुत अच्छा पाया है क्योंकि यह डायरेक्टएक्स संस्करण 9, 10 और 11 का समर्थन करता है, और यह काफी पतला आवरण है, इसलिए डायरेक्टएक्स एपीआई बहुत सी तरह से प्रयोग योग्य है।

कुल मिलाकर, मैं कहूंगा कि यह पूरी तरह से 3 डी सिस्टम के आपके आवश्यक उपयोग पर निर्भर करता है।

3

जबकि उत्तर निश्चित रूप से निर्भर करता है। मैं बोल्ड हो जाऊंगा और कहूंगा कि डब्ल्यूपीएफ 3 डी सीखने, सरल जरूरतों और अन्यथा 2 डी एप्लिकेशन में 3 डी को एकीकृत करने के लिए बहुत अच्छा है।

चूंकि आप WPF पर विचार कर रहे हैं, तो मुझे लगता है कि आप विंडोज़ पर स्थापित कुछ लिखने के लिए सी # का उपयोग कर देख रहे हैं। अन्य लोगों की सिफारिश करने के अलावा, मैं सुझाव देता हूं कि एक्सएनए देखें, जो डब्ल्यूपीएफ का हिस्सा नहीं है, लेकिन इसका एक सबसेट सिल्वरलाइट 5 में उपलब्ध है (यदि आप एक्सएएमएल के साथ रहना चाहते हैं)।

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

9

3 डी ग्राफिक्स के दो मॉडल हैं: 1. पाइपलाइन या अनंत लूप दृष्टिकोण (3 डी खेल, हार्ड स्तर 3D CAD सिस्टम 100,000 और अधिक वस्तुओं के साथ - meshes) 2. स्मार्ट सार मॉडल क्लासिक के साथ WPF3D ओओपी का समर्थन किसी भी ऑनड्रा, ऑनपेंट विधियों के बिना। सही तरीके से डब्ल्यूपीएफ के मीडिया 3 डी विधियों का उपयोग करना बहुत महत्वपूर्ण है। इसलिए सबसे महत्वपूर्ण बात बिना किसी ऑनड्रा, ऑनपेंट है।

आपको अपने आवेदन प्रकार और सुविधाओं का विश्लेषण करना होगा और चुनना होगा।

यह सबसे सरल अनुप्रयोग के लिए WPF 3 डी के बारे में इतना सही राय नहीं है, लेकिन पूर्ण प्रबंधित ओओपी ऑब्जेक्ट्स के लिए। उदाहरण के लिए, मेरी साइट TIMO Structural CAE

पर स्क्रीनशॉट पर एक नज़र डालें, यह पूर्ण प्रबंधित 3 डी WPF ऐप है।