| 1 |
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 4.0//EN" "https://www.web3d.org/specifications/x3d-4.0.dtd">
|
| 3 | <X3D profile='Interactive' version='4.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-4.0.xsd'> |
| 4 | <head> |
| 5 | <meta name='title' content=' jaw.x3d '/> |
| 6 | <meta name='description' content='jaw includes mandible (lower jaw or jawbone) and lower teeth'/> |
| 7 | <meta name='creator' content='Don Brutzman'/> |
| 8 | <meta name='created' content='12 March 2026'/> |
| 9 | <meta name='modified' content='23 April 2026'/> |
| 10 | <meta name='reference' content='https://en.wikipedia.org/wiki/Mandible'/> |
| 11 | <meta name='reference' content='https://en.wikipedia.org/wiki/Human_tooth'/> |
| 12 | <meta name='reference' content='United States, https://en.wikipedia.org/wiki/Universal_Numbering_System'/> |
| 13 | <meta name='reference' content='ISO 3950, https://en.wikipedia.org/wiki/FDI_World_Dental_Federation_notation'/> |
| 14 |
<meta name='reference' content='
https://en.wikipedia.org/wiki/FDI_World_Dental_Federation_notation#/media/File:Comparison_of_dental_notations.svg
' |
| 15 | <meta name='reference' content='usage examples https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Medical'/> |
| 16 | <meta name='generator' content='X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit'/> |
| 17 | <meta name='generator' content=' X3D Tidy, https://www.web3d.org/x3d/stylesheets/X3dTidy.html '/> |
| 18 | <meta name='identifier' content=' https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Bones/jaw.x3d '/> |
| 19 | <meta name='license' content='../license.html'/> |
| 20 | </head> |
Event Graph ROUTE Table shows event connections.
-->
<!--
DEF nodes index:
AxesDisplay,
CenterOfRotationForJoint,
HiddenLight,
jaw,
mandible,
tooth_canine_22_33,
tooth_canine_27_43,
tooth_incisor_23_32,
tooth_incisor_24_31,
tooth_incisor_25_41,
tooth_incisor_26_42,
tooth_molar_17_38,
tooth_molar_18_37,
tooth_molar_19_36,
tooth_molar_30_46,
tooth_molar_31_47,
tooth_molar_32_48,
tooth_premolar_20_35,
tooth_premolar_21_34,
tooth_premolar_28_44,
tooth_premolar_29_45,
UserTouchSensor,
UserTouchState
Index for Viewpoint and ViewpointGroup nodes: HiddenViewpoint, ViewFromAbove, ViewFromBehind, ViewFromBelow, ViewFromFront, ViewFromLeft, ViewFromRight, ViewpointGroup_jaw
-->| 21 | <Scene> |
| 22 | <WorldInfo title='jaw.x3d'/> |
| 23 | <Background skyColor='0.858824 1 0.94902'/> |
| 24 | <!-- user hover lights bone and reveals description, user selection/deselection temporarily binds/unbinds close-up hidden viewpoint --> |
| 25 |
<!-- ROUTE information for UserTouchSensor node:
[from isActive to UserTouchState.set_boolean
]
-->
<TouchSensor DEF='UserTouchSensor' description='jaw: mandible and lower teeth'/> |
| 26 | <Transform DEF='jaw' translation='0 1.5954 0'> |
| 27 | <ViewpointGroup DEF='ViewpointGroup_jaw' description='jaw model' retainUserOffsets='true' containerField='children'> |
| 28 | <Viewpoint DEF='ViewFromFront' description='jaw face' nearDistance='0.001' position='0 0 0.4' retainUserOffsets='true'/> |
| 29 | <Viewpoint DEF='ViewFromBehind' description='jaw from left side' nearDistance='0.001' orientation='0 1 0 1.5708' position='0.4 0 0' retainUserOffsets='true'/> |
| 30 | <Viewpoint DEF='ViewFromLeft' description='jaw from behind' nearDistance='0.001' orientation='0 1 0 3.1416' position='0 0 -0.4' retainUserOffsets='true'/> |
| 31 | <Viewpoint DEF='ViewFromRight' description='jaw from right side' nearDistance='0.001' orientation='0 1 0 -1.5708' position='-0.4 0 0' retainUserOffsets='true'/> |
| 32 | <Viewpoint DEF='ViewFromAbove' description='jaw from above' nearDistance='0.001' orientation='1 0 0 -1.5708' position='0 0.4 0' retainUserOffsets='true'/> |
| 33 | <Viewpoint DEF='ViewFromBelow' description='jaw from below' nearDistance='0.001' orientation='1 0 0 1.5708' position='0 -0.4 0' retainUserOffsets='true'/> |
| 34 | </ViewpointGroup> |
| 35 | <!-- nevertheless, TouchSensor interfaces from each of the Inline models are closer, taking priority and overriding this interface --> |
| 36 |
<!-- ROUTE information for UserTouchState node:
[from UserTouchSensor.isActive to set_boolean
]
[from toggle to HiddenViewpoint.set_bind
]
[from toggle to HiddenLight.on
]
[from toggle to CenterOfRotationForJoint.visible
]
-->
<BooleanToggle DEF='UserTouchState' containerField='children'/> |
| 37 | < ROUTE fromNode='UserTouchSensor' fromField='isActive' toNode='UserTouchState' toField='set_boolean'/> |
| 38 |
<!-- ROUTE information for HiddenViewpoint node:
[from UserTouchState.toggle to set_bind
]
-->
<Viewpoint DEF='HiddenViewpoint' nearDistance='0.001' position='0 0 0.3' retainUserOffsets='true'> |
| 39 | <NavigationInfo containerField='navigationInfo' transitionType='"ANIMATE"' type='"EXAMINE"'/> |
| 40 | </Viewpoint> |
| 41 | < ROUTE fromNode='UserTouchState' fromField='toggle' toNode='HiddenViewpoint' toField='set_bind'/> |
| 42 |
<!-- ROUTE information for HiddenLight node:
[from UserTouchState.toggle to on
]
-->
<DirectionalLight DEF='HiddenLight' ambientIntensity='1' color='0.1 0.1 1' on='false'/> |
| 43 | < ROUTE fromNode='UserTouchState' fromField='toggle' toNode='HiddenLight' toField='on'/> |
| 44 |
<!-- ROUTE information for CenterOfRotationForJoint node:
[from UserTouchState.toggle to visible
]
-->
<Transform DEF='CenterOfRotationForJoint' visible='false'> |
| 45 | <!-- insert computations for joint center of rotation here --> |
| 46 |
|
| 47 | </Transform> |
| 48 | < ROUTE fromNode='UserTouchState' fromField='toggle' toNode='CenterOfRotationForJoint' toField='visible'/> |
| 49 | </Transform> |
| 50 | <!-- mandible and teeth, TODO combine and rename --> |
| 51 |
|
| 52 |
|
| 53 | <!-- replaces <Inline DEF='l_molar3lc' url='"l_molar3lc.x3d"'/> <Inline DEF='l_molar3lr' url='"l_molar3lr.x3d"'/> --> |
| 54 |
|
| 55 | <!-- replaces <Inline DEF='l_molar2lc' url='"l_molar2lc.x3d"'/> <Inline DEF='l_molar2lr' url='"l_molar2lr.x3d"'/> --> |
| 56 |
|
| 57 | <!-- replaces <Inline DEF='l_molar1lc' url='"l_molar1lc.x3d"'/> <Inline DEF='l_molar1lr' url='"l_molar1lr.x3d"'/> --> |
| 58 |
|
| 59 | <!-- replaces <Inline DEF='lprem2lc' url='"lprem2lc.x3d"'/> <Inline DEF='lprem2lr' url='"lprem2lr.x3d"'/> --> |
| 60 |
|
| 61 | <!-- replaces <Inline DEF='lprem1lc' url='"lprem1lc.x3d"'/> <Inline DEF='lprem1lr' url='"lprem1lr.x3d"'/> --> |
| 62 |
|
| 63 | <!-- replaces <Inline DEF='l_caninelc' url='"l_caninelc.x3d"'/> <Inline DEF='l_caninelr' url='"l_caninelr.x3d"'/> --> |
| 64 |
|
| 65 | <!-- replaces <Inline DEF='llatinlc' url='"llatinlc.x3d"'/> <Inline DEF='llatinlr' url='"llatinlr.x3d"'/> --> |
| 66 |
|
| 67 | <!-- replaces <Inline DEF='lceninlc' url='"lceninlc.x3d"'/> <Inline DEF='lceninlr' url='"lceninlr.x3d"'/> --> |
| 68 |
|
| 69 | <!-- replaces <Inline DEF='rceninlc' url='"rceninlc.x3d"'/> <Inline DEF='rceninlr' url='"rceninlr.x3d"'/> --> |
| 70 |
|
| 71 | <!-- replaces <Inline DEF='rlatinlc' url='"rlatinlc.x3d"'/> <Inline DEF='rlatinlr' url='"rlatinlr.x3d"'/> --> |
| 72 |
|
| 73 | <!-- replaces <Inline DEF='r_caninelc' url='"r_caninelc.x3d"'/> <Inline DEF='r_caninelr' url='"r_caninelr.x3d"'/> --> |
| 74 |
|
| 75 | <!-- replaces <Inline DEF='"rprem1lc' url='"rprem1lc.x3d"'/> <Inline DEF='rprem1lr' url='"rprem1lr.x3d"'/> --> |
| 76 |
|
| 77 | <!-- replaces <Inline DEF='rprem2lc' url='"rprem2lc.x3d"'/> <Inline DEF='rprem2lr' url='"rprem2lr.x3d"'/> --> |
| 78 |
|
| 79 | <!-- replaces <Inline DEF='r_molar1lc' url='"r_molar1lc.x3d"'/> <Inline DEF='r_molar1lr' url='"r_molar1lr.x3d"'/> --> |
| 80 |
|
| 81 | <!-- replaces <Inline DEF='r_molar2lc' url='"r_molar2lc.x3d"'/> <Inline DEF='r_molar2lr' url='"r_molar2lr.x3d"'/> --> |
| 82 |
|
| 83 | <!-- replaces <Inline DEF='r_molar3lc' url='"r_molar3lc.x3d"'/> <Inline DEF='r_molar3lr' url='"r_molar3lr.x3d"'/> --> |
| 84 | </Scene> |
| 85 | </X3D> |
Event Graph ROUTE Table shows event connections.
-->
<!--
DEF nodes index:
AxesDisplay,
CenterOfRotationForJoint,
HiddenLight,
jaw,
mandible,
tooth_canine_22_33,
tooth_canine_27_43,
tooth_incisor_23_32,
tooth_incisor_24_31,
tooth_incisor_25_41,
tooth_incisor_26_42,
tooth_molar_17_38,
tooth_molar_18_37,
tooth_molar_19_36,
tooth_molar_30_46,
tooth_molar_31_47,
tooth_molar_32_48,
tooth_premolar_20_35,
tooth_premolar_21_34,
tooth_premolar_28_44,
tooth_premolar_29_45,
UserTouchSensor,
UserTouchState
Index for Viewpoint and ViewpointGroup nodes: HiddenViewpoint, ViewFromAbove, ViewFromBehind, ViewFromBelow, ViewFromFront, ViewFromLeft, ViewFromRight, ViewpointGroup_jaw
-->Event Graph ROUTE Table entries with 4 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
|
UserTouchSensor
TouchSensor isActive SFBool |
UserTouchState
BooleanToggle set_boolean SFBool |
then
|
UserTouchState
BooleanToggle toggle SFBool |
HiddenViewpoint
Viewpoint set_bind SFBool |
||
|
then
|
UserTouchState
BooleanToggle toggle SFBool |
HiddenLight
DirectionalLight on SFBool |
||||
|
then
|
UserTouchState
BooleanToggle toggle SFBool |
CenterOfRotationForJoint
Transform visible SFBool |
||||
<!--
Color-coding legend: X3D terminology
<X3dNode DEF='idName' field='value'/>
matches XML terminology
<XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
-->
<!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->