मैं एक बनावट कैसे उत्पन्न कर सकता हूं जो बाईं ओर चाय की पत्तियों की तरह दिखती है?


11

हम iPhone और विंडोज फोन 7 के लिए एक परियोजना पर काम कर रहे हैं, जहां हम एक कप के नीचे चाय की पत्तियां उत्पन्न करने में सक्षम होना चाहते हैं। यह फोटो-यथार्थवादी नहीं दिखता है, और वास्तव में कार्टून-वाई ठीक है।

इसे पूरा करने के लिए हमें किस तरह की तकनीकों पर शोध करना चाहिए? क्या कोई पुस्तकालय (अधिमानतः सी में, लेकिन हम अनुवाद कर सकते हैं) जो सहायक होगा?

यहां कुछ नमूने Google छवि खोज से लिए गए हैं

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें


क्या आप अपनी आवश्यकताओं पर अधिक विशिष्ट हो सकते हैं? क्या उन्हें हर बार अलग-अलग घूमना पड़ता है? क्योंकि अगर कोई एनीमेशन या विशिष्टता की आवश्यकताएं नहीं हैं, तो मैं यह नहीं देखता कि आप सिर्फ बनावट के रूप में उपयोग किए गए फोटो / ड्राइंग क्यों नहीं कर सकते।
फिलिप्पेवी

@phillipwei हाँ, उन्हें हर बार अलग होना होगा, या कम से कम यथोचित रूप से इतना अलग होना चाहिए कि यह स्टॉक फ़ोटो या जो भी महसूस नहीं होगा।
जेडीजा

जवाबों:


15

मैं शायद यह कैसे करूं, इसलिए मैं कुछ कला नियंत्रण बनाए रख सकता हूं और संभावित रूप से इसे सिर्फ एक बार प्राप्त करने के लिए एक प्रक्रियात्मक पद्धति को मोड़ने की कोशिश में लंबा समय नहीं बिताना चाहिए।

सबसे पहले, मैन्युअल रूप से अपनी कला "पूल" के रूप में चाय पत्ती के थक्कों के कई स्प्राइट बनाएं - प्रत्येक एक पूरे कप के चाय के पत्तों के रूप में नहीं, बल्कि एक छोटे समूह की तरह। कहो, उनमें से 20 या तो?

फिर उनमें से एक यादृच्छिक संख्या को "कप" बेस पर यादृच्छिक निर्देशांक पर रखें। प्रत्येक एक यादृच्छिक रोटेशन और स्केल प्लस यादृच्छिक क्षैतिज और / या ऊर्ध्वाधर मिररिंग दें। यह एक अच्छा परिणाम बनाने के लिए चाहिए।

यह दृष्टिकोण आपको व्यक्तिगत क्लंप बनाने के लिए कलात्मक स्वतंत्रता देगा, जबकि आप चाहते हैं कि विभिन्न प्रकार के परिणामों की अनुमति हो (जैसा कि चुनने के लिए पर्याप्त स्प्राइट्स मानते हुए)।

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

यहाँ कुछ छद्मकोड है, जो मेरा मतलब है, अगर यह मदद करता है ...

var sprites = [...]; // Array of tea leaf sprites

var n_leaves = rand(5)+5; // Random number of leaves from 5-9
for (i=0; i<n_leaves; i++) {
    var sprite_index = rand(sprites.length);  // Random sprite index
    var r = rand(CUP_DIAMETER);          // Random radius for point on disk calc
    var theta = rand(2*PI);              // Random theta (rotation) for point on disk
    var sprite_x = sqrt(r) * cos(theta); // Sprite X
    var sprite_y = sqrt(r) * sin(theta); // Sprite Y
    var sprite_rotation = rand(2*PI);    // Sprite rotation
    var sprite_scale = rand(1) + 0.5;    // Sprite scale from 0.5 to 1.5
    var sprite_h_mirror = (rand(1) < 0.5 ? true : false); // If true, mirror horizontally
    var sprite_v_mirror = (rand(1) < 0.5 ? true : false);   // If true, mirror vertically
    draw_sprite(sprite_index, sprite_x, sprite_y, sprite_rotation, sprite_h_mirror, sprite_v_mirror);
}

एक डिस्क में एक यादृच्छिक बिंदु कैसे चुनें और मैं उस पूरे sqrt / sin / cos चीज़ का उपयोग क्यों कर रहा हूं, इस बारे में एक महान चर्चा के लिए http://mathworld.wolfram.com/DiskPointPicking.html देखें ।


7

0.8 या तो के द्विआधारी कटऑफ मूल्य के साथ पेर्लिन शोर का प्रयास करें?

Http://imgur.com/a/Ydc4y पर उदाहरण छवि अपलोड की गई । पहली दूसरी छवि है जिसमें थ्रेसहोल्ड लगाया गया है। दूसरा बेसिक पर्लिन शोर है, जिसके लिए आप कई अच्छे संदर्भ पा सकते हैं जैसे कि http://en.wikipedia.org/wiki/Perlin_noise और http://http.developer.nvidia.com/GPUGems2/bpugems2_chapter26.html

आप परिधि के शोर में ऑक्टेव्स की संख्या और पैमाने के साथ थोड़ा सा खेल सकते हैं ताकि यह अलग-अलग हो सके कि आउटपुट कितना सुचारू दिखाई देगा, साथ ही यह निर्धारित करने के लिए थ्रेशोल्ड कितना (औसतन - जैसा कि यह शोर है) चाय की पत्तियां होंगी।


3
यह कुछ लिंक और उदाहरणों के साथ एक बेहतर उत्तर हो सकता है जो उत्पादित किए जा सकते हैं।
MichaelHouse

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

पेर्लिन शोर उत्पन्न करना थोड़ा भारी है; आप इस (और बहुत अन्य) प्रभाव के लिए एक पूर्वनिर्मित शोर बनावट का उपयोग कर सकते हैं। आप विधि का उपयोग कुछ पूर्ववर्ती के लिए भी कर सकते हैं।
डैस्कैंडी

4
-1। बहुत सारी चाय की पत्तियों, और बहुत सी राशि (1 / f) पेर्लिन के शोर को देखकर, मैं नहीं कह सकता कि वे सभी को समान रूप से देखते हैं। पेरलिन शोर सही शुरुआती बिंदु हो सकता है, लेकिन लक्ष्य सामान्य योग (1 / f) संस्करण के लिए उपयुक्त नहीं है।

1
मैं मानता हूं कि पर्लिन शोर दृष्टिकोण अव्यवहारिक है। इसे सत्यापित करने के लिए मैंने पर्लिन शोर से शुरू होने वाले फोटोशॉप में प्रभाव को फिर से बनाने की कोशिश की। यहाँ परिणाम है । जबकि मुझे लगता है कि यह ठीक लग रहा है, समस्या यह है कि मुझे जो ट्वीकिंग करना था , उसकी मात्रा में है। वास्तव में प्रक्रियात्मक रूप से उस सभी को फिर से बनाने का एक तरीका नहीं सोच सकता, इसलिए मैं होल्ट द्वारा सुझाए गए स्प्राइट आधारित दृष्टिकोण के लिए वोट करता हूं।
डेविड गाविया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.