PDA

View Full Version : Adding custom floating hand avatar


seowen1
10-17-2017, 06:27 AM
Hi there,

I am in the process of trying to create and utilize a custom avatar for a disconnected hand. This would be similar to the "Head and Hands" avatar within vizconnect.

I'm still pretty new to Vizard and python, but I'm pretty well versed in 3ds max, so the model is already created/rigged and exported as a CFG via the Cal3D exporter. It seems like the model is in working order, since I can open the CFG in Inspector and it looks good. I can even use:

handTest = vizfx.addAvatar('<filepath>/Tactical_GloveRight.cfg')

And it will load in and look fine. Where I am confused is how I go about adding this in as an Avatar to replace the hand/glove model. I did replace the model filepath with my new one in the vizconnect file, and it loads but it is a black model with no apparent textures. Almost as if the Effects aren't applied on the model (like if you load it with "viz" instead of "vizfx"). I am using a scene without any light source, but the texture for the glove has a self-illumination complete map baked in that appears just fine with the vizfx.addAvatar() command, as previously mentioned.

Also I'm getting a bunch of errors referencing the bone names:

** ERROR: Bone with name 'END thumb' does not exist
** ERROR: Bone with name 'END index' does not exist
** ERROR: Bone with name 'END middle' does not exist
** ERROR: Bone with name 'END ring' does not exist
** ERROR: Bone with name 'END little' does not exist
** ERROR: Bone with name 'bone thumb ROOT' does not exist
** ERROR: Bone with name 'bone thumb 0-0' does not exist
** ERROR: Bone with name 'bone thumb 0-1' does not exist
** ERROR: Bone with name 'bone index 1-0' does not exist
** ERROR: Bone with name 'bone index 1-1' does not exist
** ERROR: Bone with name 'bone index 1-2' does not exist
** ERROR: Bone with name 'bone middle 2-0' does not exist
** ERROR: Bone with name 'bone middle 2-1' does not exist
** ERROR: Bone with name 'bone middle 2-2' does not exist
** ERROR: Bone with name 'bone ring 3-0' does not exist
** ERROR: Bone with name 'bone ring 3-1' does not exist
** ERROR: Bone with name 'bone ring 3-2' does not exist
** ERROR: Bone with name 'bone little 4-0' does not exist
** ERROR: Bone with name 'bone little 4-1' does not exist
** ERROR: Bone with name 'bone little 4-2' does not exist
** ERROR: Bone with name 'bone WRIST' does not exist

Which is weird to me because I thought the code would pull the bone names from the skeleton file instead of having them hardcoded to the old skeleton bone names. I even tried to edit the hardcoded names within HandModel() class of the hand.py file to no effect.

Can anyone tell me what I'm doing wrong? I really want to get this new model working as we want something different than the default "Mickey Mouse Glove" as we call it internally. Thanks!

Jeff
10-17-2017, 05:17 PM
After changing the name of the model file for the head and hands avatar in the vizconnect file:

rightHandFilename = 'Tactical_GloveRight.cfg'

Change the code where the model is added from:

if rightHandFilename:
rightHand = avatar.add(rightHandFilename)
avatar.rightHandFilename = rightHandFilename

to:

if rightHandFilename:
rightHand = vizfx.addAvatar(rightHandFilename)
rightHand.setParent(avatar)
avatar.rightHandFilename = rightHandFilename

In order for the gestures to work, the bones names of your hand model should match the names of the included glove model.

seowen1
10-18-2017, 06:23 AM
Hi Jeff,

Thank you for the quick response. I fixed the skeleton by naming the bones correctly, but I'm still having issues viewing the model correctly as the hand avatar.

I still get the black texture/no effect look even when I implement your solution with import vizfx. I'm not sure if there is something else going on here. It's almost as if the self-illumination isn't showing. If I export the material file and leave only the self-illumination map on (removing the diffuse map) the model loads black in the inspector.

I have a ZIP file I could send you for troubleshooting? I tried uploading it here but it probably doesn't accept zip files or my texture is too large perhaps.

seowen1
10-18-2017, 08:41 AM
Okay so I have been messing with some of the material settings, trying to solve the issue. I did notice that if I set the diffuse color to red, I will get a red tinge to the avatar so that it shows mostly black with some soft red on some edges.

Attached are the settings I am using now that seem correct, but are still rendering the black model. I noticed that having the texture for the complete map in both the diffuse AND self-illumination slots was giving off a weird compounded effect. Took me awhile to figure that one out since I thought it was related to gamma settings.

Still having the main issue though. As mentioned before, I would gladly send my files over and give you a better way to troubleshoot.

Jeff
10-18-2017, 10:29 AM
Yes, please upload (http://www.worldviz.com/upload/) the zipped file with resources and example vizconnect script for us to look at.

Jeff
10-18-2017, 10:37 AM
Also wanted to mention that in addition to the head and hands avatar the 'Mark' avatar includes a robotic hand model. In case you have not seen it that maybe an option for you.

seowen1
10-18-2017, 11:00 AM
I just submitted the upload. #1790457 for your reference.

I realize the skeleton isn't oriented correctly. I'm probably just going to reskin the model in an attempt to correct some other issues anyway. I assume I will just need to rotate the bones to fix this.

In the meantime, I just want to make sure that I can get the model working.

Thanks for the help, Jeff!

Also, I am aware of the other hand models you have available. We are just interested in a custom version.

Jeff
10-27-2017, 01:56 PM
When gestures are applied, the model is added through the hand.py module. Create a copy of hand.py, place that in the same folder as the vizconnect file, and change the line of code that adds the model in the __init__ method of the HandModel class to:

#Initialize base class
import vizfx
hand = vizfx.addAvatar(file,**kw)
viz.VizAvatar.__init__(self,hand.id)
viz.EventClass.__init__(self)

seowen1
10-27-2017, 01:59 PM
Thanks, Jeff. I will definitely try that out!