def loadOceanScene(): # Add environments. globals_oa.ocean = vizfx.addChild(globals_oa.FILE_PATH_TO_FLOOR) globals_oa.ocean.setAnimationSpeed(0.5) if globals_oa.sfLevel == SHOCK_FACTOR_LEVELS['LOW']: globals_oa.terrainZone1 = vizfx.addChild(globals_oa.FILE_PATH_TO_ZONE1_LOW) globals_oa.terrainZone3 = vizfx.addChild(globals_oa.FILE_PATH_TO_ZONE3_HIGH) print "Zone 1 model loaded = " + str(globals_oa.FILE_PATH_TO_ZONE1_LOW) print "Zone 3 model loaded = " + str(globals_oa.FILE_PATH_TO_ZONE3_HIGH) elif globals_oa.sfLevel == SHOCK_FACTOR_LEVELS['HIGH']: globals_oa.terrainZone1 = vizfx.addChild(globals_oa.FILE_PATH_TO_ZONE1_HIGH) globals_oa.terrainZone3 = vizfx.addChild(globals_oa.FILE_PATH_TO_ZONE3_LOW) print "Zone 1 model loaded = " + str(globals_oa.FILE_PATH_TO_ZONE1_HIGH) print "Zone 3 model loaded = " + str(globals_oa.FILE_PATH_TO_ZONE3_LOW) globals_oa.terrainZone2 = vizfx.addChild(globals_oa.FILE_PATH_TO_ZONE2) globals_oa.currentZoneNumber = 1 userheight = globals_oa.head.getPosition()[1] globals_oa.user.setPosition(ZONE1_POS[0], userheight, ZONE1_POS[2]) #Init VFX worldvizcode.initialize() #Release the porgyyyyyyy schooling.initialize() #underwater collision transport_vhil.initializeOceanFloorCollision() transport_vhil.initializeOceanSurfaceCollision()
def enableOceanScene(): globals_oa.ocean.enable(viz.RENDERING) globals_oa.terrainZone1.enable(viz.RENDERING) globals_oa.terrainZone2.enable(viz.RENDERING) globals_oa.terrainZone3.enable(viz.RENDERING) #Release the porgyyyyyyy schooling.initialize() userheight = globals_oa.OCEAN_FLOOR_PLANE_POS[1] globals_oa.user.setPosition(ZONE1_POS[0], userheight, ZONE1_POS[2])
def goCG(): bgcolor = [0.15*1.2, 0.67*1.2, 0.95*1.2] viz.clearcolor(bgcolor) global skipKey, egg flagPile = globals_oa.terrainZone1.getChild('flagPile.OSGB', viz.CHILD_REPLACE_TRANSFORM) fishZone1 = schooling.initialize(1) # yield viztask.waitEvent(globals_oa.VIDEO_END_EVENT) # loadStuffAtStartAndHideThemALL() vizact.onsensorup(globals_oa.rhViveTracker, steamvr.BUTTON_TRIGGER, printRightHandPosition) vizact.onsensorup(globals_oa.lhViveTracker, steamvr.BUTTON_TRIGGER, printLeftHandPosition) globals_oa.terrainZone1.visible(viz.ON) globals_oa.ocean.visible(viz.ON) # schooling.hidePercentage(0) # schooling.chromis_chromis.hidePercentage(0) # schooling.diplodus_annularis.hidePercentage(0) # schooling.labrus_viridis.hidePercentage(0) # schooling.sarpa_salpa.hidePercentage(0) # schooling.show(fishZone1) # fog = vizfx.addFogEffect(colorRamp=viz.addTexture(globals_oa.MODEL_DIRECTORY + 'FogRamp.tif'), height=1, density=(.09)) # fog = vizfx.addFogEffect(colorRamp=viz.addTexture(globals_oa.MODEL_DIRECTORY + 'FogRamp.tif'), height=1, density=(10)) # vizfx.getComposer().addEffect(fog) # viz.MainScene.enable(viz.FOG, op=viz.OP_ROOT) viz.fogcolor(viz.AZURE) viz.fog(0.025) # worldvizcode.initVFXforDC(globals_oa.terrainZone1) # should moved into loadAndHide? worldvizcode.startEffects(globals_oa.terrainZone1) #not needed? #positioning the user on the terrain # offsetting the user on the terrain y_offset = -1.5 userPos = globals_oa.user.getPosition(viz.ABS_GLOBAL) globals_oa.user.setPosition([userPos[0], y_offset, userPos[2]]) #####** Healthy CG zone fades in** # terrain1Child = globals_oa.terrainZone1.getChild('Terrain_Zone009') # posToMoveUserTo = terrain1Child.getBoundingBox().center # print "posToMoveUserTo = " + str(posToMoveUserTo) if globals_oa.fader is None: globals_oa.fader = View_Fader.addFader(fadeTime=5) globals_oa.fader.fadeIn() ##### #This is a healthy reef, where carbon dioxide has not yet altered seawater chemistry. # ##### #When scientists measure the health and biodiversity of a reef, they perform something called a species count. ##### #Today, you will be counting the number of sea snails on this part of the reef. Look at your right hand # globals_oa.TRANSITION_TO_CG.play() yield viztask.waitAny([viztask.waitTime(10), skipKey]) globals_oa.CG_SCENE1_1.play() # getAllChildrenZone1 = viz.MainScene.getChildren(all=True) def fadeAllZone1(): globals_oa.terrainZone1.alpha(0) globals_oa.terrainZone1.visible(viz.ON) worldvizcode.stopEffects() viz.fog(0) fadeInZone1 = vizact.fadeTo(1, time=2) yield globals_oa.terrainZone1.addAction(fadeInZone1) # for child in getAllChildrenZone1: # child.addAction(fadeInZone1) yield viztask.waitAny([viztask.waitTime(17), skipKey]) # globals_oa.CG_SCENE1_1.stop() #*participant sees 3D model of sea snail rotating like a hologram* # if globals_oa.rhViveTracker is not None: # vizact.ontimer2(0.004, 25, scavengerhunt.vibrateHandController, 2) # leftHandVibrateTimer.setEnabled(True) # rightHandVibrateTimer.setEnabled(True) rotatingSnail.visible(viz.ON) snailLink = None vizact.ontimer2(.004, 50, vibrateRightHand) if globals_oa.rhViveTracker is not None: snailLink = viz.link(globals_oa.rhViveTracker, rotatingSnail) snailLink.setOffset([0.0, y_offset, 0.0]) snailLink.preTrans([0.01,-0.03,-0.13]) snailLink.preEuler([0,0,180]) yield viztask.waitTime(11) ##### #*hologram disappears, species count begins* if snailLink is not None: snailLink.remove() rotatingSnail.visible(viz.OFF) rotatingSnail.remove() ##### flashing the flag pile ###### egg.visible(viz.ON) flashOn = vizact.fadeTo(1, time=1, interpolate=vizact.easeInOut) flashOff = vizact.fadeTo(0, time=1, interpolate=vizact.easeInOut) flashSequence = vizact.sequence(flashOn, flashOff, 5) egg.add(flashSequence) yield viztask.waitTime(11) globals_oa.CG_SCENE1_2.play() print "playing CG_SCENE1_2 now" # yield viztask.waitAny([viztask.waitMediaEnd(globals_oa.CG_SCENE1_2), skipKey]) yield viztask.waitAny([viztask.waitTime(17), skipKey]) # scavengerhunt.initialize(globals_oa.terrainZone1, globals_oa.filePathToSpeciesForScavengerHuntInZone1) # scavengerhunt.hideBasketAndStuffAttachedToIt() print "waiting for the species hunt end event, or for a timer to run out" # yield viztask.waitAny([viztask.waitEvent(scavengerhunt.ZONE1_OVER_EVENT), viztask.waitTime(60), skipKey]) yield viztask.waitAny([viztask.waitTime(35), skipKey]) print "species hunt is over" # leftHandVibrateTimer.setEnabled(False) # rightHandVibrateTimer.setEnabled(False) # scavengerhunt.endScavengerHunt() # yield viztask.waitEvent(scavengerhunt.ZONE1_OVER_EVENT) # scavengerhunt.disableGrabber() #waiting for the audio to end print "waiting for the narration to end" yield viztask.waitAny([viztask.waitTime(5), skipKey]) #healthy zone fading out # print "fading out from zone-1 begin" # globals_oa.fader.fadeOutTask() globals_oa.fader.fadeOut() # print "fading out from zone-1 complete" yield viztask.waitAny([viztask.waitTime(5), skipKey]) ##### #**Unhealthy CG zone fades in** # globals_oa.terrainZone1.disable(viz.RENDERING) globals_oa.terrainZone1.visible(viz.OFF) if globals_oa.lhModelFlag is not None: globals_oa.lhModelFlag.visible(viz.OFF) if globals_oa.rhModelFlag is not None: globals_oa.rhModelFlag.visible(viz.OFF) schooling.hide(fishZone1) # userPos = globals_oa.user.getPosition() # globals_oa.user.setPosition(userPos[0] + globals_oa.zone3_X_offset, userPos[1], userPos[2]) # globals_oa.user.setPosition(userPos[0], userPos[1], userPos[2]) # globals_oa.basket.setPosition(globals_oa.basketPosInCGscene3) # globals_oa.terrainZone3.setPosition(-60.73, 0.0, 0.0) # scavengerhunt.hideBasketAndStuffAttachedToIt() globals_oa.terrainZone3.visible(viz.ON) # worldvizcode.stopEffects() worldvizcode.startEffects(globals_oa.terrainZone3) # schooling.show(fishZone2) # print "fading into zone-3 begin" # globals_oa.fader.fadeInTask() globals_oa.fader.fadeIn() # print "fading into zone-3 complete" ##### Observe the changes that have occurred as acidity has increased. Reach out and touch one of the streams of bubbles rising from the sea floor globals_oa.CG_SCENE2_1.play() print "playing CG_SCENE2_1 now" # yield viztask.waitAny([viztask.waitMediaEnd(globals_oa.CG_SCENE2_1), skipKey]) #adding proximity handling for touching the bubbles global bubbleVibratorManager bubbleVibratorManager = vizproximity.Manager() # bubbleVibratorManager.setDebug(viz.ON) vizact.onkeydown('b', bubbleVibratorManager.setDebug, viz.TOGGLE) #adding bounding box sensors around the bubbles updateVibrationSensors() # vizact.onkeydown('u',updateVibrationSensors) #adding boxes around the hands as targets global rhandtar, lhandtar # rhsphere = vizshape.addSphere(radius = 0.07) rhsphere = vizshape.addBox(size=(0.1,0.1,0.3)) rhsphere.setParent(globals_oa.rightHand) rhsphere.setPosition([0,0,-0.15]) rhsphere.disable(viz.RENDERING) # lhsphere = vizshape.addSphere(radius = 0.07) lhsphere = vizshape.addBox(size=(0.1,0.1,0.3)) lhsphere.setParent(globals_oa.leftHand) lhsphere.setPosition([0,0,-0.15]) lhsphere.disable(viz.RENDERING) # if globals_oa.rhModel is not None: rhandtar = vizproximity.Target(rhsphere)#globals_oa.rhModel) # if globals_oa.lhModel is not None: lhandtar = vizproximity.Target(lhsphere)#globals_oa.lhModel) bubbleVibratorManager.addTarget(rhandtar) bubbleVibratorManager.addTarget(lhandtar) bubbleVibratorManager.onEnter(None, vibrateHandInBubbles) bubbleVibratorManager.onExit(None, stopVibrationOfHandInBubbles) print "*********************************** SENSORS ADDED FOR VIBRATING BUBBLES ***********************************" yield viztask.waitAny([viztask.waitTime(globals_oa.CG_SCENE2_1.getDuration()), skipKey]) ##### **wait until participant touches a stream of bubbles** ##### ** repeat last sentence until they do so** #####The vents here in Ischia are releasing carbon dioxide, which is making the water more acidic. #####You study this part of the reef to predict how human carbon dioxide emissions will affect #####our world’s oceans and the species that live within them. #####Look at your right hand. globals_oa.CG_SCENE2_2.play() print "playing CG_SCENE2_2 now" yield viztask.waitAny([viztask.waitTime(16), skipKey]) if globals_oa.rhViveTracker is not None: corrodedRotatingSnail.visible(viz.ON) vizact.ontimer2(.004, 50, vibrateRightHand) print '***********linking cooroded snail' snailLink = viz.link(globals_oa.rhViveTracker, corrodedRotatingSnail) snailLink.setOffset([0.0, y_offset, 0.0]) snailLink.preTrans([0.01, -0.03, -0.13]) snailLink.preEuler([0, 0, 180]) snailLink.setMask(viz.LINK_POS) spinForever = vizact.spin(0,1,0, 90, dur = viz.FOREVER) corrodedRotatingSnail.runAction(spinForever) yield viztask.waitTime(10) corrodedRotatingSnail.visible(viz.OFF) yield viztask.waitAny([viztask.waitTime(40), skipKey]) if bubbleVibratorManager is not None: bubbleVibratorManager.clearSensors() bubbleVibratorManager.clearTargets() if rightHandVibrateTimer is not None: rightHandVibrateTimer.setEnabled(False) if leftHandVibrateTimer is not None: leftHandVibrateTimer.setEnabled(False) globals_oa.finalTransitionSound.play() # yield viztask.waitTime(1) bubbleStreams = globals_oa.terrainZone3.getChild('zone2_smaller.OSGB') bubbleStreams.setAnimationSpeed(0.1) globals_oa.UNDERWATER_AMBIENT.stop() yield viztask.waitTime(3) globals_oa.FINAL_SCENE.play() yield viztask.waitAny([viztask.waitTime(10), skipKey]) fadeInSphere = vizact.fadeTo(0, time=2) fadeOutSphere = vizact.fadeTo(1, time=2) def fadingFadeThing(): yield viztask.waitTime(1) globals_oa.fadingSphere.addAction(fadeOutSphere) yield viztask.waitActionEnd(globals_oa.fadingSphere, fadeOutSphere) globals_oa.terrainZone3.visible(viz.OFF) globals_oa.ocean.visible(viz.OFF) # globals_oa.terrainZone1.visible(viz.ON) globals_oa.globeScene.enable(viz.RENDERING) globals_oa.user.setPosition(0.0,-0.05,0.0) viz.fogcolor(viz.BLACK) viz.fog(0.2) viz.clearcolor(viz.BLACK) globals_oa.fader.fadeOutTask() globals_oa.fader.fadeInTask() # yield viztask.waitTime(2) yield globals_oa.fadingSphere.addAction(fadeInSphere) viztask.schedule(fadingFadeThing) globals_oa.fader.fadeOutTask()