def __init__(self,path,name): self.model = None self.name = name self.path = path if not(SceneManager.doesModelExist(name)): SceneManager.loadPolygonModel(path,name) self.model = SceneManager.getModel(name) SceneManager.addNodeToScene(name,"mainView") else: self.model = SceneManager.getModel(name)
def askForBone(expectedPosition): global CORRECT global verdict global CURRENT global usersAns global correctAns # Set up button buttonZ = polyModel(buttonPath, buttonModel) #buttonPosition = util.addTuple(buttonZ.getPositionOffset(), rbButton.getPositionOffset()) buttonPosition = buttonZ.getPositionOffset() print("buttonPosition: " + str(buttonPosition)) # Set up button hand and navigation hand hand = polyModel(handPath, handButtModel) navHand = polyModel(navPath, handNavModel) print("Waiting for button press") # Wait for button press while (1): #print(" Model: " + str(hand.getPositionOffset())) #print(str(rbButtHand)+" has id: "+str(rbButtHand.getID())) #print(" Rigid: " + str(rbButtHand.getPosition())) handPosition = util.addTuple(hand.getPositionOffset(), rbButtHand.getPosition()) #print("handPosition:" +str(handPosition)) time.sleep(0.1) if (util.isOver(buttonPosition, handPosition, 0.3, 0.3)): # Get the position of the navigation hand and check if it is in the right place navPosition = util.addTuple(navHand.getPositionOffset(), rbNavHand.getPosition()) #print("navPosition: " + str(navPosition)) if (util.isOver(navPosition, expectedPosition, 0.3, 0.3)): CORRECT += 1 verdict = "Correct!" print("Got the correct answer!") else: verdict = "Incorrect" print("Answer was wrong") navRBHand = rbNavHand.getPosition() SceneManager.getModel(greenModel).setPositionOffset(navRBHand[0], navRBHand[1], navRBHand[2]) SceneManager.addNodeToScene(greenModel, "projectorView") # Results tab housekeeping CURRENT += 1 usersAns = str(navPosition) correctAns = str(expectedPosition) break
def addToScene(self,scene): try: SceneManager.addNodeToScene(self.name,scene) except: "something blew up" return
def run(self): old = 0 new = 0 print("Running the Test") # Begin timer startTime = time.time() print("Start Timer") for i in range(ITERATIONS): # Randomly choose a bone. Make sure we don't ask for same bone twice. print("Starting For Loop") while new == old: new = randint(1, 3) print("After While Loop") if new == 1: print("C1") SceneManager.getModel(C1Model).setPositionOffset(0.35, 0, -0.09) SceneManager.addNodeToScene(C1Model, "projectorView") askForBone(C1) SceneManager.removeNodeFromScene(MODEL1, "projectorView") SceneManager.addNodeToScene(C1Ans,"projectorView") time.sleep(4) SceneManager.removeNodeFromScene(C1Ans,"projectorView") SceneManager.removeNodeFromScene(C1Model, "projectorView") elif new == 2: print("T1") SceneManager.getModel(T1Model).setPositionOffset(0.35, 0, -0.09) SceneManager.addNodeToScene(T1Model, "projectorView") askForBone(T1) SceneManager.removeNodeFromScene(MODEL1, "projectorView") SceneManager.addNodeToScene(T1Ans,"projectorView") time.sleep(4) SceneManager.removeNodeFromScene(T1Ans,"projectorView") SceneManager.removeNodeFromScene(T1Model, "projectorView") else: print("L1") # Display text for bone we want in projector view SceneManager.getModel(L1Model).setPositionOffset(0.35, 0, -0.09) SceneManager.addNodeToScene(L1Model, "projectorView") askForBone(L1) SceneManager.removeNodeFromScene(MODEL1, "projectorView") SceneManager.addNodeToScene(L1Ans,"projectorView") time.sleep(4) SceneManager.removeNodeFromScene(L1Ans,"projectorView") SceneManager.removeNodeFromScene(L1Model, "projectorView") old = new SceneManager.removeNodeFromScene(greenModel, "projectorView") SceneManager.addNodeToScene(MODEL1,"projectorView") # Get the time after the 10 iterations endTime = time.time() elapsedTime = endTime - startTime elapsedTime = str(elapsedTime)+" Seconds" # Calculate the accuracy accuracy = str((CORRECT/ITERATIONS) * 100); # Write results to a file date = datetime.datetime.now().strftime("%B %d %I:%M%p") testName = "Skeleton Full" # Terminate the thread when we are done!! self.terminate()
def selectTest(self): # Grab currently displayed test from combo box chosenTest = str(self.combo.currentText()) # Based on displayed test, send model to projectDr if chosenTest == TEST1: model = MODEL1 else: model = MODEL2 # Before we try to add a model, we should make sure one doesn't already exist if SceneManager.doesModelExist(MODEL1) or SceneManager.doesModelExist(MODEL2): title = "A skeleton model is already loaded!" error = "Please wait for current test to finish before attempting to start another." QtGui.QMessageBox.critical(None, title, error, QtGui.QMessageBox.Close) return # We can load the model in projectDr now if model == MODEL1: path = PATH1 else: path = PATH2 # Notify the user that model was successfully loaded. title = "Model Loaded" error = "Model was successfully loaded into ProjectDr." QtGui.QMessageBox.information(None, title, error, QtGui.QMessageBox.Ok) # Send the model to scene manager print("LOADING NEW TEST") # Load Skeleton SceneManager.loadPolygonModel(path, model) #Scale Skeleton SceneManager.getModel(model).setScale(.025,.025,.025) SceneManager.getModel(model).setRotationOffset(0,0,-1,1) SceneManager.getModel(model).setPositionOffset(0.105,0.15,-0.711) SceneManager.addNodeToScene(model,"mainView") SceneManager.addNodeToScene(model,"projectorView") # Load Skeleton C1 Answer SceneManager.loadPolygonModel(C1Ans, C1Ans) #Scale Skeleton SceneManager.getModel(C1Ans).setScale(.025,.025,.025) SceneManager.getModel(C1Ans).setRotationOffset(0,0,-1,1) SceneManager.getModel(C1Ans).setPositionOffset(0.105,0.15,-0.711) SceneManager.addNodeToScene(C1Ans,"mainView") # Load Skeleton T1 Answer SceneManager.loadPolygonModel(T1Ans, T1Ans) #Scale Skeleton SceneManager.getModel(T1Ans).setScale(.025,.025,.025) SceneManager.getModel(T1Ans).setRotationOffset(0,0,-1,1) SceneManager.getModel(T1Ans).setPositionOffset(0.105,0.15,-0.711) SceneManager.addNodeToScene(T1Ans,"mainView") # Load Skeleton SceneManager.loadPolygonModel(L1Ans, L1Ans) #Scale Skeleton SceneManager.getModel(L1Ans).setScale(.025,.025,.025) SceneManager.getModel(L1Ans).setRotationOffset(0,0,-1,1) SceneManager.getModel(L1Ans).setPositionOffset(0.105,0.15,-0.711) SceneManager.addNodeToScene(L1Ans,"mainView") # Start thread for running test! self.thread = WorkThread() self.thread.start() return
if __name__ == '__main__': import sys print("Starting") # Load button and hand models SceneManager.loadPolygonModel(navPath, handNavModel) SceneManager.loadPolygonModel(handPath, handButtModel) SceneManager.loadPolygonModel(buttonPath, buttonModel) SceneManager.loadPolygonModel(greenPath, greenModel) # Scale the Green Circle SceneManager.getModel(greenModel).setScale(0.01, 0.01, 0.01) SceneManager.addNodeToScene(greenModel, "mainView") # Create text but do not load into view SceneManager.loadPolygonModel("C1.OSGB", C1Model) SceneManager.getModel(C1Model).setScale(0.005, 0.005, 0.005) SceneManager.getModel(C1Model).setPositionOffset(0.350, 0, -0.090) SceneManager.getModel(C1Model).setRotationOffset(0, 0, -1, 1) SceneManager.addNodeToScene(C1Model,"mainView") #print("Added C1") SceneManager.loadPolygonModel("T1.OSGB", T1Model) SceneManager.getModel(T1Model).setScale(0.005, 0.005, 0.005) SceneManager.getModel(T1Model).setPositionOffset(0.350, 0, -0.090) SceneManager.getModel(T1Model).setRotationOffset(0, 0, -1,1) SceneManager.addNodeToScene(T1Model,"mainView")