WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Custom avatars and avatar.walkto (https://forum.worldviz.com/showthread.php?t=848)

v-clizzin 11-22-2006 11:29 AM

Custom avatars and avatar.walkto
 
The code I use in Vizard to make an avatar walk to a certain point usually looks something like this:
walk = avatar.walkto(0,0,0)
avatar.act(walk)

When I run this with the avatar as a generic Vizard avatar, it actually walks to that point. When I run this with another avatar from the Complete Characters package, the avatar merely slides to the point. I've looked at the CFG files for each but couldn't figure out if there was anything that specifies a walk animation to associate with the walkto action. Is there any way to do this for other avatars?

Thanks!

Gladsomebeast 11-27-2006 10:41 AM

You can specify the animation to use with the walkto action with the "walkAnim" keyword

Code:

walkto = vizact.walkto(0, 0.000, -3, walkAnim=avatar.getAnimationID('walk_inplace.CAF') )

avatar.addAction(walkto)


vnellyaba 02-02-2007 12:58 PM

I am using an avatar in an array, and this method (getAnimationID) doesnt seem to work for it. Neither does getPosition(). Is there another way?

Gladsomebeast 02-02-2007 01:04 PM

Is the varable you are trying to call getAnimationID and getPosition a valid object? Perhaps you have not intialized the list properly? Try printing the varable before you use it. It should say something like VizAvatar instance.

Print like so:

Code:

for avatar in peopleList:
    print avatar


vnellyaba 02-24-2007 12:23 PM

thanks, for some reason
victims[nextvictim].get(viz.POSITION)
works fine.

Question:
Do you have any idea why an avatar, after completing a walkto(x,y,z) would start performing another animation?
the code is:

actor.act(actor.walkto(-1, 0, 1.5,1.8,0,6))
actor.act(actor.walkto(-1, 0, 3,1.8,0,6))
actor.act(actor.turn(-110))

after each of those walkto's and during the turn, the avatar begins to bend down(which is one of the animations it has) for some milliseconds and then continue with the next action. it does the turn simultaneously with the bending down action although i never called it .

I tried setting the state to idle, but that doesnt work...

farshizzo 02-26-2007 11:25 AM

By default, Vizard assumes the avatars idle animation is the first animation. Vizard will use the idle animation after performing walk actions and during the turn actions. The easiest solution would be to place your idle animation at the top of the animation list in your cfg file. Alternatively, you could set the idlepose of the avatar in your script:
Code:

avatar = viz.add('myavatar.cfg')
avatar.idlepose = 4 #Use animation 4 as the idle pose

Also, you can specify the animation to use for the turn action:
Code:

actor.act(vizact.turn(-110,anim=5)) #Use animation 5 while turning

Gladsomebeast 02-26-2007 04:46 PM

You can also avoid having the avatar's state set the the idle animation after each action by setting the idle animation to -1.

Code:

avatar.idlepose = -1


All times are GMT -7. The time now is 07:34 AM.

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