2010-11-04 12 views
5

पर आधारित उचित "ऑडियो" वॉल्यूम सेट करने के लिए एल्गोरिदम मैं एक गेम विकसित कर रहा हूं। वर्तमान रेंडर दृश्य से स्प्राइट की "दूरी" के आधार पर, ध्वनि के लिए ऑडियो वॉल्यूम को "फीका" कैसे कर सकता हूं?दूरी (x, y)

WIDTH_WORLD = 10000 
HEIGHT_WORLD = 10000 

Current Scene 
xCurrent = 800 (+ Width Res. = 800 + 1024 = 1824) 
yCurrent = 400 (+ Height Res. = 400 + 768 =...) 

Far Sprite 
xSprite = 7000 
ySprite = 3000 

एक अच्छा एल्गोरिथ्म ऑडियो वॉल्यूम "की गणना करने के लिए" क्या है (और शायद/सही पैन चैनल अनुपात बाएं): मान लीजिए मैं एक ऐसी दुनिया है? अग्रिम धन्यवाद!

+0

पुस्तकालय मैं कर रहा हूँ एसडीएल.NET (एसडीएल पर आधारित ओबीवी) का उपयोग कर – stighy

+0

डोप्लर प्रभाव को मत भूलना! –

उत्तर

2

कुल volumn

  • मात्रा के क्षीणन के लिए कई दृष्टिकोण हैं। जैसे आप volume = max(0, max_volume - max_volume/max_distance * distance) जैसे एक रैखिक डंपिंग फ़ंक्शन का उपयोग कर सकते हैं, या volume = min(max_volume, max_volume/distance) जैसे व्यस्त दूरी के साथ एक फ़ंक्शन का उपयोग कर सकते हैं।

शेष अनुपात

  • फिर, वहाँ कई दृष्टिकोण एक पर्याप्त कार्यक्षमता का एहसास कर रहे हैं। आपके मामले में, आप कह सकते हैं, यदि ऑब्जेक्ट बाएं स्क्रीन सीमा पर या उससे परे है, तो बाईं ओर पैन करें, यदि ऑब्जेक्ट दाएं स्क्रीन सीमा पर या उससे परे है, दाईं ओर पैन करें, अन्यथा इंटरपोलेशन फ़ंक्शन का उपयोग करें, उदा। balance = (object_x-camera_x)/screen_half_width के बीच मूल्यों के साथ -1: बाएं, +1: दाएं, और 0: केंद्र।

जब इन तरीकों तुम क्या अपने मामले के लिए उपयुक्त है के बारे में सोचना संयोजन: उदाहरण केवल मात्रा नम के लिए यदि वस्तु स्क्रीन सीमा से बाहर है, क्या कभी ...

+0

धन्यवाद आदमी, यह एक आकर्षण की तरह काम करता है !! ;) – stighy

0

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

यह जानना कि आप अपने गेम के लिए किस लाइब्रेरी का उपयोग कर रहे हैं, यह उपयोगी होगा हालांकि - कई गेम लाइब्रेरीज़ में पहले से ही इस तरह की कार्यक्षमता बनाई जाएगी।

+0

स्क्वायर? मैं घन अनुमान लगाया होगा, क्योंकि यह 3-आयामी अंतरिक्ष है। वास्तव में इस बात पर निर्भर करता है कि 'वॉल्यूम' वास्तव में कैसे परिभाषित किया गया है ... – Wrikken

+2

हम्म, वास्तव में। ध्वनि मात्रा को 'भर' नहीं देती है, न ही यह घन द्वारा यात्रा करती है। यह एक गोलाकार (जमीन पर खड़े होने की तरह/ठोस वस्तुओं की उछाल जैसी पूर्वगामी तकनीकी) से यात्रा करेगा, और सतह पर रहता है ('4 पीआई आर^2'), वास्तव में। मेरा पहला वृत्ति पूरी तरह से गलत था, मैं सही खड़ा हूँ। – Wrikken

2

दूरी का उपयोग करें (Dsquared = xdist^2 + ydist^2) स्केलिंग कारक के रूप में अपनी मात्रा को कम करने के लिए। अपनी दूरी पर सीधे लागू करने के लिए इस दूरी वर्ग मूल्य को घुमाएं (वॉल्यूम दूरी के वर्ग के रूप में बंद हो जाता है, और दूरी को आसानी से स्क्वायर वैल्यू के रूप में गणना की जाती है)।

बाएं/दाएं चैनल अनुपात बाएं और दाएं चैनल (क्रमशः बाएं और दाएं, क्रमशः आपके प्रस्तुत स्थान के) के लिए दो अलग-अलग बिंदुओं को परिभाषित करके किया जाता है, उपर्युक्त गणना करें, और अपने चैनलों के अनुपात खोजें उस तरफ। चूंकि उपर्युक्त गणना केवल दो वर्गों का योग है, यह बहुत कम्प्यूटेशनल रूप से सरल है।

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