Iso/iec jtc 1/sc 29 N


Dynamic and animated scene



Yüklə 1,86 Mb.
səhifə16/19
tarix19.10.2018
ölçüsü1,86 Mb.
#74906
növüApplication form
1   ...   11   12   13   14   15   16   17   18   19

Dynamic and animated scene


The following animation related nodes are used in ARAF: OrientationInterpolator, ScalarInterpolator, CoordinateInterpolator, ColorInterpolator, PositionInterpolator, Valuator.

OrientationInterpolator

XSD Description



















Functionality and semantics

As specified in ISO/IEC 14772-1:1997, section 6.32.

The OrientationInterpolator node interpolates among a list of rotation values specified in the keyValue field. These rotations are absolute in object space and therefore are not cumulative. The keyValue field shall contain exactly as many rotations as there are keyframes in the key field.

An orientation represents the final position of an object after a rotation has been applied. An OrientationInterpolator interpolates between two orientations by computing the shortest path on the unit sphere between the two orientations. The interpolation is linear in arc length along this path. The results are undefined if the two orientations are diagonally opposite.

If two consecutive keyValue values exist such that the arc length between them is greater than , the interpolation will take place on the arc complement. For example, the interpolation between the orientations (0, 1, 0, 0) and (0, 1, 0, 5.0) is equivalent to the rotation between the orientations (0, 1, 0, 2) and (0, 1, 0, 5.0).


ScalarInterpolator

XSD Description



















Functionality and semantics

As specified in ISO/IEC 14772-1:1997, section 6.39.

This node linearly interpolates among a list of SFFloat values. This interpolator is appropriate for any parameter defined using a single floating point value. Examples include width, radius, and intensity fields. The keyValue field shall contain exactly as many numbers as there are keyframes in the key field.


CoordinateInterpolator

XSD Description



















Functionality and semantics

As specified in ISO/IEC 14772-1:1997, section 6.13.

This node linearly interpolates among a list of MFVec3f values. The number of coordinates in the keyValue field shall be an integer multiple of the number of keyframes in the key field. That integer multiple defines how many coordinates will be contained in the value_changed events.


ColorInterpolator

XSD Description



















Functionality and semantics

As specified in ISO/IEC 14772-1:1997, section 6.10.

This node interpolates among a list of MFColor key values to produce an SFColor (RGB) value_changed event. The number of colours in the keyValue field shall be equal to the number of keyframes in the key field. The keyValue field and value_changed events are defined in RGB colour space. A linear interpolation using the value of set_fraction as input is performed in HSV space. The results are undefined when interpolating between two consecutive keys with complementary hues.


PositionInterpolator

XSD Description

"PositionInterpolatorType"
>



"xmta:IS"
minOccurs="0"/>



"key"
type="xmta:MFFloat" use="optional"/>

"keyValue" type="xmta:MFVec3f" use="optional"/>

"xmta:DefUseGroup"/>



"PositionInterpolator" type="xmta:PositionInterpolatorType"/>
Functionality and semantics

As specified in ISO/IEC 14772-1:1996 section 6.37

The PositionInterpolator node linearly interpolates among a list of 3D vectors. The keyValue field shall contain exactly as many values as in the key field.

See ISO/IEC 14772-1:1997 Section 4.6.8, Interpolator nodes, contains a more detailed discussion of interpolators.

Valuator

XSD Description

"ValuatorType">



"xmta:IS" minOccurs="0"/>



"Factor1" type="xmta:SFFloat" use="optional" default="1"

/>

"Factor2" type="xmta:SFFloat" use="optional" default="1"

/>

"Factor3" type="xmta:SFFloat" use="optional" default="1"

/>

"Factor4" type="xmta:SFFloat" use="optional" default="1"

/>

"Offset1" type="xmta:SFFloat" use="optional" default="0"

/>

"Offset2" type="xmta:SFFloat" use="optional" default="0"

/>

"Offset3" type="xmta:SFFloat" use="optional" default="0"

/>

"Offset4" type="xmta:SFFloat" use="optional" default="0"

/>

"Sum" type="xmta:SFBool" use="optional" default="false"

/>

"xmta:DefUseGroup"/>



"Valuator" type="xmta:ValuatorType"/>
Functionality and semantics

As specified in ISO 14496-11 section 7.2.2.135.1

