#################################################################################################### # # Invoking X3D model self-test: # # $ python House.py # # Python package x3d.py package is available on PyPI for import. # This approach simplifies Python X3D deployment and use. # https://pypi.org/project/x3d # # Installation: # pip install x3d # or # python -m pip install x3d # # Developer options for loading x3d package in other Python programs: # # from x3d import * # preferred approach, terser source that avoids x3d.* class prefixes # # or # import x3d # traditional way to subclass x3d package, all classes require x3d.* prefix, # # but python source is very verbose, for example x3d.Material x3d.Shape etc. # # X3dToPython.xslt stylesheet insertPackagePrefix=true supports this option. # #################################################################################################### from x3d import * newModel=X3D(profile='Immersive',version='3.0', head=head( children=[ meta(content='House.x3d',name='title'), meta(content='Final Project MV4204',name='description'), meta(content='Seksit Siripala',name='creator'), meta(content='5 September 2002',name='created'), meta(content='20 October 2019',name='modified'), meta(content='https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/House.x3d',name='identifier'), meta(content='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit',name='generator'), meta(content='../../license.html',name='license')]), Scene=Scene( children=[ WorldInfo(title='House.x3d'), Transform( children=[ Background(backUrl=["mountns.png","https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/mountns.png"],frontUrl=["mountns.png","https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/mountns.png"],groundAngle=[1.309,1.570796],groundColor=[(0.1,0.1,0),(0.2,0.6,0.4),(0.2,0.7,0.3)],leftUrl=["mountns.png","https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/mountns.png"],rightUrl=["mountns.png","https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/mountns.png"],skyAngle=[1.309,1.571],skyColor=[(0,0.2,0.7),(0,0.5,1),(1,1,1)])]), Viewpoint(description='front',orientation=(0,1,0,-0.57),position=(-15,3,25)), Viewpoint(description='fromLeft',orientation=(0.07,1,0.07,-1.3),position=(-15,4,-2.5)), Viewpoint(description='fromRight',orientation=(0,1,0,1.57),position=(35,4,2.5)), Viewpoint(description='inside1',orientation=(0,1,0,1.20),position=(8.9,2.0,-3.2)), Viewpoint(description='inside2',orientation=(0,1,0,0.50),position=(-0.15,1.3,-7.5)), Group(DEF='Front1', children=[ Transform(DEF='wall1',translation=(-2.0,1,-3.0), children=[ Shape(DEF='part1', geometry=Box(size=(2,2,0.1)), appearance=Appearance(DEF='wallAppearance', material=Material(), texture=ImageTexture(DEF='yellowBrick',url=["yellowBrick.jpg","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/yellowBrick.jpg"])))]), Transform(DEF='DOOR',center=(0.5,0,0),translation=(-0.5,1,-3.0), children=[ Shape(DEF='door', geometry=Box(size=(1,2,0.1)), appearance=Appearance( material=Material(diffuseColor=(0.8,0.5,0)), texture=ImageTexture(DEF='wood',url=["wood.jpg","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/wood.jpg"]))), Transform(translation=(-0.4,0,0.05), children=[ Shape(DEF='knubOut', geometry=Sphere(DEF='doorKnub',radius=0.05), appearance=Appearance(DEF='knub_ap', material=Material(),)), TimeSensor(DEF='Clock',cycleInterval=3), OrientationInterpolator(DEF='doorPathOpen',key=[0,0.34,0.68,1],keyValue=[(0,1,0,0),(0,1,0,-0.7),(0,1,0,-1.0),(0,1,0,-1.2)]), TouchSensor(DEF='touchOpen',description='touch to open'), ROUTE(fromField='touchTime',fromNode='touchOpen',toField='set_startTime',toNode='Clock'), ROUTE(fromField='fraction_changed',fromNode='Clock',toField='set_fraction',toNode='doorPathOpen'), ROUTE(fromField='value_changed',fromNode='doorPathOpen',toField='set_rotation',toNode='DOOR')]), Transform(translation=(-0.4,0,-0.05), children=[ Shape(USE='knubOut'), TimeSensor(DEF='ClockClose',cycleInterval=2), OrientationInterpolator(DEF='doorPathClose',key=[0,0.34,0.68,1],keyValue=[(0,1,0,-1.2),(0,1,0,-1.0),(0,1,0,-0.7),(0,1,0,0)]), TouchSensor(DEF='touchClose',description='touch to close'), ROUTE(fromField='touchTime',fromNode='touchClose',toField='set_startTime',toNode='ClockClose'), ROUTE(fromField='fraction_changed',fromNode='ClockClose',toField='set_fraction',toNode='doorPathClose'), ROUTE(fromField='value_changed',fromNode='doorPathClose',toField='set_rotation',toNode='DOOR')])]), Transform(DEF='wall2',translation=(-1.5,3,-3.0), children=[ Shape(DEF='part2', geometry=Box(size=(3,2,0.1)), appearance=Appearance(DEF='wallpart', material=Material(diffuseColor=(0.8,0.8,0.4)), texture=ImageTexture(USE='yellowBrick')))])]), Group(DEF='Front2', children=[ Transform(translation=(2.25,3.25,0), children=[ Shape(DEF='partFront211', geometry=Box(size=(4.5,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(6.75,3.25,0), children=[ Shape(DEF='partFront212', geometry=Box(size=(4.5,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(2.25,0.75,0), children=[ Shape(DEF='partFront221', geometry=Box(size=(4.5,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(6.75,0.75,0), children=[ Shape(DEF='partFront222', geometry=Box(size=(4.5,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(1.25,2,0), children=[ Shape(DEF='partFront231', geometry=Box(size=(2.5,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(4.5,2,0), children=[ Shape(DEF='partFront232', geometry=Box(size=(2,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(7.75,2,0), children=[ Shape(DEF='partFront233', geometry=Box(size=(2.5,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='WINDOW1',translation=(3,2,0.05), children=[ Shape(DEF='window1', geometry=Box(size=(1,1,0.075)), appearance=Appearance(DEF='windowAppearance', material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(0.4,0,-0.1), children=[ Shape(DEF='window1knubopen', geometry=Sphere(DEF='window1Knub',radius=0.05), appearance=Appearance( material=Material(),))]), PlaneSensor(DEF='window1Slide',description='click and drag to move window',maxPosition=(3,2),minPosition=(2.1,2)), ROUTE(fromField='translation_changed',fromNode='window1Slide',toField='set_translation',toNode='WINDOW1')]), Transform(DEF='WINDOW2',translation=(6,2,0.05), children=[ Shape(DEF='window2', geometry=Box(size=(1,1,0.075)), appearance=Appearance(DEF='windowApp', material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(0.4,0,-0.1), children=[ Shape(DEF='window2knubopen', geometry=Sphere(DEF='window2Knub',radius=0.05), appearance=Appearance( material=Material(),))]), PlaneSensor(DEF='window2Slide',description='click and drag to move window',maxPosition=(6,2),minPosition=(5.1,2)), ROUTE(fromField='translation_changed',fromNode='window2Slide',toField='set_translation',toNode='WINDOW2')])]), Group(DEF='Right', children=[ Transform(DEF='rightwall11',rotation=(0,1,0,1.57),translation=(9,3.25,-1.5), children=[ Shape(DEF='right11', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall12',rotation=(0,1,0,1.57),translation=(9,3.25,-4.5), children=[ Shape(DEF='right12', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall13',rotation=(0,1,0,1.57),translation=(9,3.25,-7.5), children=[ Shape(DEF='right13', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall14',rotation=(0,1,0,1.57),translation=(9,3.25,-10.5), children=[ Shape(DEF='right14', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall21',rotation=(0,1,0,1.57),translation=(9,0.75,-1.5), children=[ Shape(DEF='right21', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall22',rotation=(0,1,0,1.57),translation=(9,0.75,-4.5), children=[ Shape(DEF='right22', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall23',rotation=(0,1,0,1.57),translation=(9,0.75,-7.5), children=[ Shape(DEF='right23', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall24',rotation=(0,1,0,1.57),translation=(9,0.75,-10.5), children=[ Shape(DEF='right24', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall31',rotation=(0,1,0,1.57),translation=(9,2,-1.25), children=[ Shape(DEF='right31', geometry=Box(size=(2.5,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall32',rotation=(0,1,0,1.57),translation=(9,2,-4.5), children=[ Shape(DEF='right32', geometry=Box(size=(2,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall33',rotation=(0,1,0,1.57),translation=(9,2,-7.5), children=[ Shape(DEF='right33', geometry=Box(size=(2,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='rightwall34',rotation=(0,1,0,1.57),translation=(9,2,-10.75), children=[ Shape(DEF='right34', geometry=Box(size=(2.5,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='RIGHTWINDOW1',rotation=(0,1,0,1.57),translation=(9,2,-3), children=[ Shape(DEF='rightwindow1', geometry=Box(size=(1,1,0.075)), appearance=Appearance( material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(-0.4,0,-0.1), children=[ Shape(DEF='rightWindow1KnubOpen', geometry=Sphere(DEF='rightWindow1KnubO',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='rightWindow1Clock'), PositionInterpolator(DEF='rightWindow1Pos',key=[0,0.5,1],keyValue=[(9,2,-3),(9,2,-3.5),(9,2,-3.9)]), TouchSensor(DEF='rightWindow1Open',description='touch to open'), ROUTE(fromField='touchTime',fromNode='rightWindow1Open',toField='set_startTime',toNode='rightWindow1Clock'), ROUTE(fromField='fraction_changed',fromNode='rightWindow1Clock',toField='set_fraction',toNode='rightWindow1Pos'), ROUTE(fromField='value_changed',fromNode='rightWindow1Pos',toField='set_translation',toNode='RIGHTWINDOW1')]), Transform(translation=(-0.4,-0.2,-0.1), children=[ Shape(DEF='rightWindow1KnubClose', geometry=Sphere(DEF='rightWindow1Knub1',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='rightWindow1Clock2'), PositionInterpolator(DEF='rightWindow1Pos2',key=[0,0.5,1],keyValue=[(9,2,-3.9),(9,2,-3.5),(9,2,-3)]), TouchSensor(DEF='rightWindow1Close',description='touch to close'), ROUTE(fromField='touchTime',fromNode='rightWindow1Close',toField='set_startTime',toNode='rightWindow1Clock2'), ROUTE(fromField='fraction_changed',fromNode='rightWindow1Clock2',toField='set_fraction',toNode='rightWindow1Pos2'), ROUTE(fromField='value_changed',fromNode='rightWindow1Pos2',toField='set_translation',toNode='RIGHTWINDOW1')])]), Transform(DEF='RIGHTWINDOW2',rotation=(0,1,0,1.57),translation=(9,2,-6), children=[ Shape(DEF='rightwindow2', geometry=Box(size=(1,1,0.075)), appearance=Appearance( material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(-0.4,0,-0.1), children=[ Shape(DEF='rightWindow2KnubOpen', geometry=Sphere(DEF='rightWindow2KnubO',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='rightWindow2Clock'), PositionInterpolator(DEF='rightWindow2Pos',key=[0,0.5,1],keyValue=[(9,2,-6),(9,2,-6.5),(9,2,-6.9)]), TouchSensor(DEF='rightWindow2Open',description='touch to open'), ROUTE(fromField='touchTime',fromNode='rightWindow2Open',toField='set_startTime',toNode='rightWindow2Clock'), ROUTE(fromField='fraction_changed',fromNode='rightWindow2Clock',toField='set_fraction',toNode='rightWindow2Pos'), ROUTE(fromField='value_changed',fromNode='rightWindow2Pos',toField='set_translation',toNode='RIGHTWINDOW2')]), Transform(translation=(-0.4,-0.2,-0.1), children=[ Shape(DEF='rightWindow2KnubClose', geometry=Sphere(DEF='rightWindow2Knub2',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='rightWindow2Clock2'), PositionInterpolator(DEF='rightWindow2Pos2',key=[0,0.5,1],keyValue=[(9,2,-6.9),(9,2,-6.5),(9,2,-6)]), TouchSensor(DEF='rightWindow2Close',description='touch to close'), ROUTE(fromField='touchTime',fromNode='rightWindow2Close',toField='set_startTime',toNode='rightWindow2Clock2'), ROUTE(fromField='fraction_changed',fromNode='rightWindow2Clock2',toField='set_fraction',toNode='rightWindow2Pos2'), ROUTE(fromField='value_changed',fromNode='rightWindow2Pos2',toField='set_translation',toNode='RIGHTWINDOW2')])]), Transform(DEF='RIGHTWINDOW3',rotation=(0,1,0,1.57),translation=(9,2,-9), children=[ Shape(DEF='rightwindow3', geometry=Box(size=(1,1,0.075)), appearance=Appearance( material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(-0.4,0,-0.1), children=[ Shape(DEF='rightWindow3KnubOpen', geometry=Sphere(DEF='rightWindow3KnubO',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='rightWindow3Clock'), PositionInterpolator(DEF='rightWindow3Pos',key=[0,0.5,1],keyValue=[(9,2,-9),(9,2,-9.5),(9,2,-9.9)]), TouchSensor(DEF='rightWindow3Open',description='touch to open'), ROUTE(fromField='touchTime',fromNode='rightWindow3Open',toField='set_startTime',toNode='rightWindow3Clock'), ROUTE(fromField='fraction_changed',fromNode='rightWindow3Clock',toField='set_fraction',toNode='rightWindow3Pos'), ROUTE(fromField='value_changed',fromNode='rightWindow3Pos',toField='set_translation',toNode='RIGHTWINDOW3')]), Transform(translation=(-0.4,-0.2,-0.1), children=[ Shape(DEF='rightWindow3KnubClose', geometry=Sphere(DEF='rightWindow2KnubC',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='rightWindow3Clock2'), PositionInterpolator(DEF='rightWindow3Pos2',key=[0,0.5,1],keyValue=[(9,2,-9.9),(9,2,-9.5),(9,2,-9)]), TouchSensor(DEF='rightWindow3Close',description='touch to close'), ROUTE(fromField='touchTime',fromNode='rightWindow3Close',toField='set_startTime',toNode='rightWindow3Clock2'), ROUTE(fromField='fraction_changed',fromNode='rightWindow3Clock2',toField='set_fraction',toNode='rightWindow3Pos2'), ROUTE(fromField='value_changed',fromNode='rightWindow3Pos2',toField='set_translation',toNode='RIGHTWINDOW3')])])]), Group(DEF='back', children=[ Transform(DEF='backwall11',translation=(7.5,3.25,-12), children=[ Shape(DEF='back11', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall12',translation=(4.5,3.25,-12), children=[ Shape(DEF='back12', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall13',translation=(1.5,3.25,-12), children=[ Shape(DEF='back13', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall14',translation=(-1.5,3.25,-12), children=[ Shape(DEF='back14', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall21',translation=(7,0.75,-12), children=[ Shape(DEF='back21', geometry=Box(size=(2,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall22',translation=(4.5,0.75,-12), children=[ Shape(DEF='back22', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall23',translation=(1.5,0.75,-12), children=[ Shape(DEF='back23', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall24',translation=(-1.5,0.75,-12), children=[ Shape(DEF='back24', geometry=Box(size=(3,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall31',translation=(7.25,2,-12), children=[ Shape(DEF='back31', geometry=Box(size=(1.5,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backtwall32',translation=(4.5,2,-12), children=[ Shape(DEF='back32', geometry=Box(size=(2,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall33',translation=(1.5,2,-12), children=[ Shape(DEF='back33', geometry=Box(size=(2,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall34',translation=(-1.75,2,-12), children=[ Shape(DEF='back34', geometry=Box(size=(2.5,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='backwall35',translation=(8.5,2.25,-12), children=[ Shape(DEF='back35', geometry=Box(size=(1,0.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='BACKDOOR',center=(0.5,0,0),translation=(8.5,1,-12), children=[ Shape(DEF='backdoor', geometry=Box(size=(1,2,0.1)), appearance=Appearance( material=Material(diffuseColor=(0.8,0.5,0)), texture=ImageTexture(USE='wood'))), Transform(translation=(-0.4,0,-0.05), children=[ Shape(DEF='knubOutB', geometry=Sphere(DEF='doorKnubB',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='ClockBD',cycleInterval=3), OrientationInterpolator(DEF='doorBDPathOpen',key=[0,0.34,0.68,1],keyValue=[(0,1,0,0),(0,1,0,0.7),(0,1,0,1.0),(0,1,0,1.2)]), TouchSensor(DEF='touchOpenBD',description='touch to open'), ROUTE(fromField='touchTime',fromNode='touchOpenBD',toField='set_startTime',toNode='ClockBD'), ROUTE(fromField='fraction_changed',fromNode='ClockBD',toField='set_fraction',toNode='doorBDPathOpen'), ROUTE(fromField='value_changed',fromNode='doorBDPathOpen',toField='set_rotation',toNode='BACKDOOR')]), Transform(translation=(-0.4,0,0.05), children=[ Shape(USE='knubOut'), TimeSensor(DEF='ClockCloseBD',cycleInterval=2), OrientationInterpolator(DEF='doorBDPathClose',key=[0,0.34,0.68,1],keyValue=[(0,1,0,1.2),(0,1,0,1.0),(0,1,0,0.7),(0,1,0,0)]), TouchSensor(DEF='touchCloseBD',description='touch to close'), ROUTE(fromField='touchTime',fromNode='touchCloseBD',toField='set_startTime',toNode='ClockCloseBD'), ROUTE(fromField='fraction_changed',fromNode='ClockCloseBD',toField='set_fraction',toNode='doorBDPathClose'), ROUTE(fromField='value_changed',fromNode='doorBDPathClose',toField='set_rotation',toNode='BACKDOOR')])]), Transform(DEF='BACKWINDOW1',translation=(6,2,-12), children=[ Shape(DEF='backwindow1', geometry=Box(size=(1,1,0.075)), appearance=Appearance( material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(0.4,0,0.1), children=[ Shape(DEF='backWindow1KnubOpen', geometry=Sphere(DEF='backWindow1KnubO',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='backWindow1Clock'), PositionInterpolator(DEF='backWindow1Pos',key=[0,0.5,1],keyValue=[(6,2,-12),(5.5,2,-12),(5.1,2,-12)]), TouchSensor(DEF='backWindow1Open',description='touch to open'), ROUTE(fromField='touchTime',fromNode='backWindow1Open',toField='set_startTime',toNode='backWindow1Clock'), ROUTE(fromField='fraction_changed',fromNode='backWindow1Clock',toField='set_fraction',toNode='backWindow1Pos'), ROUTE(fromField='value_changed',fromNode='backWindow1Pos',toField='set_translation',toNode='BACKWINDOW1')]), Transform(translation=(0.4,-0.2,0.1), children=[ Shape(DEF='backWindow1KnubClose', geometry=Sphere(DEF='rightWindow1KnubC',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='backWindow1Clock2'), PositionInterpolator(DEF='backWindow1Pos2',key=[0,0.5,1],keyValue=[(5.1,2,-12),(5.5,2,-12),(6,2,-12)]), TouchSensor(DEF='backWindow1Close',description='touch to close'), ROUTE(fromField='touchTime',fromNode='backWindow1Close',toField='set_startTime',toNode='backWindow1Clock2'), ROUTE(fromField='fraction_changed',fromNode='backWindow1Clock2',toField='set_fraction',toNode='backWindow1Pos2'), ROUTE(fromField='value_changed',fromNode='backWindow1Pos2',toField='set_translation',toNode='BACKWINDOW1')])]), Transform(DEF='BACKWINDOW2',translation=(3,2,-12), children=[ Shape(DEF='backwindow2', geometry=Box(size=(1,1,0.075)), appearance=Appearance( material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(0.4,0,0.1), children=[ Shape(DEF='backWindow2KnubOpen', geometry=Sphere(DEF='backWindow2KnubO',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='backWindow2Clock'), PositionInterpolator(DEF='backWindow2Pos',key=[0,0.5,1],keyValue=[(3,2,-12),(2.5,2,-12),(2.1,2,-12)]), TouchSensor(DEF='backWindow2Open',description='touch to open'), ROUTE(fromField='touchTime',fromNode='backWindow2Open',toField='set_startTime',toNode='backWindow2Clock'), ROUTE(fromField='fraction_changed',fromNode='backWindow2Clock',toField='set_fraction',toNode='backWindow2Pos'), ROUTE(fromField='value_changed',fromNode='backWindow2Pos',toField='set_translation',toNode='BACKWINDOW2')]), Transform(translation=(0.4,-0.2,0.1), children=[ Shape(DEF='backWindow2KnubClose', geometry=Sphere(DEF='backWindow2KnubC',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='backWindow2Clock2'), PositionInterpolator(DEF='backWindow2Pos2',key=[0,0.5,1],keyValue=[(2.1,2,-12),(2.5,2,-12),(3,2,-12)]), TouchSensor(DEF='backWindow2Close',description='touch to close'), ROUTE(fromField='touchTime',fromNode='backWindow2Close',toField='set_startTime',toNode='backWindow2Clock2'), ROUTE(fromField='fraction_changed',fromNode='backWindow2Clock2',toField='set_fraction',toNode='backWindow2Pos2'), ROUTE(fromField='value_changed',fromNode='backWindow2Pos2',toField='set_translation',toNode='BACKWINDOW2')])]), Transform(DEF='BACKWINDOW3',translation=(0,2,-12), children=[ Shape(DEF='backwindow3', geometry=Box(size=(1,1,0.075)), appearance=Appearance( material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(0.4,0,0.1), children=[ Shape(DEF='backWindow3KnubOpen', geometry=Sphere(DEF='backWindow3KnubO',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='backWindow3Clock'), PositionInterpolator(DEF='backWindow3Pos',key=[0,0.5,1],keyValue=[(0,2,-12),(-0.5,2,-12),(-0.9,2,-12)]), TouchSensor(DEF='backWindow3Open',description='touch to open'), ROUTE(fromField='touchTime',fromNode='backWindow3Open',toField='set_startTime',toNode='backWindow3Clock'), ROUTE(fromField='fraction_changed',fromNode='backWindow3Clock',toField='set_fraction',toNode='backWindow3Pos'), ROUTE(fromField='value_changed',fromNode='backWindow3Pos',toField='set_translation',toNode='BACKWINDOW3')]), Transform(translation=(0.4,-0.2,0.1), children=[ Shape(DEF='backWindow3KnubClose', geometry=Sphere(DEF='rightWindow3KnubC',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='backWindow3Clock2'), PositionInterpolator(DEF='backWindow3Pos2',key=[0,0.5,1],keyValue=[(-0.9,2,-12),(-0.5,2,-12),(0,2,-12)]), TouchSensor(DEF='backWindow3Close',description='touch to close'), ROUTE(fromField='touchTime',fromNode='backWindow3Close',toField='set_startTime',toNode='backWindow3Clock2'), ROUTE(fromField='fraction_changed',fromNode='backWindow3Clock2',toField='set_fraction',toNode='backWindow3Pos2'), ROUTE(fromField='value_changed',fromNode='backWindow3Pos2',toField='set_translation',toNode='BACKWINDOW3')])])]), Group(DEF='left1', children=[ Transform(DEF='leftwall11',rotation=(0,1,0,1.57),translation=(-3,3.25,-5.25), children=[ Shape(DEF='left11', geometry=Box(size=(4.5,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='leftwall12',rotation=(0,1,0,1.57),translation=(-3,3.25,-9.75), children=[ Shape(DEF='left12', geometry=Box(size=(4.5,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='leftwall21',rotation=(0,1,0,1.57),translation=(-3,0.75,-5.25), children=[ Shape(DEF='left21', geometry=Box(size=(4.5,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='leftwall22',rotation=(0,1,0,1.57),translation=(-3,0.75,-9.75), children=[ Shape(DEF='left22', geometry=Box(size=(4.5,1.5,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='leftwall31',rotation=(0,1,0,1.57),translation=(-3,2,-4.25), children=[ Shape(DEF='left31', geometry=Box(size=(2.5,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='leftwall32',rotation=(0,1,0,1.57),translation=(-3,2,-7.5), children=[ Shape(DEF='left32', geometry=Box(size=(2,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='leftwall33',rotation=(0,1,0,1.57),translation=(-3,2,-10.75), children=[ Shape(DEF='left33', geometry=Box(size=(2.5,1,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='LEFTWINDOW1',rotation=(0,1,0,1.57),translation=(-3,2,-6), children=[ Shape(DEF='leftwindow1', geometry=Box(size=(1,1,0.075)), appearance=Appearance( material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(0.4,0,0.1), children=[ Shape(DEF='leftWindow1KnubOpen', geometry=Sphere(DEF='lefttWindow1KnubO',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='leftWindow1Clock'), PositionInterpolator(DEF='leftWindow1Pos',key=[0,0.5,1],keyValue=[(-3,2,-6),(-3,2,-5.5),(-3,2,-5.1)]), TouchSensor(DEF='leftWindow1Open',description='touch to open'), ROUTE(fromField='touchTime',fromNode='leftWindow1Open',toField='set_startTime',toNode='leftWindow1Clock'), ROUTE(fromField='fraction_changed',fromNode='leftWindow1Clock',toField='set_fraction',toNode='leftWindow1Pos'), ROUTE(fromField='value_changed',fromNode='leftWindow1Pos',toField='set_translation',toNode='LEFTWINDOW1')]), Transform(translation=(0.4,-0.2,0.1), children=[ Shape(DEF='leftWindow1KnubClose', geometry=Sphere(DEF='leftWindow1Knub2',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='leftWindow1Clock2'), PositionInterpolator(DEF='leftWindow1Pos2',key=[0,0.5,1],keyValue=[(-3,2,-5.1),(-3,2,-5.5),(-3,2,-6)]), TouchSensor(DEF='leftWindow1Close',description='touch to close'), ROUTE(fromField='touchTime',fromNode='leftWindow1Close',toField='set_startTime',toNode='leftWindow1Clock2'), ROUTE(fromField='fraction_changed',fromNode='leftWindow1Clock2',toField='set_fraction',toNode='leftWindow1Pos2'), ROUTE(fromField='value_changed',fromNode='leftWindow1Pos2',toField='set_translation',toNode='LEFTWINDOW1')])]), Transform(DEF='LEFTWINDOW2',rotation=(0,1,0,1.57),translation=(-3,2,-9), children=[ Shape(DEF='leftwindow2', geometry=Box(size=(1,1,0.075)), appearance=Appearance( material=Material(diffuseColor=(0.7,0.9,0.9),transparency=0.5))), Transform(translation=(0.4,0,0.1), children=[ Shape(DEF='leftWindow2KnubOpen', geometry=Sphere(DEF='lefttWindow2KnubO',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='leftWindow2Clock'), PositionInterpolator(DEF='leftWindow2Pos',key=[0,0.5,1],keyValue=[(-3,2,-9),(-3,2,-8.5),(-3,2,-8.1)]), TouchSensor(DEF='leftWindow2Open',description='touch to open'), ROUTE(fromField='touchTime',fromNode='leftWindow2Open',toField='set_startTime',toNode='leftWindow2Clock'), ROUTE(fromField='fraction_changed',fromNode='leftWindow2Clock',toField='set_fraction',toNode='leftWindow2Pos'), ROUTE(fromField='value_changed',fromNode='leftWindow2Pos',toField='set_translation',toNode='LEFTWINDOW2')]), Transform(translation=(0.4,-0.2,0.1), children=[ Shape(DEF='leftWindow2KnubClose', geometry=Sphere(DEF='rightWindow2Knub1',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='leftWindow2Clock2'), PositionInterpolator(DEF='leftWindow2Pos2',key=[0,0.5,1],keyValue=[(-3,2,-8.1),(-3,2,-8.5),(-3,2,-9)]), TouchSensor(DEF='leftWindow2Close',description='touch to close'), ROUTE(fromField='touchTime',fromNode='leftWindow2Close',toField='set_startTime',toNode='leftWindow2Clock2'), ROUTE(fromField='fraction_changed',fromNode='leftWindow2Clock2',toField='set_fraction',toNode='leftWindow2Pos2'), ROUTE(fromField='value_changed',fromNode='leftWindow2Pos2',toField='set_translation',toNode='LEFTWINDOW2')])])]), Group(DEF='left2', children=[ Transform(DEF='left2wall11',rotation=(0,1,0,1.57),translation=(0,3,-1.5), children=[ Shape(DEF='left2wall1', geometry=Box(size=(3,2,0.1)), appearance=Appearance(DEF='left2wall1Appearance', material=Material(), texture=ImageTexture(USE='yellowBrick')))]), Transform(DEF='left2wall12',rotation=(0,1,0,1.57),translation=(0,1,-1.5), children=[ Shape(DEF='left2wall2', geometry=Box(size=(3,2,0.1)), appearance=Appearance(DEF='left2wall2Appearance', material=Material(), texture=ImageTexture(USE='yellowBrick')))])]), Group(DEF='FLOOR', children=[ Transform(DEF='floor1',translation=(4.5,0.005,-6), children=[ Shape(DEF='floorshape1', geometry=Box(size=(9,0.01,12)), appearance=Appearance(DEF='floorappearance', material=Material(diffuseColor=(0.9,0.9,0.9))))]), Transform(DEF='floor2',translation=(-1.5,0.005,-7.5), children=[ Shape(DEF='floorshape2', geometry=Box(size=(3,0.01,9)), appearance=Appearance(USE='floorappearance'))])]), Group(DEF='INSIDE', children=[ Transform(translation=(-1.25,1,-7.5), children=[ Shape(DEF='wall1roomleft', geometry=Box(size=(3.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(-0.75,3,-7.5), children=[ Shape(DEF='left', geometry=Box(size=(4.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(rotation=(0,1,0,1.57),translation=(1.5,3,-9.75), children=[ Shape( geometry=Box(size=(4.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(rotation=(0,1,0,1.57),translation=(1.5,1,-9.75), children=[ Shape( geometry=Box(size=(4.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='DOORROOMLEFT',center=(0.5,0,0),translation=(1,1,-7.5), children=[ Shape(DEF='doorroomleft', geometry=Box(size=(1,2,0.1)), appearance=Appearance( material=Material(diffuseColor=(0.8,0.5,0)), texture=ImageTexture(USE='wood'))), Transform(translation=(-0.4,0,0.05), children=[ Shape(USE='knubOut'), TimeSensor(DEF='Clockdoorroomleft',cycleInterval=3), OrientationInterpolator(DEF='doorroomleftPathOpen',key=[0,0.34,0.68,1],keyValue=[(0,1,0,0),(0,1,0,-0.7),(0,1,0,-1.0),(0,1,0,-1.2)]), TouchSensor(DEF='touchOpenroomleft',description='touch to open'), ROUTE(fromField='touchTime',fromNode='touchOpenroomleft',toField='set_startTime',toNode='Clockdoorroomleft'), ROUTE(fromField='fraction_changed',fromNode='Clockdoorroomleft',toField='set_fraction',toNode='doorroomleftPathOpen'), ROUTE(fromField='value_changed',fromNode='doorroomleftPathOpen',toField='set_rotation',toNode='DOORROOMLEFT')]), Transform(translation=(-0.4,0,-0.05), children=[ Shape(USE='knubOut'), TimeSensor(DEF='ClockCloseroomleft',cycleInterval=2), OrientationInterpolator(DEF='doorroomleftPathClose',key=[0,0.34,0.68,1],keyValue=[(0,1,0,-1.2),(0,1,0,-1.0),(0,1,0,-0.7),(0,1,0,0)]), TouchSensor(DEF='touchCloseroomleft',description='touch to close'), ROUTE(fromField='touchTime',fromNode='touchCloseroomleft',toField='set_startTime',toNode='ClockCloseroomleft'), ROUTE(fromField='fraction_changed',fromNode='ClockCloseroomleft',toField='set_fraction',toNode='doorroomleftPathClose'), ROUTE(fromField='value_changed',fromNode='doorroomleftPathClose',toField='set_rotation',toNode='DOORROOMLEFT')])]), Transform(rotation=(0,1,0,1.57),translation=(7,3,-9.70), children=[ Shape( geometry=Box(size=(4.50,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(rotation=(0,1,0,1.57),translation=(7,1,-9.70), children=[ Shape( geometry=Box(size=(4.50,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(4.25,3,-7.5), children=[ Shape( geometry=Box(size=(5.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(3.75,1,-7.5), children=[ Shape( geometry=Box(size=(4.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='DOORROOMRIGHT',center=(0.5,0,0),translation=(6.5,1,-7.5), children=[ Shape(DEF='doorroomright', geometry=Box(size=(1,2,0.1)), appearance=Appearance( material=Material(diffuseColor=(0.8,0.5,0)), texture=ImageTexture(USE='wood'))), Transform(translation=(-0.4,0,0.05), children=[ Shape(USE='knubOut'), TimeSensor(DEF='Clockdoorroomright',cycleInterval=3), OrientationInterpolator(DEF='doorroomrightPathOpen',key=[0,0.34,0.68,1],keyValue=[(0,1,0,0),(0,1,0,-0.4),(0,1,0,-0.7),(0,1,0,-1.0)]), TouchSensor(DEF='touchOpenroomright',description='touch to open'), ROUTE(fromField='touchTime',fromNode='touchOpenroomright',toField='set_startTime',toNode='Clockdoorroomright'), ROUTE(fromField='fraction_changed',fromNode='Clockdoorroomright',toField='set_fraction',toNode='doorroomrightPathOpen'), ROUTE(fromField='value_changed',fromNode='doorroomrightPathOpen',toField='set_rotation',toNode='DOORROOMRIGHT')]), Transform(translation=(-0.4,0,-0.05), children=[ Shape(USE='knubOut'), TimeSensor(DEF='ClockCloseroomright',cycleInterval=2), OrientationInterpolator(DEF='doorroomrightPathClose',key=[0,0.34,0.68,1],keyValue=[(0,1,0,-1.0),(0,1,0,-0.7),(0,1,0,-0.4),(0,1,0,0)]), TouchSensor(DEF='touchCloseroomright',description='touch to close'), ROUTE(fromField='touchTime',fromNode='touchCloseroomright',toField='set_startTime',toNode='ClockCloseroomright'), ROUTE(fromField='fraction_changed',fromNode='ClockCloseroomright',toField='set_fraction',toNode='doorroomrightPathClose'), ROUTE(fromField='value_changed',fromNode='doorroomrightPathClose',toField='set_rotation',toNode='DOORROOMRIGHT')])]), Transform(translation=(2.25,3,-3), children=[ Shape( geometry=Box(size=(4.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(1.75,1,-3), children=[ Shape( geometry=Box(size=(3.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(rotation=(0,1,0,1.57),translation=(4.45,1,-1.50), children=[ Shape( geometry=Box(size=(2.90,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(rotation=(0,1,0,1.57),translation=(4.45,3,-1.50), children=[ Shape( geometry=Box(size=(2.90,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='FRONTROOMDOOR',center=(0.5,0,0),translation=(4,1,-3), children=[ Shape(DEF='frontroomdoor', geometry=Box(size=(1,2,0.1)), appearance=Appearance( material=Material(diffuseColor=(0.8,0.5,0)), texture=ImageTexture(USE='wood'))), Transform(translation=(-0.4,0,-0.05), children=[ Shape(DEF='knubOutfrontroom', geometry=Sphere(DEF='doorKnubFR',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='ClockFR',cycleInterval=3), OrientationInterpolator(DEF='doorFRPathOpen',key=[0,0.34,0.68,1],keyValue=[(0,1,0,0),(0,1,0,0.4),(0,1,0,0.7),(0,1,0,0.9)]), TouchSensor(DEF='touchOpenFR',description='touch to open'), ROUTE(fromField='touchTime',fromNode='touchOpenFR',toField='set_startTime',toNode='ClockFR'), ROUTE(fromField='fraction_changed',fromNode='ClockFR',toField='set_fraction',toNode='doorFRPathOpen'), ROUTE(fromField='value_changed',fromNode='doorFRPathOpen',toField='set_rotation',toNode='FRONTROOMDOOR')]), Transform(translation=(-0.4,0,0.05), children=[ Shape(USE='knubOut'), TimeSensor(DEF='ClockCloseFR',cycleInterval=2), OrientationInterpolator(DEF='doorFRPathClose',key=[0,0.34,0.68,1],keyValue=[(0,1,0,0.9),(0,1,0,0.7),(0,1,0,0.4),(0,1,0,0)]), TouchSensor(DEF='touchCloseFR',description='touch to close'), ROUTE(fromField='touchTime',fromNode='touchCloseFR',toField='set_startTime',toNode='ClockCloseFR'), ROUTE(fromField='fraction_changed',fromNode='ClockCloseFR',toField='set_fraction',toNode='doorFRPathClose'), ROUTE(fromField='value_changed',fromNode='doorFRPathClose',toField='set_rotation',toNode='FRONTROOMDOOR')])]), Transform(translation=(5.75,3,-3), children=[ Shape( geometry=Box(size=(2.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(translation=(5.75,1,-3), children=[ Shape( geometry=Box(size=(2.5,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(rotation=(0,1,0,1.57),translation=(6.95,3,-1.50), children=[ Shape( geometry=Box(size=(2.90,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(rotation=(0,1,0,1.57),translation=(6.95,1,-0.95), children=[ Shape( geometry=Box(size=(2.0,2,0.1)), appearance=Appearance(USE='wallAppearance'))]), Transform(DEF='FRONTROOMDOOR2',center=(0.5,0,0),rotation=(0,1,0,1.57),translation=(6.45,1,-2.95), children=[ Shape(DEF='frontroomdoor2', geometry=Box(size=(1,2,0.1)), appearance=Appearance( material=Material(diffuseColor=(0.8,0.5,0)), texture=ImageTexture(USE='wood'))), Transform(translation=(-0.4,0,-0.05), children=[ Shape(DEF='knubOutfrontroom2', geometry=Sphere(DEF='doorKnubFR2',radius=0.05), appearance=Appearance( material=Material(),)), TimeSensor(DEF='ClockFR2',cycleInterval=3), OrientationInterpolator(DEF='doorFR2PathOpen',key=[0,0.34,0.68,1],keyValue=[(0,1,0,0),(0,1,0,0.4),(0,1,0,0.7),(0,1,0,0.9)]), TouchSensor(DEF='touchOpenFR2',description='touch to open'), ROUTE(fromField='touchTime',fromNode='touchOpenFR2',toField='set_startTime',toNode='ClockFR2'), ROUTE(fromField='fraction_changed',fromNode='ClockFR2',toField='set_fraction',toNode='doorFR2PathOpen'), ROUTE(fromField='value_changed',fromNode='doorFR2PathOpen',toField='set_rotation',toNode='FRONTROOMDOOR2')]), Transform(translation=(-0.4,0,0.05), children=[ Shape(USE='knubOut'), TimeSensor(DEF='ClockCloseFR2',cycleInterval=2), OrientationInterpolator(DEF='doorFR2PathClose',key=[0,0.34,0.68,1],keyValue=[(0,1,0,0.9),(0,1,0,0.7),(0,1,0,0.4),(0,1,0,0)]), TouchSensor(DEF='touchCloseFR2',description='touch to close'), ROUTE(fromField='touchTime',fromNode='touchCloseFR2',toField='set_startTime',toNode='ClockCloseFR2'), ROUTE(fromField='fraction_changed',fromNode='ClockCloseFR2',toField='set_fraction',toNode='doorFR2PathClose'), ROUTE(fromField='value_changed',fromNode='doorFR2PathClose',toField='set_rotation',toNode='FRONTROOMDOOR2')])])]), Group(DEF='roofandcelling', children=[ Transform(DEF='roof1',center=(0,4,0),rotation=(1,0,0,1),scale=(1,1,0.01),translation=(3,4.1,-5.8), children=[ Shape(DEF='roofpart1', geometry=Cone(bottomRadius=6.1,height=7.3), appearance=Appearance(DEF='roofapp', material=Material(diffuseColor=(0,0.2,1)), texture=ImageTexture(DEF='wellWall',url=["wellWall.jpg","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/wellWall.jpg"])))]), Transform(DEF='roof2',center=(0,4,0),rotation=(1,0,0,-1),scale=(1,1,0.01),translation=(3,4.1,-6.4), children=[ Shape(USE='roofpart1')]), Transform(DEF='roof3',center=(0,4,0),rotation=(0,0,1,-1),scale=(0.02,1,1),translation=(3.4,4.1,-6.1), children=[ Shape(USE='roofpart1')]), Transform(DEF='roof4',center=(0,4,0),rotation=(0,0,1,1),scale=(0.02,1,1),translation=(2.6,4.1,-6.1), children=[ Shape(USE='roofpart1')]), Transform(DEF='celling1',translation=(3,4.075,-6), children=[ Shape(DEF='celling1shape', geometry=Box(size=(12,0.05,12)), appearance=Appearance(DEF='cellingapp', material=Material(diffuseColor=(0,0.2,1)), texture=ImageTexture(USE='wellWall')))])]), Group( children=[ Transform(translation=(-6,0,0), children=[ Inline(url=["Tree.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Tree.x3d","Tree.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Tree.wrl"])]), Transform(rotation=(0,1,0,-1.57),scale=(0.5,0.5,0.5),translation=(-2.5,0.5,-5.5), children=[ Inline(url=["Desk.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Desk.x3d","Desk.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Desk.wrl"])]), Transform(rotation=(0,1,0,1.57),scale=(0.5,0.5,0.5),translation=(-2.5,1.4,-5.5), children=[ Inline(url=["TV.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/TV.x3d","TV.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/TV.wrl"])]), Transform(rotation=(0,1,0,-3.14),scale=(0.35,0.35,0.35),translation=(1,0.10,-5.5), children=[ Inline(url=["Sofa.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Sofa.x3d","Sofa.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Sofa.wrl"])]), Transform(scale=(0.5,0.5,0.5),translation=(4.5,1,-5.5), children=[ Inline(url=["Table.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Table.x3d","Table.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Table.wrl"])]), Transform(scale=(0.25,0.25,0.25),translation=(5.5,0.50,-5.5), children=[ Inline(DEF='Chair',url=["Chair.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Chair.x3d","Chair.wrl","http://web.nps.navy.mil/~brutzmanChair/Savage/Buildings/HouseSeksitSiripala/Chair.wrl"])]), Transform(rotation=(0,1,0,3.14),scale=(0.25,0.25,0.25),translation=(3.5,0.50,-5.5), children=[ Inline(USE='Chair')]), Transform(rotation=(0,1,0,3.14),scale=(0.40,0.40,0.40),translation=(3.25,0.32,-11), children=[ Inline(DEF='Bed',url=["Bed.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Bed.x3d","Bed.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Bed.wrl"])]), Transform(rotation=(0,1,0,3.14),scale=(0.40,0.40,0.40),translation=(-1.25,0.32,-11), children=[ Inline(USE='Bed')]), Transform(rotation=(0,1,0,1.57),scale=(0.7,0.7,0.7),translation=(7.35,0.35,-8.2), children=[ Inline(url=["Cabinet.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Cabinet.x3d","Cabinet.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Cabinet.wrl"])]), Transform(rotation=(0,1,0,1.57),translation=(7.35,0.75,-9.5), children=[ Inline(url=["Refrigerator.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Refrigerator.x3d","Refrigerator.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Refrigerator.wrl"])]), Transform(rotation=(0,1,0,3.14),scale=(0.25,0.25,0.25),translation=(6,0.75,-0.5), children=[ Inline(url=["Toilet.x3d","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Toilet.x3d","Toilet.wrl","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/Toilet.wrl"]), Sound(DEF='toilet',location=(-0.957652,0.102433,0.970123),minBack=12.0,minFront=12.0,priority=1.0, source=AudioClip(DEF='Sound1clip_5',description='toilet flushing sound',url=["toilet.wav","https://savage.nps.edu/Savage/Buildings/HouseSeksitSiripala/toilet.wav"]))])])]) ) # X3D model complete #################################################################################################### # Self-test diagnostics #################################################################################################### print('Self-test diagnostics for House.py:') if metaDiagnostics(newModel): # built-in utility method in X3D class print(metaDiagnostics(newModel)) # display meta info, hint, warning, error, TODO values in this model # print('check newModel.XML() serialization...') newModelXML= newModel.XML() # test export method XML() for exceptions during export newModel.XMLvalidate() # print(newModelXML) # diagnostic try: # print('check newModel.VRML() serialization...') newModelVRML=newModel.VRML() # test export method VRML() for exceptions during export # print(prependLineNumbers(newModelVRML)) # debug print("Python-to-VRML export of VRML output successful", flush=True) except Exception as err: # usually BaseException # https://stackoverflow.com/questions/18176602/how-to-get-the-name-of-an-exception-that-was-caught-in-python print("*** Python-to-VRML export of VRML output failed:", type(err).__name__, err) if newModelVRML: # may have failed to generate print(prependLineNumbers(newModelVRML, err.lineno)) try: # print('check newModel.JSON() serialization...') newModelJSON=newModel.JSON() # test export method JSON() for exceptions during export # print(prependLineNumbers(newModelJSON)) # debug print("Python-to-JSON export of JSON output successful (under development)") except Exception as err: # usually SyntaxError print("*** Python-to-JSON export of JSON output failed:", type(err).__name__, err) if newModelJSON: # may have failed to generate print(prependLineNumbers(newModelJSON,err.lineno)) print("python House.py load and self-test diagnostics complete.")