PDA

View Full Version : A problem with cave


apmx
10-28-2013, 04:37 AM
Hello,I am doing a project about car simulation,but I don't know how to link the cave view point with the car,the result should be more like sitting in the car and if the car is moving the view point should follow.

Here is my code:
import cavelib2
import math
import viz
import vizact
import random
import vizshape
import vizcave
import viztracker

hangle=0
vangle=0

#Param: True = DesktopMode on
# False = DesktopMode off

print "Initializing CaveLib"
cave = cavelib2.CaveLib(True)

import vizshape

#wiimote update code

#Speed for the wiimote movement
MOVE_SPEED = 1

#Initial values of camera angles
hangle = 0
vangle = 0

#object id's that are ignored with raycasting


drawing = None

print "Adding a model"
#position camera in startingposition
cave_origin=cave.getOriginTracker().setPosition(0, 3,0)
#cave.caveorigin.setPosition(0,2,0)
#cave.caveorigin.setEuler(90,0,0)

#adding the models
world = viz.add('road1002.OSGB')
world.setPosition(0,0,0)
world.enable(viz.LIGHTING)

truck = viz.add('truck1005.OSGB')
truck.setPosition(1,2,-8)







def WiiMove():
global hangle
global vangle

elapsed = viz.elapsed() #the amount of time elapsed

state = cave.wiimote.getState()

#process buttons
if state & cave.wiimote.BUTTON_LEFT:
#cave.caveorigin.setPosition([-MOVE_SPEED*elapsed,0,0],viz.REL_LOCAL)
sun.setPosition([-MOVE_SPEED*elapsed,0,0],viz.REL_LOCAL)

if state & cave.wiimote.BUTTON_RIGHT:
#cave.caveorigin.setPosition([MOVE_SPEED*elapsed,0,0],viz.REL_LOCAL)
sun.setPosition([MOVE_SPEED*elapsed,0,0],viz.REL_LOCAL)

if state & cave.wiimote.BUTTON_UP:
#cave.caveorigin.setPosition([0,0,MOVE_SPEED*elapsed],viz.REL_LOCAL)
sun.setPosition([0,MOVE_SPEED*elapsed,0],viz.REL_LOCAL)

if state & cave.wiimote.BUTTON_DOWN:
#cave.caveorigin.setPosition([0,0,-MOVE_SPEED*elapsed],viz.REL_LOCAL)
sun.setPosition([0,-MOVE_SPEED*elapsed,0],viz.REL_LOCAL)

if state & cave.wiimote.BUTTON_1:
cave.caveorigin.setPosition([0,-.001,0],viz.REL_LOCAL)
if state & cave.wiimote.BUTTON_2:
cave.caveorigin.setPosition([0,.001,0],viz.REL_LOCAL)

hangle = hangle + 90 * cave.wiimote.getJoystick()[0] * elapsed
cave.caveorigin.setEuler([hangle,vangle,0])

#Set input function
vizact.ontimer(0, WiiMove)

#onUpdate callback function
def onUpdate(e):
cave.getWandPosition()
cave.getWandQuat()
cave.getWandMatrix()

viz.callback(viz.UPDATE_EVENT,onUpdate)


print "Setting the headlight"

#Get a handle to the main headlight and disable it


print "Setting the antialiasing factor"

viz.setMultiSample(4)

print "Start the simulation"

cave.go()