Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Walls must be reduce voice range!

IC Fetid
Registered User
Join date: 19 Oct 2005
Posts: 145
04-26-2006 12:05
From: Imajica Hand

So, I think is a good idea. I think Lindens can activate a button, like for shout, to whisper intead talk or shout.


Thank you!


Many many versions ago they actually had something like this, only if I remember correctly you could only whisper to one person at a time.. Or maybe it was the other person had to accept the whisper and then when you chatted it was in whisper mode and others close by could hear the whispers, but the range was much less than chat. My memory is a bit hazey on this. It was in another lifetime.
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
04-26-2006 13:51
From: Ceera Murakami
You couldn't use parcel-based restrictions for a two story or more building, because a parcel can't be split by altitude.

Exactly. I'm all for having the parcel restriction to speech if it means it's available sooner. But the main problem IMO is that parcels force you to apply settings in a 2d way to a 3d space. They're limited, and most parcel settings are too restricted in this way.
Meh, I'm for any solution really so long as it's not so restricted as to be useless, the parcel idea is great for private homes so it's definitely a good start.
Argent Stonecutter
Emergency Mustelid
Join date: 20 Sep 2005
Posts: 20,263
04-26-2006 14:19
From: Ceera Murakami
The technical problem is how to differntiate between a prim that represents a concrete wall, and a prim the same size that is your shower curtain.
You could, like, actually use PRIM_MATERIAL for something other than changing the collision sound. :)
From: someone
What would be needed would be a special property for sound dampening effect. And even then, the dynamics of calculating how much the sound is dampened between any two points would get crazy real fast.
Either the client or the server can draw a line between the corresponding vertices of the av's bounding boxes, and if all 8 lines intercept PRIM_MATERIAL_STONE then you block avatars speech on channel 0. There's no need to get any fancier than that.
Draco18s Majestic
Registered User
Join date: 19 Sep 2005
Posts: 2,744
04-26-2006 16:26
From: Argent Stonecutter
Either the client or the server can draw a line between the corresponding vertices of the av's bounding boxes, and if all 8 lines intercept PRIM_MATERIAL_STONE then you block avatars speech on channel 0. There's no need to get any fancier than that.


I think it'd have to be 6 or 7 of those lines. Remember the tiny cracks between prims.
Argent Stonecutter
Emergency Mustelid
Join date: 20 Sep 2005
Posts: 20,263
04-26-2006 17:10
From: Draco18s Majestic
I think it'd have to be 6 or 7 of those lines. Remember the tiny cracks between prims.
The tiny cracks between prims only matter if both parties are precisely lined up so that one edge of BOTH bounding boxes are EXACTLY lined up with the SAME crack at the same time. The chance of even one being lined up that accurately is already remote. Trying to line both up even deliberately would be impossibly hard.
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
04-27-2006 08:40
From: Argent Stonecutter
Either the client or the server can draw a line between the corresponding vertices of the av's bounding boxes, and if all 8 lines intercept PRIM_MATERIAL_STONE then you block avatars speech on channel 0. There's no need to get any fancier than that.


Hmm, I'm liking that idea, though it'd require me to go around setting all my materials more sensibly :)
I think you could add a meter or something that displays "Audio range" or something, so it gives a rating of the surroundings. If the distance is small then it's considered more private.

But um, this would have to be worked out between not only all avatars but also all listening objects, every time a message is sent? Unless it only worked in an enclosed space (in which case the client can tell the server, only these objects can hear me, or so)? It's still not the easiest thing to do I think, unless objects are assumed to be able to hear everything and it's only worked out for avatars? In this way the client can do that calculation and tell the server WHO can hear them, while the server then works out WHAT ELSE can hear them based on listens? That might be best.
Argent Stonecutter
Emergency Mustelid
Join date: 20 Sep 2005
Posts: 20,263
04-27-2006 10:36
From: Haravikk Mistral
But um, this would have to be worked out between not only all avatars but also all listening objects, every time a message is sent?
I was thinking this would only want to be done for avatars, and only on channel 0 messages, because there's too many objects that use chat for control.

