[Verse-dev] Identity of verse nodes

Emil Brink emil at obsession.se
Mon Dec 19 13:16:42 CET 2005


Peter Lundén wrote:
> We need to exchange information about node identity between clients. As 
> I understands it, according to the spec. there is no way in Verse that 
> two clients can exchange information about node-identity.

That is, as far as I know, only true with regard to the numerical 32-bit
node IDs. Those are unique per-session, i.e. two clients are not guaran-
teed to "see" the same node using the same IDs.

This is so in order to provide the server with the freedom to modify the
view of the world it sends to a particular client, for instance to mple-
ment culling of visible objects, and so on.

> We have a great problem with that. Imagine the situation that you are a paticipant 
> in a multi-user VR session. You have a visual renderer running on one 
> machine and audio renderer on another. Now the visual rendering client 
> handles your navigation and it do that by manupulating its avatar in the 
> Verse server. Now the audio renderer needs to know the position of the 
> visual renderers avatar in order to render the audio for users current 
> position. The question is now how do the audio renderer know which 
> object to track? How do you solve this kind of problems using Verse 
> without have to setup a communication between the two renderers?

I think you're simply supposed to use node names. Node names are NOT
unique per session; they are part of the shared data and will be seen
as identical by all clients. Doing that is however made more difficult
by the lack of a call such as:

verse_send_node_subscribe_by_name(const char *name);

i.e. there is no way to, given a textual name, subscribe to that node.

Instead, you have to subscribe to all the nodes of the proper type,
until you learn the name of the desired one, then (I guess) unsub-
scribe to the remainder. Or something. Insights from Eskil here are
most welcome.

You could also perhaps use object methods, it's easy to come up with
a scheme where i.e. the visual renderer calls a method in the audio
renderer, telling it the node ID of the visual one. Numerical node
IDs are sharable in method calls, the server can translate. However,
this I guess amounts to implementing a "communication between the
two renderers", and might thus be undesirable from your point of
view.

That's what I know, I think.

Regards,

/Emil


More information about the Verse-dev mailing list