WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 09-22-2020, 11:26 AM
Roy Roy is offline
Member
 
Join Date: Dec 2019
Posts: 12
Adding a lot of Avatars

Hello,

How to add many avatars at once?
If we try to add 100 different avatars, do we need to use 'addAvatar()' for each avatar?

Thanks
Reply With Quote
  #2  
Old 09-25-2020, 02:22 PM
sado_rabaudi sado_rabaudi is offline
WorldViz Team Member
 
Join Date: Jul 2016
Posts: 40
You can note it all down in a list and iterate through it. Here's a sample script for it.

import viz

viz.clearcolor(viz.SKYBLUE)

avatar_files = ['vcc_male.cfg', 'vcc_female.cfg', 'vcc_male2.cfg']
avatars = []
position = 0
for i in avatar_files:
new = viz.addAvatar(i, pos = (position*2, 0, 4), euler=(180,0,0))
avatars.append(new)
position += 1

viz.go()
Reply With Quote
  #3  
Old 09-26-2020, 12:34 PM
Roy Roy is offline
Member
 
Join Date: Dec 2019
Posts: 12
Hi Sado,

How about animations for each avatar?
If animation is added by 'state()', do every avatars have different animations?
I tried to make 2avatars x 15 animations list, and show them in random order as program below. But the same avatar with same animation is shown.

Code:
avatar_files = ['vcc_male.cfg', 'vcc_female.cfg']#2avatars
animation = range(1,16)#default 15 animations

#make 30 stimuli list (2avatars x 15animations), and shuffule the order
stimulus = []
for i in avatar_files:
	for j in animation:
		avatarAnim = viz.addAvatar(i, pos=(0,0,0), euler=(180,0,0))
		avatarAnim.state(j)
		avatarAnim.visible(viz.OFF)
		stimulus.append(avatarAnim)
random.shuffle(stimulus)

def experiment():
	yield viztask.waitKeyDown(viz.KEY_RETURN)
	for trial in stimulus:
		yield viztask.waitTime(1)
		avatarAnim.visible(viz.ON)
		yield viztask.waitKeyDown(viz.KEY_RETURN)
		avatarAnim.visible(viz.OFF)

viztask.schedule(experiment())
Reply With Quote
  #4  
Old 09-29-2020, 12:54 AM
kennethkarthik kennethkarthik is offline
Moderator
 
Join Date: Jul 2018
Posts: 8
Hi Roy,

There was just a bug in your code. You were setting "avatarAnim" to visible off and on states in your experiment function instead of using "trial" which would iterate between your shuffled states.

Code:
import viz
import random
import viztask

avatar_files = ['vcc_male.cfg', 'vcc_female.cfg']#2avatars
animation = range(0,16)  #default 15 animations

viz.go()

piazza = viz.addChild('piazza.osgb')


#make 30 stimuli list (2 avatars x 15 animations), and shuffle the order
stimulus = []
for i in avatar_files:
	for j in animation:
		avatarAnim = viz.addAvatar(i, pos=(0,0,0), euler=(180,0,0))
		avatarAnim.state(j)
		avatarAnim.visible(viz.OFF)
		stimulus.append(avatarAnim)
print(stimulus)
random.shuffle(stimulus)
print(stimulus)

def experiment():
	yield viztask.waitKeyDown(viz.KEY_RETURN)
	for trial in stimulus:
		yield viztask.waitTime(1)
		trial.visible(viz.ON)
		yield viztask.waitKeyDown(viz.KEY_RETURN)
		trial.visible(viz.OFF)

viztask.schedule(experiment())
Check this and let us know if this was your intended experiment. Thanks
Reply With Quote
  #5  
Old 10-04-2020, 03:36 AM
Roy Roy is offline
Member
 
Join Date: Dec 2019
Posts: 12
Hi kennethkarthik,

Thank you, it works!
But I'm wondering any other way to add avatars.
In this program, 2 avatars are loaded 15 times, causing long time to run the program.
Any ideas?

Thanks
Reply With Quote
  #6  
Old 10-05-2020, 04:41 PM
kennethkarthik kennethkarthik is offline
Moderator
 
Join Date: Jul 2018
Posts: 8
Hey Roy,

Vizard does it's optimisation when it reuses objects. However if you do want to improve load time, I would suggest just changing the state of your characters on the same avatar instead of adding a new one for each animation state. Check out the code below

Code:
import viz
import random
import viztask

avatar_files = ['vcc_male.cfg', 'vcc_female.cfg']#2avatars
animation = range(0,16)  #default 15 animations

viz.go()

piazza = viz.addChild('piazza.osgb')


#make 30 stimuli list (2 avatars x 15 animations), and shuffle the order
avatars = []
for i in avatar_files:
	avatarAnim = viz.addAvatar(i, pos=(0,0,0), euler=(180,0,0))
	avatarAnim.visible(viz.OFF)
	avatars.append(avatarAnim)
	
def experiment():
	yield viztask.waitKeyDown(viz.KEY_RETURN)
	for i in avatars:
		i.visible(viz.ON)
		for state in animation:
			yield viztask.waitTime(0.5)
			i.state(state)
			yield viztask.waitKeyDown(viz.KEY_RETURN)
		i.visible(viz.OFF)

viztask.schedule(experiment())
Reply With Quote
Reply

Tags
avatars, avatars animation

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Regarding the visibility of avatars SivaKartheek Vizard 2 01-13-2016 08:48 AM
Randomly and Continuously Change Avatar's Face Texture Karla Vizard 4 08-22-2008 01:14 PM
avatars dig Vizard 4 09-20-2007 04:29 PM
adding heads to custom avatars vAlexia Vizard 5 02-13-2007 12:14 PM
Avatars in an array and link/unlink betancourtb82 Vizard 7 09-05-2006 05:06 PM


All times are GMT -7. The time now is 04:33 AM.


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