And, yes, the client could definitely do this since it's got all the information it needs at the time you hit return in the chat box, and with server support it could compress the list of avatars to as little as 8 bits per av (worst case, if you're at the corner of 4 sims, there could potentially be 200 avatars in listening range, which means you need 8 bits to enumerate them).
Draco18s Majestic
Registered User
Join date: 19 Sep 2005
Posts: 2,744
04-27-2006 11:41
I don't think you'd need to enumerate 200 * 8 bits. If it's set up so that if ALL 8 need to be blocked (all 8 bits 0) then a simple logical-OR would solve the problem, as soon as one bit is set 1, all the rest are ignored (doesn't matter if they are blocked or not).
And besides, you only need to check for avs within listening range anyway (20m).
Argent Stonecutter
Emergency Mustelid
Join date: 20 Sep 2005
Posts: 20,263
04-27-2006 12:49
From: Draco18s Majestic
I don't think you'd need to enumerate 200 * 8 bits. If it's set up so that if ALL 8 need to be blocked
You need to be able to enumerate 200 avatars in the 4 sims. And of the avatars may be in range, and ones that are close may be blocked but ones further away aren't.

That is, let's say there's 15 avatars in draw distance that the server has designated 1, 2, 13, 17, and 30-42 (because the ones that were 3-16 and 18-29 have left to go to a poetry reading).
As it turns out: there's a rock wall between you and 17, 13, and 40-42; and 30-31 are 30 meters away.

The client could send to the server "\001\002\036\037\040\041...\000" (avatars not blocked), or "\001\002\040\041\042\043...\000" (avatars that should hear the say), or "\015\021\050\051\052\000" (avatars blocked). The last is probably most efficient since most of the time it's going to be a one byte string (just \000, null, the terminator).

Or you can send a bit string of 1 bit per avatar, up to 200 bits long, but that's only more efficient when there's more than 25 blocked avs in draw distance.
From: someone
And besides, you only need to check for avs within listening range anyway (20m).
Yeh, but you don't want to have the server re-enumerate the avs every time the number in listening range changes, it's more efficient to have it just provide an ID for each av in draw distance when it first transmits that av's info to the client.
Draco18s Majestic
Registered User
Join date: 19 Sep 2005
Posts: 2,744
04-27-2006 14:38
I suppose.
Jolan Nolan
wannabe
Join date: 12 Feb 2006
Posts: 243
04-28-2006 08:32
For the sound effects there's mention in the LSL Wiki about a sound-dampener that stops any sound from passing a point, but it says that it may be disabled.

- Jolan
Emiko Luan
Registered User
Join date: 5 Apr 2006
Posts: 6
04-29-2006 13:57
hmm, it seems there would be an easier way, just enable people to change the range they speak at (I know I can change the rage my items listen at)

If you are in a room let them set it to 5m (maybe even just a toggle for the simpler people) manually.

maximum range something like 40 metres (a good club size)
Leaf Evans
Greenboy
Join date: 9 May 2006
Posts: 61
05-19-2006 12:42
Like the original poster of this message, I'd love to see speech indoors contained indoors. It's confusing to 'hear' voices from avatars you can even see. Not to mention the whole notion of being able to speak to folks in a room without worrying whether you're really alone or not.

It seems to me with all the cool things that LL has accomplished and managed to replicate in SL, finer-tuned restrictions on voice-carry distance could be done. It may not be easy but I wouldn't think coding any aspect of the program would be.
Lina Pussycat
Texture WizKid
Join date: 19 Jun 2005
Posts: 731
05-22-2006 11:20
From: Jolan Nolan
What about Skype? It's an internet phone which you use microphone and speakers - They used it in the last Town Hall meeting. Can that do conferences?
Is this mainly about chat bubbles or sound effects?

- Jolan


There is one problem with Skype Jolan and is also why i dont use team speak or anything like that for SL. You cant keep track of what was said or look back at it. once its said you have to ask can you repeat that please etc. It becomes a hassle in a meeting!!!
Morgaine Dinova
Active Carbon Unit
Join date: 25 Aug 2004
Posts: 968
05-24-2006 05:29
From: Argent Stonecutter
From: Imajica Hand

