WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Precision Position Tracker (PPT) (https://forum.worldviz.com/forumdisplay.php?f=9)
-   -   PPT causing height problem (https://forum.worldviz.com/showthread.php?t=1791)

just alex 01-27-2009 01:57 PM

PPT causing height problem
 
For some reason, whenever I have my PPT computer connected and active with my rendering computer, the default viewpoint becomes 2 or 3 times higher than a person should be. When I run the program without PPT going, the point of view spawns at a normal height. I'm wondering if it's a problem with my code (I got thrown headfirst into this level of programming)
Code:

import viz
import math
import vizmat
import vizinfo
import vizact
from lookingat import LookingAt
viz.go()


#adds the ppt
PORT_PPT = 1
ppt = viz.add('vizppt.dls')

ppt.command(3,"",1,1,5) #scales ppt tracking on xyz axis
 

#collisions on
viz.collision(viz.ON)
view = viz.get(viz.MAIN_VIEWPOINT)
view.rotate(0,1,0,90)

#gonna comment out the collision for now, it's registering when the avatar touches
#ground as a collision

#This function is called when a collision occurs
def mycollision(info):
        print 'Collided'


#Create a callback for a collision event
viz.callback(viz.COLLISION_EVENT, mycollision)

PORT_INTERSENSE = 2
isense = viz.add('intersense.dls')
tracker = viz.add('intersense.dls')
viz.tracker()
tracker.reset()

def mykeyboard(key):
       
        #If the R key is pressed, reset the head orientation
        if key in ['r','R']:
                tracker.reset()

#Create a keyboard callback
viz.callback(viz.KEYBOARD_EVENT,mykeyboard)


#Add the street and drop it a little bit to be below the avatars feet.
street = viz.add('objects/bspcity.bsp')
street.translate(0,-.2,0)


males = []
females = []
walking = []
whichturn = 0

#List the timers.
WALKING = 0
BLINDWALK = 1
BLINDLOOK = 2
MALEMEETING = 3
FEMALEMEETING = 4
SITTINGWOMAN=5
FREEZESITTER=6
THROWINGMAN =7
HOLDVIEW = 8
TIMING = 9

#Add the heads for the males.
maleheads = ['Male/heads/M-015-2L.vzf','Male/heads/M-056L.vzf', 'Male/heads/M-063L.vzf']
femaleheads = []
bodyparts = ['male_legs.cmx','male_torso_LS.cmx','male_shoes.cmx']
maleclothes = ['Male/clothes/male1.jpg','Male/clothes/male2.jpg','Male/clothes/male3.jpg']
#Make some avatars.
for i in range(3):
        male = viz.add('male.cfg')
        male.translate(i,0,0)
        male.visible(0,'male_head.cmx')
        male.face(maleheads[i])
        clothes = viz.add(maleclothes[i])
        for j in bodyparts:
                male.texture(clothes,j)
        males.append(male)
               
for i in range(3):
        female = viz.add('female.cfg')
        female.translate(i,0,0)
        females.append(female)



#Set up paramters for walking guy.
males[0].translate(0,0,-5)
males[0].rotate(0,1,0,-90)
males[0].whichturn = 0
males[0].set = [[1.5,0,-5],[1.5,0,15],[5,0,15],[-5,0,-5]]
males[0].end = 4
walking.append(males[0])

#Set up paramters for walking girl.
females[0].translate(1,0,-7)
females[0].rotate(0,1,0,-90)
females[0].whichturn = 0
females[0].set = [[1.5,0,0],[1,0,15],[2,0,15],[-5,0,-5]]
females[0].end = 4
walking.append(females[0])

#Add car.
#car = viz.add('objects/sport.wrl')


#Set up for meeting.
males[1].translate(-9,0,21)
females[1].translate(2,0,7)
females[1].state(1)
malemoves = [2,2,4,4,2,4,4,4,4,4,4,2,2,12]
femalemoves = [6,5,12,12,1]
females[1].rotate(0,1,0,-55)
males[1].rotate(0,1,0,135)
males[1].state(1)



#Set up for throwing man.
males[2].translate(11,0,7)
males[2].state(1)

#Set up for timing.
timebomb = 0


def onkeydown(key):
        if key == '0':
                viz.starttimer(WALKING, .1, viz.PERPETUAL)
       
       
        if key == '2':
                females[1].addAction(6)
                males[1].goto(1.6,0,7.7)
                females[1].spinto(0,1,0,-55)
                females[1].state(12)
                viz.starttimer(MALEMEETING,.1)
                viz.starttimer(FEMALEMEETING,.1)
       
       
        if key == '4':
                viz.starttimer(THROWINGMAN,.1)

        if key == 's':
                print 's'
                viz.starttimer(TIMING,1, viz.PERPETUAL)
               
def ontimer(num):
        global gravity, timebomb
        if num == WALKING:
                for agent in walking:
                        agentposition = agent.get(viz.POSITION)
                        agentgap = vizmat.Distance(agentposition, agent.set[agent.whichturn])
                        if agentgap < .1:
                                agent.whichturn += 1
                                if agent.whichturn == agent.end:
                                        agent.whichturn = 0
                       
                        walk = vizact.walkto(agent.set[agent.whichturn][0],agent.set[agent.whichturn][1],agent.set[agent.whichturn][2])
                        agent.addAction(walk)
                       
                       
        if num == MALEMEETING:
                if len(malemoves)>1:
                        animation = malemoves.pop(0)
                        duration = males[1].getduration(animation)
                        males[1].execute(animation)
                        viz.starttimer(MALEMEETING, duration-.15)
                else:
                        animation = malemoves.pop(0)
                        males[1].state(animation)

        if num == FEMALEMEETING:
                if len(femalemoves)>1:
                        animation = femalemoves.pop(0)
                        duration = females[1].getduration(animation)
                        females[1].execute(animation)
                        viz.starttimer(FEMALEMEETING, duration-.15)
                else:
                        animation = femalemoves.pop(0)
                        females[1].state(animation)
       
       
        if num == THROWINGMAN:
                males[2].execute(9)
                males[2].execute(1)
                viz.starttimer(THROWINGMAN, 10)
       
        if num == HOLDVIEW:
                view.translate(-8.5,1.5,-2)
               
        if num == TIMING:
                print timebomb
                timebomb += 1
               
                if timebomb == 1:
                        onkeydown('0')
                       
                elif timebomb == 3:
                        onkeydown('4')
               
                elif timebomb == 10:
                        onkeydown('2')
               
                elif timebomb == 20:
                        onkeydown('3')
               
                elif timebomb == 30:
                        onkeydown('1')
               
                elif timebomb == 80:
                        viz.quit()
       
viz.callback(viz.TIMER_EVENT,ontimer)

viz.callback(viz.KEYDOWN_EVENT,onkeydown)
viz.starttimer(HOLDVIEW,.001, viz.PERPETUAL)

As an aside, there's an extra female model spawning across the "street" from the spawn point and I can't figure out where the heck she's coming from. If anyone notices before I can find it, I'd appreciate it

farshizzo 01-28-2009 03:26 PM

Try adding the following line to your script:
Code:

viz.eyeheight(0)
The default eye height is 1.8 meters, and it will be added to the Y position of your tracker. Setting it to 0 will simply apply the raw tracking data to the viewpoint height.

just alex 01-30-2009 09:50 AM

Thanks, that fixed everything up for me.
And I found where the random extra avatar was coming from.


All times are GMT -7. The time now is 03:37 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC