Avatar Container – step 0030 (bugfix1) – December 2009

1 Purpose of SrrAvatarContainer

SrrAvatarContainer provides the features

- bind the avatar container

It should be instantiated in all moving objects that can be entered by avatars. If the moving viewpoint is bound (enter the object), the avatar container should be bound, too.

The avatar container must be located in the same local coordinate system as the viewpoint.

This will result in having transmitted the avatar positions and orientations relative to the local (moving) coordinate system, therefore avoiding the “bouncing avatars problem”.

Best current practice is to connect the isBound field of EVERY viewpoint with a set_bind field of an avatar container. If several viewpoints exist, which do not move relative to each other, one avatar container can be used for all of them.

The avatar container can

be used in the frame (initialized by commParam): then it will use a network sensor with streamName/networkSensorId Srr <objId>.

be used in a module/intrinsic model/static model (initialized by modParam, isGlobal=false): then it will use a network sensor with streamName/networkSensorId Srr-<moduleName>-<objId>.

be used in a vehicle model (initialized by modParam, isGlobal=true): then it will use a network sensor with streamName/networkSensorId Srr-Vehicle-<objId>.

You can find more information about the avatar container concepts in the concept paper. The concept paper is available on the Project Homepage and on the German Project Homepage.

2 User Interface of SrrAvatarContainer (uiObj)

SrrAvatarContainer is an external prototype that is available at the directory srr/.

<ProtoDeclare name='SrrAvatarContainer'>

<ProtoInterface>

<field accessType='inputOutput' name='objType' type='SFString' value='SrrAvatarContainer'/>

<field accessType='inputOutput' name='version' type='SFFloat' value='0.0030'/>

<field accessType='inputOutput' name='objId' type='SFString'/>

<field accessType='inputOutput' name='quasiModule' type='SFString'/>

<field accessType='inputOutput' name='commParam' type='SFNode'/>

<field accessType='inputOutput' name='modParam' type='SFNode'/>

<field accessType='inputOnly' name='set_bind' type='SFBool'/>

<field accessType='inputOutput' name='enabled' type='SFBool' value='true'/>

</ProtoInterface>

objId is a string unique within the module that is used in network sensor nodes as channel identification. If the Avatar Container is used in a frame, objId should be set to a globally unique value, that does not interfere with module names.

If the Avatar Container is used in a vehicle model (global model), quasiModule must be set to the value, that has been received via the miMod(Model) interface. In this case, the object ID must be unique with respect to the “quasi module”.

The avatar container will be initialized after having received the modParam reference or the commParam reference. If the Avatar Container is used in a frame, the user has to route the commParam from SrrControl to the Avatar Container. If the Avatar Container is used in a module or in an intrinsic model, the user has to route the modParam from SrrModCoord to the Avatar Container. If the Avatar Container is used in a static model or in a vehicle model, the model author has to route the modParam from the miMod(Model) interface to the Avatar Container.

The user can bind the avatar container via set_bind.

The semantics of the enabled field has changed in step 0030 – bugfix1. Now the user can use this field to disable the network sensor and the timers of an avatar container – this is necessary, when the avatar container is used in a vehicle model, since vehicle models can be unloaded and must be disabled before.