Walls must reduce voice range, depending its thickness and/or material. Is so hard to do that?

Yes.

No it's not.

The occlusion system already traverses all the surrounding objects, so all it needs to do is to accumulate a heuristic for "how much I'm surrounded by obstacles" while it does so, and to pass the result periodically as a state parameter to the sound-dropoff algorithm.

Piece of cake.

Even when occlusion handling doesn't scan 360 degrees because of viewport optimization, this will still return a perfectly good dropoff heuristic.
_____________________
-- General Mousebutton API, proposal for interactive gaming
-- Mouselook camera continuity, basic UI camera improvements
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
05-24-2006 06:06
OC only works on objects in front of you, everything outside of the camera's view is culled automatically, so to the OC system a completely closed room only has at most 3 walls since one of them must be behind you and therefore isn't considered, it just disappears. Besides, it divides things up based on a kind of grid/cube structure, if you have two rooms next to each other then one may not be culled at all because it's in the same cube that you are.

I thought it would be good for this too but it's not really well suited to it at all, since it's focus is on removing as many objects as possible that you can't see.
_____________________
Computer (Mac Pro):
2 x Quad Core 3.2ghz Xeon
10gb DDR2 800mhz FB-DIMMS
4 x 750gb, 32mb cache hard-drives (RAID-0/striped)
NVidia GeForce 8800GT (512mb)
Morgaine Dinova
Active Carbon Unit
Join date: 25 Aug 2004
Posts: 968
05-24-2006 18:55
That's what I said:
Even when occlusion handling doesn't scan 360 degrees because of viewport optimization, this will still return a perfectly good dropoff heuristic.
Physically accurate acoustics isn't what the thread originator asked for, but merely sound volume dropoff when indoors. Deriving a heuristic dropoff parameter from within the far-less-than-360 degrees of view frustum during OC would do exactly what's requested, and only a sound engineer would quibble with the lack of perfection. :)

Addendum: and if you want to make it slightly more physically accurate, then just cull occluded sound sources like you do occluded visuals. It'll make sound stop dead at walls rather than lose amplitude, but you may prefer that to the admittedly peculiar backwards dropoff on detecting a barrier in the forward direction.
_____________________
-- General Mousebutton API, proposal for interactive gaming
-- Mouselook camera continuity, basic UI camera improvements
Tony Giffen
Registered User
Join date: 21 Jun 2006
Posts: 9
12-11-2006 16:01
From: Aliasi Stonebender
Guess what, you can't fly or create plywood cubes WITH YOUR MIND in RL, either. ;)


I disagree with this statement.
Cortex Draper
Registered User
Join date: 23 Aug 2005
Posts: 406
Land parcel version
12-12-2006 06:12
I proposed a "Private chat on land feature - isolate land from external chat" version a while ago
/13/b2/67704/1.html
Kalel Venkman
Citizen
Join date: 10 Mar 2006
Posts: 587
Too complex to solve and still run in realtime
12-12-2006 07:41
From: Morgaine Dinova
No it's not.

The occlusion system already traverses all the surrounding objects, so all it needs to do is to accumulate a heuristic for "how much I'm surrounded by obstacles" while it does so, and to pass the result periodically as a state parameter to the sound-dropoff algorithm.

Piece of cake.

Even when occlusion handling doesn't scan 360 degrees because of viewport optimization, this will still return a perfectly good dropoff heuristic.


You're right, that calculation is a piece of cake. Unfortunately, it means doing prim penetration checks for each speaker-listener pair each time somebody says something. Let's look at this problem.

First, you can't just use the bounding box for the prim, because:
* prims can be hollow
* the avatar can be standing entirely inside the bounding box for a prim - in fact, for attenuation checks, this is likely to be true. The ray being cast would have to detect whether the speaker and the listener were inside the same prim to determine attenuation in that special case.
* bounding boxes can overlap, and frequently do.

