PDA

View Full Version : changing the texture of an avatars shirt/body


bailenson
09-14-2004, 01:01 PM
Hello, do you happen to have some sample code on how one might change the texture that is on an avatar's shirt or skin? thanks!

Jeremy

farshizzo
09-14-2004, 02:32 PM
Hi Jeremy,

The image that contains the shirt texture also contains the texture for the rest of the avatars body. So you would have to modify the original texture in order to change the shirt. However, the current textures belong to Anacapa Sciences, and they do not allow you to modify their texture.

bailenson
09-14-2004, 02:53 PM
I had heard that, without having to make real changes to the texture itself, you could use the 'getchild' command to grab part of the avatar and retexture it in Vizard. In other words, you can't do fine-tuning of the uvw map of the texture, but you can stick a general texture on an arm or a chest, etc. So far, I haven't been able to make this work. Have you seen this be successful?

thanks for your time,
jb

farshizzo
09-14-2004, 03:03 PM
Hi Jeremy,

Here's some sample code that will apply a texture to the male's torso. The problem is creating the shirt texture so that it aligns perfectly onto the avatar. If you just want to change the shirt to a solid color, then you can just create a texture of a solid color and apply it to the avatars torso.
shirt = viz.add('shirt.jpg')
male.texture(shirt,'m_torso_LS.cmx')To make this work for the female you will need to change m_torso_LS.cmx to m_torso.cmx.

bailenson
09-14-2004, 03:08 PM
great...also, how do you get the breakdown of the parts of the body as they map to specific cmx files? thanx, j

farshizzo
09-14-2004, 03:28 PM
Hi Jeremy,

You can open up male.cfg or female.cfg in the Vizard20/resources directory. You can apply textures to all the mesh files. You can also perform other functions, like changing color. Basically, most node3d commands that accept a subchild as an optional argument, you can pass it the name of the mesh. However, you can't use the name of the mesh when calling getchild.

bailenson
09-14-2004, 04:56 PM
heya...i tried the code you used above but nothing changes when I apply a texture...can you confirm that it does work on your end?

thanx

farshizzo
09-14-2004, 05:12 PM
Hi Jeremy,

Yeah, it works here. I just noticed that the name of the torso mesh is different from the version you have. Change it to male_torso_LS.cmx

bailenson
09-15-2004, 08:05 PM
works now, thanks much, jb

vadrian
09-20-2004, 05:49 PM
I have a related question regarding clothing texturing.

I need to change the textures of avatars to resemble foreign clothing. However, most cultures do NOT all wear tight shirts and even tighter pants ;)

How can I "texture" things like full-body fabrics, dresses, head-pieces, rags, etc?

(my project is to make a VE of a 3rd world village)

-adrian

farshizzo
09-20-2004, 06:00 PM
Hi,

Changing the texture will only affect the surface appearance of an obect. To simulate different types of outfits you would have to actually model them using Character Studio.

For things like head-pieces you can use a separate model and attach it to the head of the avatar. Vizard comes with a sample script showing how to do this. Look in the [Vizard20]/examples/avatar directory for a script called linkbones.py.

Let me know if you need any more help.

rdotsch
05-01-2006, 08:17 AM
Hi,

I need to change the texture of a specific mesh of a home-made cal3d avatar. The problem is that vizard doesn't seem to map the mesh names right. Hypothetically I use a .cfg file that looks like this (this is in fact only a fragment of the real .cfg I'm using):

----------
skeleton = avatar_skel.CSF

mesh = head.CMF
mesh = torso.CMF
mesh = pants.CMF
mesh = rhand.CMF
mesh = lhand.CMF
etc.

material = head.CRF
material = shirt.CRF
material = pants.CRF
material = rhand.CRF
material = lhand.CRF
etc.

--------------

Now, let's say I want to change the texture of the shirt to shirt.jpg. I would do the following, right?


avatar = viz.add('avatar.cfg')
shirt = viz.add('shirt.jpg')
avatar.texture(shirt, 'shirt.CMF')


This doesn't work. It changes a texture alright, but not of the shirt (depending on the order of the meshes in the .cfg file it changes the texture of another mesh, and actually it looks kinda cool to have a red eye-ball :cool: ).

Anyway, what am I doing wrong? (I'm using vizard 2.53f)

Regards,

Ron

farshizzo
05-01-2006, 04:59 PM
Hi,

I believe this is related to a known bug in 2.53. If you specify a mesh name that is invalid then Vizard will use the first mesh file instead. This has been fixed in 3.0. In the meantime, make sure the mesh name you are specifying is correct. In your sample code you specify shirt.CMF but it is not in your mesh list. However there is a shirt.CRF in your material list. Are you sure you are not mixing up meshes with materials?

rdotsch
05-02-2006, 06:13 AM
Hi,

Sorry, I screwed up in my example: it should have been avatar.texture(shirt, 'torso.CMF'). In my real program I do use the correct mesh names (I have to use the mesh names, right? Not materials), I've checked twice, but it still seems to select the wrong mesh.

What exactly is the bug in this version about?

By the way, a totally unrelated question: do you know whether there exists a Cal3d exporter for Maya 7 for the Cal3d version Vizard uses? And an OSG exporter?

Ron

farshizzo
05-02-2006, 04:52 PM
Hi,

If you remove torso.cmf from your cfg file does the torso mesh disappear?

I know there is an exporter for maya 6, but I haven't seen one for maya 7. If you provide me with the proper SDK files for Maya, I can attempt to compile an exporter for it.

rdotsch
05-03-2006, 07:05 AM
Yes, the torso mesh disappears.

I should have the Maya 7 sdk here. How can I get them to you? Do you have an ftp server I can upload to?

Regards,

Ron

rdotsch
05-03-2006, 07:19 AM
I think I figured out a pattern: when I try to change the texture of a mesh, it changes the texture of the mesh that is one step above the target mesh in the vizard resources list. In that list the meshes are sorted in alphabetical order (independent of the order in the .cfg file). Bad luck for me, the mesh I need is the one that is the lowest in alphabetical order, so I can't just use the mesh below it.

I could change the names of the meshes and change them in the cfg file, that's not a big problem. But I'd prefer to use the right names for the meshes, it would make reading the code less of a problem for others.

Kind regards,

Ron

farshizzo
05-03-2006, 05:07 PM
Hi,

Well, I'm out of ideas. It would be easier for me to debug whats going on if you sent me your avatar files. You can also send me the Maya SDK. My email address is lashkari@worldviz.com

rdotsch
05-04-2006, 05:47 AM
I figured out the problem: the meshes have to be sorted alphabetically in the .cfg for this to work right. If not, vizard seems to sort the meshes alphabetically in memory, selects the right mesh, takes the position of that mesh in the ordered list, and then uses that position to change texture for the mesh that's sitting on that position in the .cfg file.

Solution: sort the meshes in the .cfg file alphabetically.

Regards,

Ron

farshizzo
05-04-2006, 11:00 AM
Hi,

Glad to hear you found a solution. Which version of Vizard are you using? I still can't replicate your problem. I even ordered all the meshes in reverse alphabetical order and it still worked fine.