(Deprecated) Change hand color

Deprecated classes vrOculusTouchController and vrOpenVRController. See vrDeviceService, vrdVRDevice, vrdDeviceInteraction instead.

Oculus Rift

deprecated_VR_examples/VR-hands-color-oculus.py
 1# © 2024 Autodesk, Inc. All rights reserved.
 2
 3def findNodeRecursive(nodeName, node):
 4    if not node.isValid():
 5        return None
 6
 7    if node.getName() == nodeName:
 8        return node
 9    
10    numChildren = node.getNChildren()
11    for i in range(0, numChildren):
12        result = findNodeRecursive(nodeName, node.getChild(i))    
13        if result:
14            return result
15        
16    return None
17
18
19def setHandColor(role, color):
20    handPrefix = { Hand_Left : "L_", Hand_Right : "R_" }
21    print("Hand role:", "left" if role == Hand_Left else "right")
22    handMesh = findNodeRecursive(handPrefix[role] + "hand_mesh", getInternalRootNode())
23    if handMesh.isValid():
24        mat = handMesh.getMaterial()
25        # set X-Ray color
26        baseColor = vrFieldAccess(mat.fields().getFieldContainer('baseColor'))
27        baseColor.setVec3f("color", color[0], color[1], color[2])
28    
29    hitMesh = findNodeRecursive(handPrefix[role] + "hit_mesh", getInternalRootNode())
30    if hitMesh.isValid():
31        mat = hitMesh.getMaterial()
32        # set Plastic incandescence color
33        incandescenceColor = mat.fields().getVec("incandescenceColor", 4)
34        mat.fields().setVec4f("incandescenceColor", color[0], color[1], color[2], incandescenceColor[3])
35   
36# Deprecated class vrOculusTouchController. See vrDeviceService, vrdVRDevice, vrdDeviceInteraction instead.
37controller0 = vrOculusTouchController("LeftTouch")
38controller1 = vrOculusTouchController("RightTouch")
39controller0.setVisible(True)
40controller1.setVisible(True)
41
42color = (1.0, 1.0, 1.0)
43
44# Set color when hands are detected in VR mode.
45controller0.connectSignal("handRoleChanged", setHandColor, color)
46controller1.connectSignal("handRoleChanged", setHandColor, color)
47
48# If the script is executed in VR mode after hands have been detected, force color change:
49if controller0.getHandRole() != Hand_Undefined:
50    setHandColor(controller0.getHandRole(), color)
51if controller1.getHandRole() != Hand_Undefined:
52    setHandColor(controller1.getHandRole(), color)

Open VR

deprecated_VR_examples/VR-hands-color-openvr.py
 1# © 2024 Autodesk, Inc. All rights reserved.
 2
 3def findNodeRecursive(nodeName, node):
 4    if not node.isValid():
 5        return None
 6
 7    if node.getName() == nodeName:
 8        return node
 9    
10    numChildren = node.getNChildren()
11    for i in range(0, numChildren):
12        result = findNodeRecursive(nodeName, node.getChild(i))    
13        if result:
14            return result
15        
16    return None
17
18
19def setHandColor(role, color):
20    handPrefix = { Hand_Left : "L_", Hand_Right : "R_" }
21    print("Hand role:", "left" if role == Hand_Left else "right")
22    handMesh = findNodeRecursive(handPrefix[role] + "hand_mesh", getInternalRootNode())
23    if handMesh.isValid():
24        mat = handMesh.getMaterial()
25        # set X-Ray color
26        baseColor = vrFieldAccess(mat.fields().getFieldContainer('baseColor'))
27        baseColor.setVec3f("color", color[0], color[1], color[2])
28    
29    hitMesh = findNodeRecursive(handPrefix[role] + "hit_mesh", getInternalRootNode())
30    if hitMesh.isValid():
31        mat = hitMesh.getMaterial()
32        # set Plastic incandescence color
33        incandescenceColor = mat.fields().getVec("incandescenceColor", 4)
34        mat.fields().setVec4f("incandescenceColor", color[0], color[1], color[2], incandescenceColor[3])
35   
36# Deprecated class vrOpenVRController. See vrDeviceService, vrdVRDevice, vrdDeviceInteraction instead.
37controller0 = vrOpenVRController("Controller0")
38controller1 = vrOpenVRController("Controller1")
39controller0.setVisualizationMode(Visualization_Hand)
40controller1.setVisualizationMode(Visualization_Hand)
41
42color = (1.0, 1.0, 1.0)
43
44# Set color when hands are detected in VR mode.
45controller0.connectSignal("handRoleChanged", setHandColor, color)
46controller1.connectSignal("handRoleChanged", setHandColor, color)
47
48# If the script is executed in VR mode after hands have been detected, force color change:
49if controller0.getHandRole() != Hand_Undefined:
50    setHandColor(controller0.getHandRole(), color)
51if controller1.getHandRole() != Hand_Undefined:
52    setHandColor(controller1.getHandRole(), color)