किसी भूभाग को बनावट के नक्शे के कुछ तरीके क्या हैं?


10

मैं एक 3 डी गेम पर XNA के साथ काम कर रहा हूं, और मैं एक उचित और अच्छा ई-मेल बनाने की कोशिश कर रहा हूं। मैंने वास्तव में एक ऊंचाई से एक इलाक़ा बनाने के लिए एक ट्यूटोरियल का अनुसरण किया। इसे बुनावट करने के लिए, मैं सिर्फ इस पर घास की बनावट लगाता हूं और इसे कई बार टाइल करता हूं।

लेकिन मैं जो करना चाहता हूं वह वास्तव में यथार्थवादी बनावट है, लेकिन यह स्वचालित रूप से भी उत्पन्न होता है (उदाहरण के लिए यदि मैं इलाके को उत्पन्न करने के लिए पेरलिन शोर का उपयोग करना चाहता हूं और फिर इसे बनावट देता हूं)।

मैंने पहले से ही मल्टी-टेक्सचरिंग के बारे में सीखा है, अलग-अलग बनावटों के लिए अलग-अलग रंगों के साथ एक मैप फ़ाइल लोड करना है, लेकिन मुझे नहीं लगता कि यह वास्तव में कुशल है, उदाहरण के लिए चट्टानों या बहुत खड़ी क्षेत्रों के लिए यह बनावट को बुरी तरह से टाइल करेगा क्योंकि यह एक दृश्य से है। ऊपर। (इसके अलावा, मुझे नहीं पता कि मैं उसके साथ सड़क या गंदगी के रास्ते कैसे खींचूंगा।)

मैं प्रक्रियात्मक रूप से उत्पन्न इलाके की वास्तविक बनावट बनावट मानचित्रण के लिए एक कुशल समाधान की तलाश कर रहा हूं।


1
आपकी मैपिंग समस्या बिल्कुल भी नहीं है। यह कुछ पैराग्राफ में ठीक से उत्तर नहीं दिया जा सकता है। मेरा सुझाव है कि आप हार्मोनिक मैपिंग पर ध्यान दें और इस पत्र में क्या बताया गया है: cs.ubc.ca/~sheffa/papers/TOG02.pdf
तिप्रोन '

जवाबों:


2

मुझे लगता है कि आप ब्लर मैप्स या टेक्सचर स्पलैटिंग से चिंतित नहीं हैं (जैसा कि आपके यूवी मैपिंग से स्वतंत्र है)। चूंकि आपने विशेष रूप से मानचित्रण के कारण विकृति को कम करने के लिए कहा था, इसलिए आप इस GPU रत्न लेख के खंड 1.5 से परामर्श कर सकते हैं:

https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch01.html

यह प्रक्रियात्मक रूप से उत्पन्न इलाके पर भी काम कर सकता है। अवधारणा को "त्रिपलनार बनावट" के रूप में भी जाना जाता है ।

LATER EDIT: मैंने मैपिंग के लिए बिना किसी पूर्वनिर्मित uvs का उपयोग करते हुए अपने ही इलाके के रेंडरर में तकनीक का परीक्षण किया है। आपको बस 3 अलग-अलग प्रक्षेपण विमानों (XY, YZ और ZX) के लिए UVs के 3 सेटों की गणना करनी है। यह सरल शीर्ष और टुकड़ा shader स्निपेट का उपयोग करके प्राप्त किया जा सकता है:

VShader:

float tileSize = 2.0;
vec4 worldPos = ( gl_Vertex);//So we obtain the world position

TexCoordX = (worldPos.zy/tileSize);//here are our texture coordinates...
TexCoordY = (worldPos.xz/tileSize);
TexCoordZ = (worldPos.xy/tileSize);
normal =  gl_Normal;
wNormal = normal;

FShader:

vec3 n = wNormal;
n*=n;
vec2 tcX = fract(TexCoordX);
vec2 tcY = fract(TexCoordY);
vec2 tcZ = fract(TexCoordZ);

vec4 grassCol = texture2D(grassTexture,tcX)*n.x+
                texture2D(grassTexture,tcY)*n.y+
                texture2D(grassTexture,tcZ)*n.z;

3

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

TextureSplatting (charlesbloom, जिसे मैंने इस विषय के साथ शुरू किया था)

आपको अच्छे दिखने वाले परिणाम प्राप्त करने में सक्षम होना चाहिए, न कि बहुत ही फायदेमंद विषय

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.