The Valuator node serves as a simple type casting method. It can receive events of multiple types. On reception of such an event, eventOuts of many different types can be generated. Both the eventIn and the eventOut values can be single field (SF) or multiple field (MF) types. In addition, the possible eventIn and eventOut types include both scalar types, like SFBool, and vector types, like SFVec2f.


Each component of the (possibly vector) eventOut value is calculated from the corresponding component of the (possibly vector) eventIn value with the following relationship:

output.i = factor.i * input.i + offset.i

All values specified in the above equation are floating point values.
input.i is the value of the ith component of the eventIn type and output.i is the value of the ith component of one of the eventOut types specified in the node inteface. input.i shall be extended by zeros for all components i that do not exist in the input type (e.g., input.z=0.0 in case an SFVec2f is cast to an SFVec3f).
factor.i and offset.i are the exposedField values for the ith component of the vectorial calculation. In the special case of a scalar input type (e.g. SFBool, SFInt32) that is cast to a vectorial output type (e.g. SFVec2f), for all components i of output.i, input.i shall take the value of the scalar input type, after appropriate type conversion.
Depending on the number of dimensions of the data type, there may be one up to four input values. For example an eventIn of type SFRotation will require four input paths but SFInt32 will only require the first input path. Each input path operates identically.
Each input value is converted to a floating-point value using a simple typecasting rule as illustrated in the above table. After conversion, the values are multiplied by the corresponding factor.i value and added to the corresponding offset.i value as specified above. Depending on whether the summer is enabled, either the summed value or the individual values are presented at the output. The summer sums all 4 computed input paths independent of the number of dimensions of the eventIn type.
Simple typecasting conversion from other data types to float


From

Conversion to float

Integer

Direct conversion (1 to 1.0)

Boolean

True – 1.0

False – 0.0



Double

Truncate to 32-bit precision

String

Convert if the content of the string represensts an int, float or a double value. ‘Boolean’ string values “true” and “false” are converted to 1.0 and 0.0 respectively. Any other string is converted to 0.0.


Simple typecasting conversion from float to other data types

To

Conversion from float

Integer

Truncate floating point.eg (1.11 to 1)

Boolean

0.0 to false. Any other values to true.

Double

Direct conversion

String

Convert to a string representing the float

For conversion of data types to and from strings the values of multiple valued data types, such as SFColor, are separated by spaces.


Depending on the dimension of the eventOut type, the corresponding number of output values are computed and converted to the output types according to Table 36 and as detailed below.
If the eventIn is of an SF type then an eventOut for an MF type shall consist of just one element, i.e., the MF type collapses to a SF type.
If the eventIn is of an MF type then an eventOut for an SF type shall be created by using the first element of the MF input only.
If the eventIn is of an MF type then an eventOut for an MF type shall be created by using each element of the MF input to generate one element of the MF output type, respecting the order of the elements in the eventIn MF type.
If the eventIn is of SFTime type then the conversion to string format shall be in the format “hh:mm:ss” where ‘hh’, ‘mm’, ‘ss’ are respectively hours, minutes and seconds of the input SFTime value.
EXAMPLE: The Valuator node can be seen as an event type adapter. One use of this node is the modification of the SFInt32 whichChoice field of a Switch node by an event. There is no interpolator or sensor node with a SFInt32 eventOut. Thus, if a two-state button is described with a Switch containing the description of each state in choices 0 and 1. The triggering event of any type can be routed to a Valuator node whose SFInt32 field is routed to the whichChoice field of the Switch.
SFVec4f fields cannot be routed to Valuator node.

Communication and compression


The following communication and compression related nodes are used in ARAF: BitWrapper, MediaControl.

BitWrapper

XSD Description































Functionality and semantics

As specified in ISO/IEC 14496-11 (BIFS), section 7.2.2.23.2

A node may have a dedicated node compression scheme. This compressed representation may be carried in the BIFS stream or in a separate stream.

The node field contains the node that has a compressed representation. The BitWrapper node can be used in lieu and place of the node it wraps. The type field indicates which node compression scheme must be used, 0 being the default. It is envisioned that future node compression schemes may be developed for the same node. For this specification, AFX object code table of ISO/IEC 14496-1 defines the default schemes.

The compressed representation is carried either in a separate stream or within the scene stream. The url field indicates the stream that contains the compressed representation and the buffer field contains the compressed representation when carried within the scene. When the compressed representation is carried in separate streams by using url field, node decoders must be configured.