Using just the bounding boxes for the prims would frequently result in instances where nobody could hear anybody say anything, because too many of them would overlap in a given volume of space, and where avatars were inside of buildings, the bounding box environment would create a puzzle impossible to solve in real time - which bounding boxes block sound? Which do not, and why? And when should these settings be overridden to facilitate expected transmission of sound.

So we've figured out we can't use prims' bounding boxes alone as the geometric criteria for blocking sound. It would work reasonably well if you were standing outside, but not inside buildings - and since we're hoping to have walls deaden sound inside buildings, that forces us to discard a pure bounding box approach altogether.

Now that we've had to discard bounding box tests, we have a new problem: we have to check intersection of the sound attentuation testing ray with every single polygon in the environment that might be between the speaker and the listener. To do this, we have to first determine which prims in the environment fall between the speaker and listener, and that's done with a mathematical contrivance called an octree. This is a subdivision of space, using rectangular prisms which divide the space into the most efficient possible volumes, for the purposes of determining what can and cannot be seen by a given avatar, and those volumes which can and cannot be passed through by that avatar.

So there needs to be an octree check performed by our sensing ray, traveling from speaker to listener, testing each prim encountered within each volume defined to determine whether that prim is intended to be a sound attenuating prim.

Ah, we're ready to make our determination!

But alas, we aren't - because avatars move constantly!! Any change in position of either avatar during the speech and listening process will invalidate the entire process and we must start again - because this would happen so often, the entire process would have to be repeated from scratch every single time anyone spoke. Further, it would have to perform this check in a sphere, 360 degrees on all three axis of possible direction to the listening avatar. This would have to be done no matter which way the avatar was facing.

"That sounds like a lot", you say, "but you only have to do it once per chat."

But again, alas, you don't. You have to perform this check for every single avatar, every time, in all directions, climbing through the octree and checking every single possible prim the testing ray might intersect and making a numercial evaluation of attentuation for each one to come up with a total attenuation for the chat - this on top of the hearing range test we're already doing now.

Now imagine trying to do this between two moving vehicles in a busy environment.

Nope, chat attenuation like what you're proposing isn't likely to happen. You'll have better luck asking for a "whisper" button to go with the "shout" button.
Dana Hickman
Leather & Laceā„¢
Join date: 10 Oct 2006
Posts: 1,515
12-12-2006 07:44
How about a check box on the prim->functions tab that blocks chat from passing thru it?
I'm sure clever people could fashion walls, doors, and windows that intersect to make an outside-chat-free zone... assuming chat isn't a lazy implementation of merely distance from the originator...
Draco18s Majestic
Registered User
Join date: 19 Sep 2005
Posts: 2,744
12-12-2006 08:16
It's still a grossly disgusting mess. All you did is reduce the number of objects that need to be checked for ray intersection. It's the RAY CASTING itself that takes the most time.
IC Fetid
Registered User
Join date: 19 Oct 2005
Posts: 145
12-12-2006 10:30
From: Imajica Hand
Well, here, in Italy, we call that a "Columbus egg"!!! ...erm... from Christopher Columbus... well is not important! lol

So, I think is a good idea. I think Lindens can activate a button, like for shout, to whisper intead talk or shout.


Thank you!


Many many versions ago there was a whisper option
IC Fetid
Registered User
Join date: 19 Oct 2005
Posts: 145
12-12-2006 10:42
From: Jolan Nolan
What about Skype? It's an internet phone which you use microphone and speakers - They used it in the last Town Hall meeting. Can that do conferences?
Is this mainly about chat bubbles or sound effects?

- Jolan

It would disappoint some people that that hot female avatar has a VERY deep voice. ;)
Draco18s Majestic
Registered User
Join date: 19 Sep 2005
Posts: 2,744
12-12-2006 12:31
From: IC Fetid
It would disappoint some people that that hot female avatar has a VERY deep voice. ;)


I believe the numbers are that 1 in every 2 female characters is a male player and that 1 in every 200? male characters is a female player. Don't know if these stats were inclusive of SL or actual MMOs in general (i.e. WoW + Eve + EQ + few others = Stats or WoW + Eve + EQ + few others + SL = Stats).
1 2