2010-02-18 10 views
5

क्या छवियों को गैर-फ्लैट (विकृत) सतह पर प्रोजेक्ट करने के लिए कोई एल्गोरिदम है?क्या छवियों को गैर-फ्लैट सतह पर प्रोजेक्ट करने के लिए कोई एल्गोरिदम है?

यह बहुत अधिक विकृत नहीं है। यह वास्तव में उच्च गुणवत्ता वाले, टिकाऊ ट्रेसिंग पेपर से ढका हुआ एक कांच की सतह है। मेरे पास इसका 3-आयामी मॉडल है। मैं इसे प्रोजेक्टर के साथ कैसे बना सकता हूं? projection

मैं विंडोज के लिए सी \ सी ++ \ सी # में एक प्रोग्राम लिखना चाहता हूं, जो एक प्रोजेक्टर का उपयोग करके 3-आयामी मॉडल द्वारा दी गई किसी भी सतह को texturise करने में सक्षम होगा।

मुझे एल्गोरिदम युक्त एल्गोरिदम या ओपन सोर्स लाइब्रेरी की आवश्यकता है।

+5

क्या आप यह अनुकरण करने की कोशिश कर रहे हैं कि किसी ने इस सतह पर एक साधारण फिल्म प्रोजेक्टर की ओर इशारा किया है या नहीं? या आप सतह में विकृतियों को रद्द करने का प्रयास करने के लिए जो प्रोजेक्ट कर रहे हैं उसे समायोजित करने की कोशिश कर रहे हैं? –

उत्तर

1

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

मूल एल्गोरिदम सरल है। असल में आपको बस यह पता लगाना होगा कि आपके प्रक्षेपण बिंदु से उत्पन्न रेखा आपकी सतह को छेड़छाड़ करती है। और अधिक विस्तार से:

  1. अपने प्रक्षेपण बिंदु पर निर्णय लें
  2. अपने प्रक्षेपण बिंदु से उत्पन्न लाइनों है कि आप समाधान आप अपने विकृत सतह पर जरूरत
  3. निर्धारित जहां इन पंक्तियों के अपने सतह एक दूसरे को काटना दे देंगे का एक समूह पर निर्णय लें (सटीक विधि आपकी सतह के प्रतिनिधित्व पर निर्भर करेगी)
  4. मान लें कि आपकी सपाट छवि कहीं आपके प्रक्षेपण बिंदु और विकृत सतह के बीच रखी गई है और फ्लैट सतह के साथ रेखा का चौराहे ढूंढें और इस मान को युद्ध पर स्थान पर असाइन करें सतह।

दूसरी तरफ, यदि आपकी सतह गणितीय रूप से वर्णित है, तो इसके लिए एक साधारण समीकरण हो सकता है, उदाहरण के लिए, यदि आप किसी क्षेत्र में विमान मैप कर रहे थे।

3

हां, एक एल्गोरिदम है। जब तक आप वास्तव में इसे स्वयं लागू करना चाहते हैं, तो मौजूदा 3 डी ग्राफिक्स कार्यान्वयन को आपके लिए नौकरी करना संभव है - ओपनजीएल और डायरेक्टएक्स दोनों आपको 3 डी मॉडल की सतह पर एक बनावट लागू करने देंगे। नेहे ट्यूटोरियल में OpenGL का उपयोग करके मूल विचार के example शामिल हैं।

+0

इसमें जोड़ने के लिए, विशिष्ट ओपनजीएल कॉल 'glTexGen (..., GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR) 'है। –

0

इसे छवि विकृति सुधार कहा जाता है।

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

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