What is the JME-best approach to make character customization


#1

Hello,

i would like to ask you, what is the best way to do full character customization(like weight, tall, hair, texture changes, etc)

Here i come with some ideas like:

  1. shader vertex modification + adding colors/normals from other textures like tatoos, skin, etc.
    -> I think it might be good, but not sure how it will work with JME animation system. Animation changes verticle positions so shader will see it differently, so i belive here is problem.
    Also i belive physics will have problem, so for example ragdoll might not work correctly.

  2. Load model and change verticles via code(weight, tall - for some human areas)
    -> but here im not sure if this will not break JME animation from loaded model. Still shader for texture mixing

  3. Create all via code - mesh via code, armature and animation via code. Still shader for texture mixing
    -> here i belive will be too much work and sounds like ugly solution.

  4. I seen some topics about verticle morph, but not sure how it should look like.

Also topics like “do eyes should be always in same position as model” or “should clothes be affected by weight/tall same way as character or differently”, “what solution will maintain animation/ragdoll functionality properly”

If this is possible using just engine, then also “moving cloth on character”, but if not, then no need.

Please note its about Full customization. Not just texture.

Please help me find best solution, because soon(like weeks) will need to create some customization :slight_smile:
Also maybe someone else could find it helpfull.

i hope it will be gentle discussion. i understand there were some topics, but i need fresh view on full customization solution.


#2

Yes, it is a good way and already is supported on jme 3.3 master with gltf loader. thanks to @nehon

You can create morph shapes with blender or any other 3d editor. Just search google for “character morph animation with blender”.

This should also possible with morph + rig animation again thanks to nehon.

this is another easy way for character customization


#3

Thanks @Ali_RS

The @nehon great work seems is what i need. But i afraid that later will be some conflicts with Skeleton/Armature and much more other classes from base JME and Monkanim v2. i understand rigid body works well too.

also what about Introducing DynamicAnimControl

i would like to use it later on. no conflicts? why i feel like everyone add features separatly code so there is no single version :smiley: I already said i dont like so many outer repos(that might be in JME basecode) that might conflict with each other. (did JME is closed repo or what…)

anyway i will try this when will do customization, but would prefer some solution without ingerate in JME basecode. dont have much workforce to manage too much dependencies. :frowning:

so if there are more nice and easy solutions to make rigidbody/animations intact while easy changing weight/tall of character, then please tell too :slight_smile:


#4

jMonkeyEngine is not a closed repo, but it does seem like there’s nobody at the helm. (Like, since May.) Also, we’re in the midst of a long release cycle. (Like, no dot release since January.) Those are 2 of the many reasons why a lot of development currently takes place in other repos.

Regarding DynamicAnimControl, the goal is to integrate it back into the main repo eventually, or at least release a version compatible with JME 3.3 soon after that is released. Until then, there’s a lot you can do with GLTF in JME 3.2.1, which is what DynamicAnimControl is currently based on.


#5

A few thoughts:

  • If you take a rigged human model, you can get a huge amount of leverage by scaling bones in local z for length and local xy for thickness (blender coords) . Translating face bones will customize face look. The best thing to do is play around in blender and see what you can come up with, then transfer that knowledge to jME.

  • If you are doing customization via the vertex shader, you will probably be better off manually making these changes to the mesh, its a massive waste of gpu to calculate this every frame for information that is not changing.


#6

I’ve also been brainstorming ways to make a character customization system sometime soon, but I haven’t started much of the important coding yet, so I’m also interested in seeing everyone’s replies. My plan so far has been to base my character customization system & interface off of MakeHuman, and then work from there.

I was thinking the best way to scale the body size and shape would be scaling bones like @thetoucher suggested.

I thought about generating the human mesh myself or even modifying the vertex buffer, but I think that might be overkill for customizing anything aside from the face, and would probably be a lot of extra work compared to scaling bones.

So my first approach was going to be to let the players scale and shape the body by scaling bones, and see how that goes

For the hair, I’ve been planning to export a few of the hair meshes and hair textures from MakeHuman, and then colorize the Texture in the shader so players can pick any color hair. Or if I were more of an artist I’d make my own hair meshes and textures :stuck_out_tongue:

And if you do go the route of scaling bones, then the clothing should also grow or shrink with the human when you scale the bones, as long as the vertex groups for the article of clothing are set up cleanly in relation to the body.


#7

Thanks everyone for reply.

i like bone resize idea, i understand it will work correctly in JME :slight_smile:

bone resize + texture modification in shader sound like current best idea IMO.

  1. Looking in blender for result like @thetoucher said.
  2. Then resize same way in JME to get same/similar result.

If i will scale once when loading and cloning model, then i belive rigid body - physics and animations
will work correctly after modifications.

Also i will no need replace JME basecode that is great +.

Anyway if there are even more ideas, it would be nice to hear.