def InitNx ( ) :

    gDefaultGravity = physics.NxVec3(0.0,-9.8,0.0)
    gCookingInitialized = False
    
    # Initialize PhysicsSDK
#    desc = physics.NxPhysicsSDKDesc()
#    print "DESC", desc
    gPhysicsSDK = physics.NxCreatePhysicsSDK(physics.NX_PHYSICS_SDK_VERSION()) 
    print gPhysicsSDK
    print "Getting master"
    g = physics.getMasterPhysicsSDK()
    print "Got Master"
    print g
    print dir(g)
    print dir (gPhysicsSDK)
    d = physics.NxPhysicsSDK (  )
    print d
    print dir(d)
    if gPhysicsSDK == None : 
        print "\nSDK create error (%d - %s).\nUnable to initialize the PhysX SDK, exiting the sample.\n\n" % (errorCode,"test")
        return False
    

# #if SAMPLES_USE_VRD
#   # The settings for the VRD host and port are found in SampleCommonCode/SamplesVRDSettings.h
#   if (gPhysicsSDK.getFoundationSDK().getRemoteDebugger() && !gPhysicsSDK.getFoundationSDK().getRemoteDebugger().isConnected())
#       gPhysicsSDK.getFoundationSDK().getRemoteDebugger().connect(SAMPLES_VRD_HOST, SAMPLES_VRD_PORT, SAMPLES_VRD_EVENTMASK)
# #endif

    if not gCookingInitialized:
        gCookingInitialized = True
        if not physics.InitCooking():
            print "\nError: Unable to initialize the cooking library, exiting the sample.\n\n"
            return False
            
    # Set the physics parameters
    gPhysicsSDK.setParameter(physics.NX_SKIN_WIDTH, -0.01)

    # Set the debug visualization parameters
    gPhysicsSDK.setParameter(physics.NX_VISUALIZATION_SCALE, 1)
    gPhysicsSDK.setParameter(physics.NX_VISUALIZE_COLLISION_SHAPES, 1)
    gPhysicsSDK.setParameter(physics.NX_VISUALIZE_JOINT_LIMITS, 1)
    gPhysicsSDK.setParameter(physics.NX_VISUALIZE_JOINT_LOCAL_AXES, 1)


    # Create the scene
    sceneDesc = physics.NxSceneDesc()
    sceneDesc.gravity = gDefaultGravity
    gScene = gPhysicsSDK.createScene(sceneDesc)

    # Create the default material
    m = physic.NxMaterialDesc ()
    m.restitution        = 0.5
    m.staticFriction     = 0.2
    m.dynamicFriction    = 0.2
    mat = gScene.getMaterialFromIndex(0)
    mat.loadFromDesc(m) 

#     switch(gSceneNr) {
#         case 1 : SetupAnimalScene() break
#         case 2 : SetupWheelScene() break
#         case 3 : SetupPalmScene() break
#         case 4 : SetupGrassScene() break
#         case 5 : SetupRegularScene() break
#         case 6 : SetupBunnyScene() break
#         case 7 : SetupPumpkinScene() break
# 
#         # Insert new cases here
#     }
# 
#     if (gSoftBodies.size() > 0)
#         gSelectedSoftBody = gSoftBodies[0].getNxSoftBody()
#     else
#         gSelectedSoftBody = None
# 
#     if (gScene.getNbActors() > 0)
#         gSelectedActor = *gScene.getActors()
#     else
#         gSelectedActor = None
# 
#     UpdateTime()

    return True
 def sphericalPolar(radio, pitch, yaw):
     temp = physx.NxVec3()
     temp.x=radio* physx.sinf(pitch)*physx.sinf(yaw)
     temp.y=radio*physx.cosf(pitch)
     temp.z=radio*physx.sinf(pitch)*physx.cosf(yaw)
     return temp