In the object descriptor stream, a node decoder is indicated in the DecoderConfig descriptor for streamType 0x03, objectTypeIndication 0x05, and code defined in AFX object code table of ISO/IEC 14496-1. The decoder is configured with a AFXConfig descriptor.

Note that buffer is an array of 8-bit values. It shall not be interpreted as a UTF-8 string. For in-band scenario, compressed media stream is transmitted within a scene description stream through buffer field.

For out-band scenario, compressed media stream is transmitted outside scene description stream through url field. It is used when the specific node requires upstream to send a specific information to a server.

MediaControl

XSD Description































Functionality and semantics

As specified in ISO/IEC 14496-11 (BIFS), section 7.2.2.84.2

The MediaControl node controls the play back and, hence, delivery of a media stream referenced by a media node. The MediaControl node allows selection of a time interval within one or more stream objects for play back, modification of the playback direction and speed, as well as pre-rolling and muting of the stream.

A media node may be used with or without an associated MediaControl node. A media node for which no MediaControl node is present shall behave as if a MediaControl node for that media stream were present in the scene, with default values set.

The url field contains a reference to one or more stream objects (“OD:n#segment” or “OD:n”), called the controlled stream objects, all of which must belong to the same media stream. This media stream is called the controlled stream. When any media node referring to a media stream in its url field is active, the associated media stream is said to be active.

Note – This means that the controlled stream becomes active exactly when some media node pointing to it becomes active. The controlled stream becomes inactive, when all media nodes referring to it become inactive. When a controlled media stream becomes active, the associated controlled stream objects in the url field of the MediaControl node shall be played sequentially.

The mediaStartTime and mediaStopTime fields define the time interval, in media time, of each controlled stream object to be played back. If media time of the media stream is undefined, selection of a time interval of the controlled stream object for play back is not supported. In that case the mediaStartTime and mediaStopTime fields shall be ignored. The following values have special meaning for mediaStartTime and mediaStopTime:



  • 0 indicates the beginning of the controlled stream object

  • -1 indicates the media time of the controlled stream object when the associated media node becomes active.

  • +I, or any value greater than the duration of the controlled stream object indicates its end.

Semantics of mediaStartTime and mediaStopTime depend on the delivery scenario. Semantics in case of delivery scenarios that permit seeking: Play back of the controlled stream object shall start at mediaStartTime of the first controlled media object when the controlled stream becomes active. When the controlled stream becomes inactive and then active again, then if mediaStartTime is –1 the stream starts playing from the point where it was last stopped. Otherwise the first controlled stream object in the url field restarts playing from mediaStartTime. If the loop field is TRUE, all the controlled stream objects are played in a loop, each in the range mediaStartTime to mediaStopTime while the controlled stream is active. If mediaStartTime is –1, each stream object will start from the beginning.

In all delivery scenarios, play back of the controlled stream object shall occur only in the range defined by mediaStartTime and mediaStopTime. Outside this range the play back shall be muted. The loop field shall be ignored in delivery scenarios that do not permit seeking. The mediaSpeed is a requested multiplication factor to the normal speed of each controlled stream object. Negative values for mediaSpeed request that the controlled stream object plays backward from mediaStartTime to mediaStopTime. When this field is zero, the controlled stream shall be paused.

NOTE — All streams, independent of speed, are only played in the range defined by mediaStartTime and mediaStopTime. When mediaSpeed < 0, the stream object can only be played if the server reassigns time stamps to be increasing from mediaStopTime to mediaStartTime.

If mediaSpeed > 0 (forward play back) and mediaStopTime < mediaStartTime, then the controlled stream object will play until the end.

If mediaSpeed < 0 (backward play back) and mediaStopTime > mediaStartTime, then the controlled stream object will play to the beginning.

In these equations, the special value –1 is substituted by the actual value of media time that it represents. There is no requirement that a delivery service supports specific ranges of mediaSpeed other than mediaSpeed = 1. Media content shall comply with maximum and average bit rates specified for the stream, irrespective of the value of the mediaSpeed field.

If the preRoll field is set to TRUE the controlled stream should be pre-rolled in order to be ready to start instantly when the controlled stream becomes active. All streams that are associated to the same object time base as the stream that is pre-rolled should also be pre-rolled. If the delivery scenario does not permit seeking, preRoll = TRUE means that the controlled stream object should be delivered and recently received access units should be stored in the decoding buffer in order to enable instantaneous play back when the media node becomes active.

Note – Play back of stream objects in media nodes that are not controlled by MediaControl or where preRoll is FALSE may suffer an unspecified startup delay if play back is requested by an unpredictable action (e.g. user interaction, script).

The isPreRolled event sends a TRUE value when the controlled stream object has completed pre-rolling. If the mute field is set to TRUE, the stream objects in the url field are not rendered when they are played. However, their media clock is not stopped. For visual streams, whether natural video or synthetic such as animation streams or Inline nodes, mute means that the visual texture remains unchanged; for audio streams, the audio is not played.

If the enabled field is set to TRUE the MediaControl node controls the stream object it refers to. More than one MediaControl node may be used to control a stream object within the same stream. At most one of these MediaControl nodes shall be enabled at any time. If one of these MediaControl nodes becomes enabled, the enabled field of all other MediaControl nodes that refer to the same stream shall automatically be set to FALSE.

If the enabled field is set to FALSE the MediaControl node shall cease to control the play back and muting of the controlled stream object, however, preRoll shall still be evaluated. If the controlled stream object is playing when enabled is set to FALSE and no other MediaControl node takes control of the stream, the stream object shall continue playing as if it were still controlled by the disabled MediaControl node. Only one MediaControl node shall refer to any of the set of media streams that are associated to a single object time base.



Note – MediaControl affects the OTB of the controlled stream and therefore affects all the streams that are associated to the same OTB. Therefore changing play position, speed or direction of one stream will correspondingly affect all the active streams that are associated to the same OTB.

Support for Maps


MAPS are supported in ARAF by three PROTOs: Map, MapOverlay, MapMarker and MapPlayer. As for other elements in the scene, the node interface and the functionality and semantics are normative. Annex A presents an informative implementation of the two PROTOs.
Map
XSD Description


"Map" locations="org:mpeg:Map">


"name" type="String" vrml97Hint="exposedField" stringValue=""/>

"addOverlays" type="Nodes" vrml97Hint="eventIn"/>

"removeOverlays" type="Nodes" vrml97Hint="eventIn"/>

"translate" type="Vector2" vrml97Hint="eventIn"/>

"mapGPSCenter" type="Vector2" vrml97Hint="exposedField" vector2Value="0 0"/>

"zoomIn" type="Boolean" vrml97Hint="eventIn"/>

"zoomOut" type="Boolean" vrml97Hint="eventIn"/>

"overlays" type="Nodes" vrml97Hint="exposedField">





"mode" type="Strings" vrml97Hint="exposedField" stringArrayValue="ROADMAP"/>

"provider" type="Strings" vrml97Hint="exposedField" stringArrayValue="ANY"/>

"mapSize" type="Vector2" vrml97Hint="exposedField" vector2Value="768 768"/>

"mapTranslation" type="Vector2" vrml97Hint="exposedField" vector2Value="0 0"/>

"mapWidth" type="Float" vrml97Hint="exposedField" floatValue="0"/>

"zoomLevel" type="Integer" vrml97Hint="exposedField" integerValue="0"/>




BIFS Textual Description

EXTERNPROTO Map [

exposedField SFString name ""

exposedField SFVec2f mapTranslation 0.0 0.0

exposedField SFVec2f mapGPSCenter 0.0 0.0

exposedField MFNode overlays []

exposedField MFString mode ["ROADMAP"]

exposedField MFString provider ["ANY"]

exposedField SFVec2f mapSize 768 768

exposedField SFFloat mapWidth 0

exposedField SFInt32 zoomLevel 0

eventIn MFNode addOverlays

eventIn MFNode removeOverlays

eventIn SFVec2f translate

eventIn SFBool zoomIn

eventIn SFBool zoomOut

]"org:mpeg:Map"



Functionality and semantics

The Map node provides map display capabilites to a scene. The node detects pointer device dragging and enables the dragging of the map image. The dragging operation changes the mapGPSCenter corresponding to the drag operation and translates all the associated Map items along with the image as a single unit.

The name field of the map specifies a unique name of the Map instance. As multiple Map instances can coexist in the same scene, this field allows the identification of a specific MAP node by name.



mapTranslation specifies a (x,y) translation in the local coordinate system of the Map image instance. Obs: mapTranslation does not modify the GPS center of the Map (mapGPSCenter) position or any other GPS related value.

addOverlays specifies one or more MapOverlay nodes that shall be added to the Map overlays field. The MapOverlay instances are inserted after the already existing ones.

removeOverlays specifies one or more MapOverlay nodes that shall be removed from the Map overlays field. If a MapOverlay instance is not found, its removal fails silently. Removing a MapOverlay implies the deletion of all the MapMarkers already attached to the indicated MapOverlay instance.

translate specifies a translation that is to be applied to the Map image. The values are represented in the local coordinate system of the Map node. The event also modifies the mapGPSCenter field.

mapGPSCenter specifies the GPS position (latitude, longitude) of the Map center.

zoomIn increases the zoomLevel of the Map by one.

zoomOut decreases the zoomLevel of the Map by one.

mapSize is a 2D vector which specifies the width and the height of the map image.

zoomLevel represents the resolution of the current view. The minimal value of zoom level is 0, while the maximal value is defined by the map provider depending on its capabilities. Zoom level 0 encompasses the entire earth. Each succeeding zoom level doubles the precision in both horizontal and vertical dimensions.

mapWidth represents the length in meters on the longitude axis of the desired visible map. The client calculates the maximum zoom level that contains the desired map and sets that value in the zoomLevel field. If mapWidth is set to 0, then the zoomLevel field values is used.

provider specifies the desired map provider to be used. The provider field is a multi-value field enabling designers to specify fallback map providers in the case the desired one is not supported by the client. The “ANY“ choice allows the client to select its provider.

mode specifies the type of map that is to be displayed. The possible values are: “SATELLITE“, “PLANE“ , “ROADMAP“ and “TERRAIN“. Satellite mode should display map images that are practically shot from a vertical viewpoint, usually by a satellite. Plane mode should display map images that are taken by an angle close to 45°, usually shoot by an airplane. Map should display images that are vector drawings of streets, buildings and other similar features. Terrain mode should display images that represent physical relief map image, showing terrain and vegetation.

If multiple values are specified in the map field, then the resulting image should be a combination of all desired modes as long as they are supported by the map provider. If a certain combination is not supported, then the map view falls back to the closest supported one.



Obs:

The map “image” is made up by a 3x3 matrix of tile images. These should be automatically computed once the mapSize and the mapGPSCenter are set.



MapOverlay
XSD Description


"MapOverlay" locations="org:mpeg:MapOverlay">


"name" type="String" vrml97Hint="exposedField" stringValue = ""/>

"visible" type="Boolean" vrml97Hint="exposedField" booleanValue = "TRUE"/>

"enabled" type="Boolean" vrml97Hint="exposedField" booleanValue = "TRUE"/>

"clickable" type="Boolean" vrml97Hint="exposedField" booleanValue = "TRUE"/>

"children" type="Nodes" vrml97Hint="exposedField">





"keywords" type="Strings" vrml97Hint="exposedField stringArrayValue=""/>

"addOverlayItems" type="Nodes" vrml97Hint="eventIn"/>

"removeOverlayItems" type="Nodes" vrml97Hint="eventIn"/>



BIFS Textual Description

EXTERNPROTO MapOverlay [

exposedField SFString name ""

exposedField SFBool visible TRUE

exposedField SFBool enabled TRUE

exposedField SFBool clickable TRUE

exposedField MFNode children []

exposedField MFString keywords []

eventIn MFNode addOverlayItems

eventIn MFNode removeOverlayItems

]"org:mpeg:MapOverlay"


Semantics

A MapOverlay instance acts like a container for any number of items of the same type (MapMarkers) that should be added to the Map. It also provides an easy way of executing a specified action on all the items it contains at a time, as indicated below.

The name field specifies a unique name of the MapOverlay instance that may be used to identify a specific overlay item for further actions.

The visible field is a Boolean value which specifies if the MapOverlay instance is visible on the Map. This field is used to display/hide all the items (MapMarker instances) of the current MapOverlay instance at a time.

The enabled field is a Boolean value which specifies if all the MapMarkers of the current overlay are enabled or not. An enabled MapMarker will output an event each time the player enters/exits the area “covered” by it. This value can be set using the MapMarker position field. Review the semantics of the MapMarker PROTO, section 4.2.6.3.3.3 for details.

The clickable field specifies if all the MapMarkers of a given MapOverlay are clickable or not. A clickable MapMarker can be tapped by the user. When tapped, “onClick” output event is triggered by the corresponding MapMarker instance. Review the semantics of the MapMarker PROTO, section 4.2.6.3.3.3 for details.

children is a list of MapMarker instances. The list contains all the items that have been already added to the current MapOverlay instance.

The keywords field specifies a semantic description of the specific MapOverlay node (e.g. "restaurant", "museum", etc.).



addOverlayItems is an input event which can recieve one or multiple MapMarker instances to be added to the MapOverlay children field. If the children field is not empty the specified MapMarker instances are inserted after the ones that already exist.

removeOverlayItems is an input event that removes the specified MapMarker instances from its children field. If a MapMarker instance is not found among the children of the MapOverlay, the removal of the unknown MapMarker instance fails silently.

OBS:

Visible, clickable and enabled fields may give wrong information about the corresponding MapMarker fields. If, for example, the visible field of the MapOverlay has been used to set all the MapMarkers visible but in the meantime one or more MapMarkers have been individually set invisible (using their own visible field) then the MapOverlay visible field (which is still TRUE) will give false information that all the MapMarkers are still visible. The same rule applies to clickable and enabled fields. Writing a new value to any of these fields will set the new value to all the MapMarker instances no matter their previous value of the specified field. Therefore the user should be careful only when reading any of these fields.

addOverlayItems and removeOverlayItems are input events of type MFNode but adding or removing a single MapMarker instance at a time should be also valid.
MapMarker
XSD Description


"MapMarker" locations="org:mpeg:MapMarker">


"name" type="String" vrml97Hint="exposedField" stringValue = ""/>

"visible" type="Boolean" vrml97Hint="exposedField" booleanValue = "TRUE"/>

"enabled" type="Boolean" vrml97Hint="exposedField" booleanValue = "TRUE"/>

"clickable" type="Boolean" vrml97Hint="exposedField" booleanValue = "TRUE"/>

"position" type="Vector3" vrml97Hint="exposedField" vector3Value = "0 0 0"/>



"markerShape" type="Nodes" vrml97Hint="exposedField"





"keywords" type="Strings" vrml97Hint="exposedField stringArrayValue=""/>

"doClick" type="Boolean" vrml97Hint="eventIn"/>

"setPlayerGPS" type="Vector2" vrml97Hint="eventIn"/>

"setMapGPSCenter" type="Vector2" vrml97Hint="eventIn"/>

"setMapZoomLevel" type="Integer" vrml97Hint="eventIn"/>

"onClick" type="Boolean" vrml97Hint="eventOut"/>

"onPlayerAround" type="Boolean" vrml97Hint="eventOut"/>

"onPlayerLeft" type="Boolean" vrml97Hint="eventOut"/>




BIFS Textual Description

EXTERNPROTO MapMarker [

exposedField SFString name ""

exposedField SFVec3f position 0 0 0

exposedField SFRotation rotation 0 0 1 0

exposedField SFBool clickable TRUE

exposedField SFBool visible TRUE

exposedField SFBool enabled TRUE

exposedField MFNode markerShape []

exposedField MFString keywords []

eventIn SFBool doClick

eventIn SFVec2f setPlayerGPS

eventIn SFVec2f setMapGPSCenter

eventIn SFInt32 setMapZoomLevel

eventOut SFBool onClick

eventOut SFBool onPlayerAround

eventOut SFBool onPlayerLeft

]"org:mpeg:MapMarker"


Functionality and semantics

The MapMarker proto allows creating marker instances that may be used to represent additional information placed on the Map at a specified GPS position. In order for a MapMarker to be overlaid on the map a MapOverlay instance is needed. The visual representation of a MapMarker can be any 2D or 3D object (e.g.: an image, a video, a sphere, a complex 3D graphical object, etc).

name specifies a unique name of the MapMarker instance. It helps identifying a specific MapMarker instance for further actions.

The visible field stores a Boolean value which specifies if the MapMarker node is visible on the map or not. A MapMarker is considered to be visible when its corresponding appearance node is displayed over the Map image instance.

The clickable field stores a Boolean value which specifies if the MapMarker node is clickable. A clickable MapMarker instance generates a TRUE Boolean output event, “onClick”, when tapped.

enabled specifies if the MapMarker is enabled. An enabled MapMarker generates two Boolean output events always TRUE (onPlayerAround, onPlayerLeft) each time the player enters/exits the area covered by the MapMarker. This area is a circle centered in the MapMarker GPS position with a specified radius.

position is a 3D vector that specifies the GPS location of the MapMarker and the radius of the circle the MapMarker is active on as follows: first value of the vector is the latitude, the second is the longitude and the third is the radius which can also be ignored and set to 0 if the MapMarker should not have an active zone.

rotation specifies an arbitrary rotation of the marker. The first three values specify a normalized rotation axis vector about which the rotation takes place whilst the forth value specifies the amount of right-handed rotation about that axis in radians.

The keywords field specifies a semantic description of the specific MapOverlay node (e.g. "restaurant", "museum", etc.).



markerShape is a list of nodes representing the visual appearance of the current MapMarker instance that should be overlaid on the Map image if its visible field is TRUE.

doClick input event simulates a click action on the MapMarker visual representation.

setPlayerGPS is a 2D vector eventIn representing the current GPS location of the player, the latitude respectively the longitude. The player GPS position should be used to compute the distance between the MapMarker and the player. Based on the computed distance onPlayerAround and onPlayerLeft output events are triggered whenever the distance conditions are fulfilled.

setMapZoomLevel represents the current zoom level of the Map. The zoom level of the Map is needed to compute the (x, y) coordinates of the MapMarker in the local coordinate system of the Map instance.

setMapGPSCenter is a 2D vector input event specifying the GPS position of the Map center. Beside the zoomLevel (described above), the GPS center of the Map is also required in order to compute the location of the MapMarker in the current coordinate system of the Map instance.

Note:

Each MapMarker has to be attached to a MapOverlay. There has to be at least one MapOverlay attached to the Map instance in order to be able to add and eventually display MapMarkers on the Map. Review Map PROTO (Section 4.2.6.3.1) and MapOverlay PROTO (Section 4.2.6.3.2) for details.



MapPlayer
XSD Description


"MapPlayer" locations="org:mpeg:MapPlayer">


"name" type="String" vrml97Hint="exposedField" stringValue = ""/>

"visible" type="Boolean" vrml97Hint="exposedField" booleanValue = "TRUE"/>

name="position" type="Vector2" vrml97Hint="exposedField" vector2Value = "0 0"/>

name="playerShape" type="Nodes" vrml97Hint="exposedField">





"setMapGPSCenter" type="Vector2" vrml97Hint="eventIn"/>

"setMapZoomLevel" type="Integer" vrml97Hint="eventIn"/>



BIFS Textual Description

EXTERNPROTO MapPlayer [

exposedField SFString name ""

exposedField SFVec2f position 0 0

exposedField SFBool visible TRUE

exposedField MFNode playerShape []

eventIn SFInt32 setMapZoomLevel

eventIn SFVec2f setMapGPSCenter

]” org:mpeg:MapPlayer”


Functionality and semantics

The MapPlayer proto allows creating a visual representation of the player on the Map. The player location on the Map is represented by the real GPS position of the device. Each location change (GPS position) of the device should also affect the player location on the Map. The visual representation of a MapPlayer can be any 2D/3D object (e.g.: an image, a video, a sphere, a complex 3D graphical object, etc).

name specifies a unique name of the MapPlayer instance. It helps identifying a specific MapPlayer instance for further actions. The name may be useful in a multiplayer application. A standalone application should not have more than one MapPlayer instance.

position is a 2D vector that specifies the GPS location of the MapPlayer.

The visible field stores a Boolean value which specifies if the MapPlayer node is visible on the map or not. A MapPlayer is considered to be visible when its corresponding appearance node is displayed over the Map image instance.



playerShape is a list of nodes representing the visual appearance of the MapPlayer instance that should be overlaid on the Map. The playerShape should be displayed on the Map only when “visible” is TRUE.

is a list of nodes representing the visual appearance of the current MapMarker instance that should be overlaid on the Map image if its visible field is TRUE.



setMapZoomLevel represents the current zoom level of the Map. The zoom level of the Map is needed to compute the (x, y) coordinates of the MapPlayer in the local coordinate system of the Map instance.

setMapGPSCenter is a 2D vector input event specifying the GPS position of the Map center. Beside the zoomLevel (described above), the GPS center of the Map is also required in order to compute the location of the MapPlayer in the current coordinate system of the Map instance.

Note: The MapPlayer logic should automatically compute the player translation in the local coordinate system of the Map instance whenever the GPS location of the device changes. The recommended way of adding a MapPlayer instance to a Map is using a dedicated MapOverlay. The MapPlayer is nothing else but a special marker that has a slightly different behavior than an ordinary MapMarker (Section 4.2.6.3.3).
Map example

Map {

name "firstMap"

mapTranslation 0 0

mapSize 768 768

mapGPSCenter 48.625252 2.442515

zoomLevel 19

overlays [

DEF AngryCatOverlay MapOverlay {

name "AngryCatOverlay"

children [

DEF AngryCat1 MARKER {

name "AngryCat1"

markerShape [USE AC_MARKER]

position 48.625240 2.442301 5

clickable FALSE

enabled TRUE

visible TRUE

}

DEF AngryCat2 MARKER {



name "AngryCat2"

markerShape [USE AC_MARKER]

position 48.625006 2.442843 5

clickable FALSE

enabled TRUE

visible TRUE

}

DEF AngryCat3 MARKER {



name "AngryCat3"

markerShape [USE AC_MARKER]

position 48.624974, 2.442407 5

clickable FALSE

enabled TRUE

visible TRUE

}

DEF AngryCat4 MARKER {



name "AngryCat4"

markerShape [USE AC_MARKER]

position 48.624974, 2.443407 5

clickable FALSE

enabled TRUE

visible TRUE

}

]

}



DEF SleepyCatOverlay MapOverlay {

name "SleepyCatOverlay"

children [

DEF SleepyCat1 MARKER {

name "SleepyCat1"

markerShape [USE SC_MARKER]

position 48.625540 2.442501 5

clickable FALSE

enabled TRUE

visible TRUE

}

DEF SleepyCat2 MARKER {



name "SleepyCat2"

markerShape [USE SC_MARKER]

position 48.625306 2.442243 5

clickable FALSE

enabled TRUE

visible TRUE

}

DEF SleepyCat3 MARKER {



name "SleepyCat3"

markerShape [USE SC_MARKER]

position 48.624774, 2.442707 5

clickable FALSE

enabled TRUE

visible TRUE

}

]

}



DEF CheeseOverlay MapOverlay {

name "CheeseOverlay"

children [

DEF CheesePiece1 MARKER {

name "CheesePiece1"

markerShape [USE CHEESE_MARKER]

position 48.625352 2.442455 5

clickable FALSE

enabled TRUE

visible TRUE

}

DEF CheesePiece2 MARKER {



name "CheesePiece2"

markerShape [USE CHEESE_MARKER]

position 48.625822 2.442365 5

clickable FALSE

enabled TRUE

visible TRUE

}

DEF CheesePiece3 MARKER {



name "CheesePiece3"

markerShape [USE CHEESE_MARKER]

position 48.625552 2.442015 5

clickable FALSE

enabled TRUE

visible TRUE

}

]

}



]

}

Terminal


The following terminal related node is used in ARAF: TermCap.

TermCap

XSD Description

"TermCapType">



"xmta:IS" minOccurs="0"/>



"capability" type="xmta:SFInt32" use="optional" default="0"

/>

"xmta:DefUseGroup"/>



"TermCap" type="xmta:TermCapType"/>
Functionality and semantics

As defined in ISO/IEC 14496-11 (BIFS), section 7.2.2.125.
The TermCap node is used to query the resources of the terminal. By ROUTEing the result to a Switch node, simple adaptive content may be authored using BIFS.

When this node is instantiated, the value of the capability field shall be examined by the system and the value eventOut generated to indicate the associated system capability. The value eventOut is updated and generated whenever an evaluate eventIn is received.

The capability field specifies a terminal resource to query. The semantics of the value field vary depending on the value of this field. The capabilities which may be queried are:


0

Frame rate

1

Color depth

2

Screen size

3

Graphics hardware

32

Audio output format

33

Maximum audio sampling rate

34

Spatial audio capability

64

CPU load

65

Memory load




Yüklə 1,86 Mb.

Dostları ilə paylaş:
1   ...   11   12   13   14   15   16   17   18   19




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə