[X3D-Public] Model Building for Light Simulation
Don Brutzman
brutzman at nps.edu
Tue Aug 13 17:34:02 PDT 2013
On 8/13/2013 4:05 PM, Len Bullard wrote:
> Question:
>
> What is the best configuration of systems for building a light data-driven
> waypoint simulation in X3D that uses the Monterey tool kits as the editing
> suite?
Please see Savage examples archive
Tools
Animation
Waypoint Interpolator Example
https://savage.nps.edu/Savage/Tools/Animation/
https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorExample.x3d
Screenshot
https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorExample.png
This is also available as a drag-and-drop palette item in X3D-Edit
(listed under Savage examples)
https://savage.nps.edu/X3D-Edit/
which produces the following code snippet. looks gnarly until you play
with it, have just added lots of switches and options over time.
reading appinfo helps.
Good way to produce a data-driven visualization:
- produce some positional data
- wrap the excerpt around it
- view
<!-- ==================== -->
<ExternProtoDeclare appinfo='Reads waypoints and
legSpeeds/legDurations/defaultSpeed to provide a customizable
position/orientation interpolator.' name='WaypointInterpolator'
url='
"../../../Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator"
"https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator"
"../../../Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator"
"https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator"'>
<!-- Priority of use: legSpeeds (m/sec), legDurations
(seconds), defaultSpeed (m/sec) -->
<field accessType='initializeOnly' appinfo='Short description
of what is animated by this WaypointInterpolator.' name='description'
type='SFString'/>
<field accessType='initializeOnly' appinfo='Waypoints being
traversed with interpolation of intermediate positions and
orientations.' name='waypoints' type='MFVec3f'/>
<field accessType='inputOnly' appinfo='Add another single
waypoint to array of waypoints recalculate interpolator values.'
name='add_waypoint' type='SFVec3f'/>
<field accessType='inputOnly' appinfo='Replace all waypoints
recalculate interpolator values.' name='set_waypoints' type='MFVec3f'/>
<field accessType='initializeOnly' appinfo='Whether to pitch
child geometry (such as a vehicle) up or down to match vertical slope'
name='pitchUpDownForVerticalWaypoints' type='SFBool'/>
<field accessType='initializeOnly' appinfo='Units m/sec. If
used array lengths for legSpeeds and legDurations must be one less than
number of waypoints.' name='legSpeeds' type='MFFloat'/>
<field accessType='initializeOnly' appinfo='Units in seconds.
If used array lengths for legSpeeds and legDurations must be one less
than number of waypoints.' name='legDurations' type='MFTime'/>
<field accessType='initializeOnly' appinfo='Units m/sec.'
name='defaultSpeed' type='SFFloat'/>
<field accessType='initializeOnly' appinfo='turningRate
(degrees/second) also determines standoff distance prior to waypoint
where turn commences. If 0 turns are instantaneous.' name='turningRate'
type='SFFloat'/>
<field accessType='outputOnly' appinfo='Output calculation
summing all leg durations, useful for setting TimeSensor cycleInterval.
Units in seconds.' name='totalDuration' type='SFTime'/>
<!-- interpolation fields -->
<field accessType='inputOnly' appinfo='exposed
PositionInterpolator and OrientationInterpolator setting'
name='set_fraction' type='SFFloat'/>
<field accessType='outputOnly' appinfo='exposed
PositionInterpolator setting' name='position_changed' type='SFVec3f'/>
<field accessType='outputOnly' appinfo='exposed
OrientationInterpolator setting' name='orientation_changed'
type='SFRotation'/>
<!-- display-related fields -->
<field accessType='inputOutput' appinfo='default color for
non-active line segments' name='lineColor' type='SFColor'/>
<field accessType='inputOutput'
appinfo='highlightSegmentColors must contain two color values for each
endpoint of the highlight segment.' name='highlightSegmentColor'
type='SFColor'/>
<field accessType='inputOutput' appinfo='1.0 is completely
transparent, 0.0 is completely opaque.' name='transparency' type='SFFloat'/>
<field accessType='initializeOnly' appinfo='allowed values:
none; waypoints (produce labels at each waypoint); or interpolation
(produce single moving label at interpolator time course speed
location)' name='labelDisplayMode' type='SFString'/>
<field accessType='initializeOnly' appinfo='allowed values:
altitude depth (negate Y value) none' name='heightLabel' type='SFString'/>
<field accessType='initializeOnly' appinfo='heightLabel
relative location' name='labelOffset' type='SFVec3f'/>
<field accessType='initializeOnly' appinfo='heightLabel text
size' name='labelFontSize' type='SFFloat'/>
<field accessType='initializeOnly' appinfo='heightLabel text
color' name='labelColor' type='SFColor'/>
<field accessType='initializeOnly' appinfo='enable console
output to trace script computations and prototype progress'
name='traceEnabled' type='SFBool'/>
<field accessType='initializeOnly' appinfo='Output the number
of waypoints totalDistance and totalDuration to console upon
initialization' name='outputInitializationComputations' type='SFBool'/>
<field accessType='inputOutput' appinfo='default color for
vertical drop-line segments' name='verticalDropLineColor' type='SFColor'/>
<field accessType='inputOutput' appinfo='1.0 is completely
transparent 0.0 is completely opaque.'
name='verticalDropLineTransparency' type='SFFloat'/>
</ExternProtoDeclare>
<!-- Only one copy of a given ExternProtoDeclare is needed in a
scene. Multiple ProtoInstance nodes can be created like the following -->
<ProtoInstance DEF='WaypointInterpolatorExample'
name='WaypointInterpolator'>
<fieldValue name='description' value='TrackBuilder'/>
<!-- Priority of use: legSpeeds (m/sec), legDurations
(seconds), defaultSpeed (m/sec) -->
<fieldValue name='waypoints' value='-5 0 0 5 2 0 5 5 -10 4.9
2 -10 -5 0 -10 -5 0 0 -5.5 0 1.5 -7 0.5 2 -8 0 0 -5 0 0'/>
<fieldValue name='pitchUpDownForVerticalWaypoints'
value='false'/>
<fieldValue name='legDurations' value='1 2 3 1 2 3 1 2 3'/>
<fieldValue name='legSpeeds' value='2 4 2 2 4 1 1 1 1'/>
<fieldValue name='defaultSpeed' value='5'/>
<fieldValue name='turningRate' value='90'/>
<fieldValue name='lineColor' value='1 0 0'/>
<fieldValue name='highlightSegmentColor' value='0.2 0.2 1'/>
<fieldValue name='transparency' value='0'/>
<fieldValue name='labelDisplayMode' value='interpolation'/>
<fieldValue name='heightLabel' value='altitude'/>
<fieldValue name='labelOffset' value='0 1.2 0'/>
<fieldValue name='labelFontSize' value='0.5'/>
<fieldValue name='labelColor' value='0.3 0.9 0.3'/>
<fieldValue name='traceEnabled' value='false'/>
<fieldValue name='outputInitializationComputations'
value='true'/>
</ProtoInstance>
<!-- Example use:
https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorExample.x3d
-->
<!-- ==================== -->
all the best, Don
--
Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu
Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman
More information about the X3D-Public
mailing list