5

I am currently working on a personal project (ecommerce site for clothing), I want to create a virtual trial room for the customers. For this I am taking their height, weight and body shape, etc. as an input and based on these inputs I want to create a 3D model of their body on the fly. Then they can pick from the clothes and see how it looks on these models.

After doing some research I came to know that, In order to acheiving this, three.js and webgl should be my primary weapons.

Also I came across this awesome site https://zygotebody.com/ which I found very inspiring, Here its too advance, I only want to create their 3D model.

I would really appreciate If you guys could guide me in the right direction, and point out some methods to acheive this. I know I have not done the full research for this, but asking this question here is also a part of my research. I don't want to get started in the wrong direction, So i thought some pros advice is no harm.

Thank you.

nitte93
  • 1,820
  • 3
  • 26
  • 42
  • Hey, I'm trying to achieve a similar goal. How's everything going? Perhaps we could discuss together in details and inspire each other. :) – Isilmë O. Feb 16 '15 at 13:01
  • hey, that seems like a good plan, sorry for this late reply, I started with learning webgl, I'm currently working on parsing data from webgl to json format. – nitte93 Feb 27 '15 at 06:44
  • I'm trying to combine the use of Three.js and custom OBJ model. The output is fine in the browser. But when it comes to customization of body shape, yes I can modify the OBJ accordingly on the fly, yet I find myself stuck half-way because I cannot deduce the correct vertex positions, say the breast size for human body. Seems that I've got to pick up some anatomy. How do you plan to tackle this problem? – Isilmë O. Feb 27 '15 at 10:14
  • I haven't reach that far..I am stuck at customizing the body. I am thinking of providing the option to choose from the following anatomy..Ectomorph, Mesomorph, Endomorph and then generate their respective models. Not sure if thats the correct way. – nitte93 Feb 27 '15 at 10:33
  • Should we discuss this somewhere else.Cause this will flood this whole comment section. What say? – nitte93 Feb 27 '15 at 10:36
  • Actually I think we are stuck at the same stage. :) How about discussing via email? I can be reached at noir@meta-4.me – Isilmë O. Feb 28 '15 at 04:57
  • @nitte93user3232918 i am sharing this link http://blog.artillery.com/2012/05/reducing-polygon-count-and-file-sizes.html in the comment section Won Chun share the library they used for the zygote project you mention. I have not exprted the git never check out might be this link helpful to you sorry if not. – Ajit kohir Apr 04 '16 at 18:00
  • @IsilmëO. I am also working on this, can we discuss it via mail. – Abhishek Meharia Sep 29 '20 at 06:20

3 Answers3

2

One approach would be to create morph targets in a 3D software (Blender, Lightwave, 3DMAX, Maya etc.). Using a 3D software gives you much more tools to manipulate the base shape. You could also look into Poser from Smith Micro which can morph body models internally and export those as morph target (but check license for usage of these exported objects).

These morph targets can then be used to interpolate the base object into various shapes - even combined.

You would create one morph target for legs, one for arms, one for belly etc. These will be known as morph channels. Then interpolate each point in the morph target using linear-interpolation with the base to morph the shape into what you need.

This approach doesn't require you to remap points or vertices etc. Just go point by point and interpolate.

0

Kind of echoing an existing answer but would also recommend using a handful of base meshes (possibly even just one) and using relative morph targets (relative vertex positions to change the shape of the model in some way) which you can interpolate along with possibly adding variation through textures/decals.

I've even seen artists use the same base mesh for both male and female, though more often a male and female base mesh would use different topology. On top of programs like Poser which might give you some nice ideas, game engines also use this technique to customize your character, like so:

enter image description here

It's basically the same model but the sliders control how much of a morph (relative vertex deltas) to apply along with affecting textures and some shader parameters, and often these are just linearly interpolated to create a new appearance. You can also use morph targets to do facial animation like make characters smile which is sometimes awkward to do with bones and skinning, e.g.

For adjusting height in ways that keeps the proportions identical, a morph target might be overkill. In that case you might just use a transformation matrix. If you want to adjust the proportions though like make the torso and legs shorter without affecting the head size as much (which would generally produce a more convincing effect), then morph targets make sense again.

All of this does require some work from a skilled 3D character modeler to create convincing content, but it's a very economical way from the programming side to achieve all these variations. If you populate a world filled with such characters, it's also very economical in terms of memory and processing since only things like vertex positions and shader parameters need to be made unique while the rest of data (texture coordinates, polygons, shader associations, etc) can be shared/instanced across characters.

0

I just found this old thread, but I am working on something similar.

I was able to find what I would call a beautiful model to work with from: https://github.com/fashiontec/bodyapps-viz

This one includes a male, female, and child. I was able to clone that repo and fire it up in my browser within seconds.

I am working on porting it into React right now, so I am finding this thread for different reasons, but I thought I should share my earlier findings.

It comes with Data.GUI() so you can use that to modulate the parameters such as neck girth, torso girth, etc. It's probably exactly what the original question was asking for.

agm1984
  • 15,500
  • 6
  • 89
  • 113