View Single Post
  #1  
Old 10-28-2013, 04:37 AM
apmx apmx is offline
Member
 
Join Date: Oct 2013
Posts: 1
A problem with cave

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:
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()
Reply With Quote