2013-05-03 12 views
6

मैं छवियों से निकाले गए 3 डी डेटा को प्रदर्शित करने के लिए mayavi.mlab का उपयोग कर रहा हूं।एक बड़ी पाइपलाइन के साथ एक मायावी दृश्य प्रस्तुत करें

  1. कैमरा केंद्र के चारों ओर x, y, x दिशा में 3 लाइनों, आमतौर पर के बारे में 20 कैमरों mlab.plot3d() प्रयोग करने के लिए के रूप में 3 डी कैमरा पैरामीटर: डेटा इस प्रकार है।
  2. mlab.points3d() का उपयोग कर 4000 अंक के लिए अंतरिक्ष में 3 डी रंगीन बिंदु।

के लिए (1) मेरे पास प्रत्येक कैमरे के लिए प्रत्येक पंक्ति को अलग करने के लिए एक फ़ंक्शन है। यदि मैं सही हूं, तो इन सभी लाइनों को वर्तमान दृश्य के लिए मायावी पाइपलाइन में जोड़ा गया है। mlab.show() पर इन सभी पंक्तियों को प्रस्तुत करने के लिए दृश्य को लगभग 10 सेकंड लगते हैं।

के लिए (2) मुझे प्रत्येक बिंदु को एक अलग रंग के साथ एक साथ सभी बिंदुओं को साजिश करने का कोई तरीका नहीं मिला, इसलिए इस समय मैं mlab.points3d(x,y,z, color = color) के साथ पुन: प्रयास करता हूं। मैंने इस दिनचर्या को खत्म करने के लिए बहुत इंतजार किया है क्योंकि इसमें काफी समय लगता है। यदि मैं एक ही रंग के साथ सभी बिंदुओं को एक साथ प्लॉट करता हूं, तो इसमें लगभग 2 सेकंड लगते हैं।

मैंने पहले से ही fig.scene.disable_render = True के साथ अपनी स्क्रिप्ट शुरू करने और के साथ दृश्य प्रदर्शित करने से पहले fig.scene.disable_render = False को रीसेट करने का प्रयास किया है।

मैं उचित डेटा के भीतर मायावी के साथ अपना डेटा कैसे प्रदर्शित कर सकता हूं?

+0

मुझे एक और प्रश्न के साथ एक और पोस्ट मिला [http://stackoverflow.com/questions/16364311/render-a-mayavi-scene-with-a-large-pipeline-faster](http://stackoverflow। com/प्रश्न/12935231/व्याख्या-कई-अंक-साथ-पाठ में मायावी-का उपयोग कर-mlab)। मैं अपने निष्कर्षों की जांच और अद्यतन करूंगा। –

+0

मुझे http://stackoverflow.com/questions/22253298/mayavi-points3d-with- अलग-अलग-and-colors –

उत्तर

1

सामान्य सिद्धांत यह है कि वीटीके ऑब्जेक्ट्स में बहुत अधिक ओवरहेड होता है, और इसलिए आप प्रदर्शन को प्रस्तुत करने के लिए जितना संभव हो उतना सामान एक वस्तु में पैक करना चाहते हैं। जब आप mlab सुविधा फ़ंक्शंस को कॉल करते हैं जैसे points3d यह उस डेटा को संभालने के लिए एक नया vtk ऑब्जेक्ट बनाता है। इस प्रकार vtk वस्तुओं के रूप में हजारों एकल अंक पुनरावृत्त करना और बनाना बहुत बुरा विचार है।

अस्थायी रूप से उस अन्य प्रश्न के रूप में प्रतिपादन को अक्षम करने की चाल - ऐसा करने का "सही" तरीका एक VTK ऑब्जेक्ट होना है जिसमें सभी अलग-अलग बिंदुएं हों।

विभिन्न रंगों को अलग-अलग रंगों के रूप में सेट करने के लिए, vtk ऑब्जेक्ट को स्केलर मान दें।

एक्स, वाई, जेड = np.random.random ((3,100)) some_data = mlab.points3d (एक्स, वाई, जेड, रंग मैप = 'कूल') some_data.mlab_source.dataset.point_data.scalars = np.random.random ((100,))

यह केवल तभी काम करता है जब आप रंगरूप में आवश्यक रंग मानों का पर्याप्त रूप से प्रतिनिधित्व कर सकें। यह आसान है यदि आपको रंगों की एक छोटी सीमित संख्या या साधारण रंगमंच की एक छोटी सीमित संख्या की आवश्यकता है, लेकिन यदि आपको पूरी तरह से मनमानी रंगों की आवश्यकता है तो बहुत मुश्किल है।

+0

पर एक समाधान मिला (2) क्या आप कृपया बता सकते हैं कि मैं एकाधिक "पैक" कैसे कर सकता हूं मायावी/टीवीटीके वस्तुओं को एक ही वस्तु में? मैंने यहां इस प्रश्न के बारे में http://stackoverflow.com/questions/22241499/how-to-join-connect-group-multiple-objects-in-mayavi2 पर बहुत कुछ धन्यवाद है। –

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