समस्या मूल रूप से यह है:
लाइनरेंडर लाल बिंदुओं को जोड़ने की कोशिश कर रहा है। यह एक जाली बनाने के लिए हरे रंग के कोने का निर्माण कर रहा है। तो शीर्ष पंक्ति खंड बहुत अच्छा लग रहा है। लेकिन फिर लाइनरेंडर किफायती होने की कोशिश करता है, यह दूसरी पंक्ति के खंड के अंत में एक पंक्ति खंड के अंत से कोने का पुन: उपयोग करता है। जब कोई तीव्र कोण होता है, तो आपको वह समस्या दिखाई देती है जो आप देख रहे हैं। दूसरी पंक्ति के खंड को चौराहे पर पिन किया गया है क्योंकि इसकी 'एंड कैप' इसकी अन्य 'एंड कैप' के साथ लंबवत नहीं है।
समाधान यह है कि आप अपनी स्वयं की लाइन रेंडरर बनाएं, न कि इसे इतना किफायती बनाएं। आप एक गतिशील जाल उत्पन्न करके ऐसा कर सकते हैं । मेष में पतली क्वाड्स की एक श्रृंखला शामिल होगी। प्रत्येक पंक्ति खंड के लिए, आप पंक्ति के सामान्य और एक निर्दिष्ट लाइन चौड़ाई की गणना करके क्वाड के चार कोनों की गणना कर सकते हैं:
Vector3 normal = Vector3.Cross(start, end);
Vector3 side = Vector3.Cross(normal, end-start);
side.Normalize();
Vector3 a = start + side * (lineWidth / 2);
Vector3 b = start + side * (lineWidth / -2);
Vector3 c = end + side * (lineWidth / 2);
Vector3 d = end + side * (lineWidth / -2);
इधर, a
, b
, c
और d
ऊपर एक लाइन खंड के चारों कोनों बनाने के लिए, बस ऊपर छवि में हरी डॉट्स की तरह। ये कोने जाल में जोड़ दिए जाएंगे, और आप चार कोणों को दो त्रिकोणों में बनाने के लिए सूचक भी जोड़ देंगे (इसलिए, छह सूचक जोड़े जाएंगे, abc और bdc)।
यह स्पष्ट रूप से बल्कि जटिल हो सकता है। मेरा मानना है कि यूनिटी ने अपने लाइनरेंदर को लागू करने का एक और कारण बताया क्योंकि ऐसा करने से वह दूसरी समस्या, कोनों से बचता है। जब आप प्रत्येक पंक्ति खंड को चित्रित करना शुरू करते हैं, तो आप यह देखना शुरू करेंगे कि दो रेखा खंड एक साथ आते हैं और एक बदसूरत संयुक्त बनाते हैं। दोनों रेखाओं के बीच साझा सामान्य की गणना करके और उनके कोने को साझा सामान्य में अपडेट करके इससे निपटने के तरीके हैं, लेकिन यह केवल समस्या को आंशिक रूप से हल करता है, क्योंकि आप अभी भी आसानी से पिन की गई लाइनों के साथ समाप्त हो सकते हैं। सबसे मजबूत समाधान कोनों के रूप में कार्य करने के लिए जोड़ों पर अतिरिक्त कोने उत्पन्न करना है।