Recruiting for Makehumans Future!

Locked forum where the devs and staff post news about the makehuman software

Re: Recruiting for Makehumans Future!

Postby tomcat » Wed Mar 12, 2025 1:54 pm

I just wanted to say that if you need to test the new MH on Heretic Win (W11), I'm always at your service.
Foreigners' reactions to Russian "Bird's Milk" candies
— Are your birds being milked?
— In Russia everyone is milked. Here even the zucchini is used to make caviar.
User avatar
tomcat
 
Posts: 477
Joined: Sun Sep 27, 2015 7:53 pm
Location: Moscow (Orcish Stun), The Aggressive Evil Empire

Re: Recruiting for Makehumans Future!

Postby punkduck » Tue Mar 25, 2025 10:44 pm

Hi Tomcat & all others ...

Well we can slowly start with a few fixes here and there :lol:

Before I go too much into details, I will explain why I think I need to do it anyway.

I tried to add a context help and since I am lazy in documentation I did it in a way I do not have to write it twice. One time inside MakeHuman and one time in our "static page". So I started like this:

contexthelp.png
context help, each screen will also present a context help


When one presses the help button in the menu a context help can be displayed. PySide6 understands a bunch of html commands, as you can see in the black editor window. So <li> for list and <h1> for headline type 1 etc.
It even understands tables (not very beautiful though) and can display images (which are somewhere reachable). So for an inline documentation I think that is pretty good. And for Hugo?

Well as you may recognize HTML comments are skipped (the line starting with <!-- and with the screenshot) when displayed. So this is my helper for additional screenshots in Hugo, since a context of course is missing and without a screenshot the documentation in Hugo would be hard to understand. Hugo is not HTML, it is a markdown (dialect?) ... so I needed a converter. I did a quick hack and changed markdownify on my box to first replace the comments with <img> commands and then convert this HTML text to markdown language. Markdownify internally uses "beautiful soup", an HTML analyzer. I guess I will strip that program to our needs in the end or rewrite it. Nevertheless I got this result after putting icons in one folder and screenshots in another:

contexthelp2.png
after conversion to markdown


@Tomcat:

So when I write the documentation I often find errors. Like to do a screenshot for an eye-color just replaced the eye-mesh icons. A material for a proxy? Well the material is only linked to the body, so some of the ideas are sometimes wrong. I also had resets of "simple targets" when I changed a macro slider. This need to be fixed all slowly. Today I did the documentation for the skeleton and realized there is no possibility to supply an icon directly from inside makehuman (screenshot as thumbnail) because the representation of skeleton is still a stick-man only ... a bunch of TODOs though.

And then there are those problems I hate. The normal shader is still crap. It is not only wrong, it also seems to create a flat mesh with normals projected on it. So the idea with geometry shader between vertex and fragment shader could be wrong here. The loop algorithm first looked good but creates sometimes junk for the textures (of course when one takes skin it did not look that awful). So maybe I change that from approximation (Loop for triangles, Catmull-Clark for quads) to an interpolation method (butterfly for triangles, Kobbelt for quads). Interpolation means, the vertices stay where they are, but there will be vertices in between. This keeps the position of the vertex inside the UV-map. The loop algorithm WILL always not work correctly at seams, Since a vertex might drift onto the other side of a seam.

@All team members:

About documentation. There are several possibilites. I can do an own branch. But then the documentation will always be invisible in our website. What do you think, should I already add it step by step. Or should we better wait?

@Tomcat: you can mention bugs in github, in a PM or even here. Or we open a new thread to close this one like "bug-fixing phase" or "way to production". It will not only be bug-fixing, it also might be a discussion how to solve a problem, I sometimes simply have contradictions. What I also will not do is rewrite all again but on some places I already had the first small "redesigns".

I mostly only try on a Ubuntu system, not the newest (classically there are a few restrictions like numpy changed a bit) but I will do updates soon. My Windows is still a version 10 and I did update of MakeHuman there only when I sent a new version to Canada (last one was before Christmas). Usually it mostly works but there also had been a few surprises. E.g. I ruined the asset-installer by creating a new dependency short time ago,

The green dots indicate, that I nearly work on the system daily. And then there is my normal job as well :roll: and outside the sun is shining.

https://github.com/black-punkduck
User avatar
punkduck
 
Posts: 1260
Joined: Mon Oct 17, 2016 7:24 pm
Location: Nuremberg, Germany

Re: Recruiting for Makehumans Future!

Postby Ricardo2020 » Wed Mar 26, 2025 3:15 am

About documentation here, I think it would be prudent to get the Git version right as being well polished in terms of it looking like it is beyond the beta stage and closer to release candidate when things get stable with only minor changes as things are found and fixed prior to gold. This way, folks avoid confusion and you avoid a ton of rewrites and a flood of resultant forum questions from the newer artists...
Paddle faster. I hear charango music!
User avatar
Ricardo2020
 
Posts: 272
Joined: Sat Apr 18, 2020 4:17 pm
Location: Tennessee

Re: Recruiting for Makehumans Future!

Postby tomcat » Thu Apr 03, 2025 1:50 pm

Procedural creature generation. I don't know how relevant this is and might be useful for MakeHuman. But for creating a large number of characters in games it is very helpful.

https://blog.runevision.com/2025/01/pro ... -2024.html

https://cdn.masto.host/mastodongamedevp ... a56d11.mp4

https://mastodon.gamedev.place/@runevis ... 1417717939

https://mastodon.gamedev.place/@runevis ... 3683006914

https://mastodon.gamedev.place/@runevis ... 1691078805

Image

Eleven parametric creatures along with their respective reference models or images.
Foreigners' reactions to Russian "Bird's Milk" candies
— Are your birds being milked?
— In Russia everyone is milked. Here even the zucchini is used to make caviar.
User avatar
tomcat
 
Posts: 477
Joined: Sun Sep 27, 2015 7:53 pm
Location: Moscow (Orcish Stun), The Aggressive Evil Empire

Re: Recruiting for Makehumans Future!

Postby punkduck » Sat Apr 12, 2025 7:19 pm

tomcat:
Well in a way that system is sth. between refinement and morphs. It could be kinda simulated with our system as well, but the principle is different and our geometry usually has the same number of faces, But depending on morphs this could be created rather similar. Especially since our bones also are changed with the morphs.

I started with a way to animate the character inside MakeHuman. I decided a way similar to the expression editor. It should apply for at least 2 purposes:
  • Create own poses without blender or other software.
  • Tweak animations. Especially when e.g. hands intersect with body it was mostly annoying in game engines.

So an example with only head, upper- and lower arms working. At least I can do my own censorship already :lol:
poseeditor1.png
hide nudity :)


And I tried the "arms behind head pose". Not yet 100% convincing. But for a 1st try also not that bad.
not100percent.png
one of these terrible poses I always hated


Another example: meanwhile my PBR shader reflects the environment (I use that only for metal, although it would be not incorrect for a "wet" character as well). I will create sliders for hand + fingers next and hope the sword will then "kinda work".
testingpose.png
arms okay but fingers not yet


Next step I will try to work with sliders with "mid-position" (head turn left + right is not that perfect, "head turn" would be easier for the user). And then saving + loading, when I leave that editor all is gone. It is an own format. using the matrix poses we use internally when we e.g. create an expression, so not bvh. It would only support scaling and rotation. The only bone in our skeleton not being fixed to a relative location is the root bone. Not that good for e.g. jiggle bones which can start from a different location. And then I need to figure out how to overlay or replace an animation. It will be pre-calculated, I allready do that, when I switch off face-animation. When my wonder woman is able to walk without hurting herself with the sword, then that tweak method should be okay :lol:

Some bugs are fixed. But I will create new ones :roll:, do not worry.

Greetings,
Punkduck
User avatar
punkduck
 
Posts: 1260
Joined: Mon Oct 17, 2016 7:24 pm
Location: Nuremberg, Germany

Re: Recruiting for Makehumans Future!

Postby tomcat » Sat Apr 12, 2025 10:14 pm

punkduck wrote:
  • Tweak animations. Especially when e.g. hands intersect with body it was mostly annoying in game engines.

I believe this problem should be solved in the game engine. Even if it is done in MakeHuman, it is unlikely to transfer it correctly to the engine. Which one, by the way? Engines are not standardized and what will look good in one may look terrible in another.

How convenient, in general, to create animation in MakeHuman? This is a completely different specialization of the program.

And I tried the "arms behind head pose".


Here it is necessary to connect the movement of the bones. I suggest leaving this problem to the game engine.

Image
Foreigners' reactions to Russian "Bird's Milk" candies
— Are your birds being milked?
— In Russia everyone is milked. Here even the zucchini is used to make caviar.
User avatar
tomcat
 
Posts: 477
Joined: Sun Sep 27, 2015 7:53 pm
Location: Moscow (Orcish Stun), The Aggressive Evil Empire

Re: Recruiting for Makehumans Future!

Postby punkduck » Mon Apr 14, 2025 9:27 pm

Hi

I tried to import the characters to Godot and unreal. Since formats like glTF and fbx are standardized the result is not that different. Godot was quite similar to the blender output, But there I needed to add the animations myself just from the beginning.

Whereas Unreal looked terrible in the beginning. The reason was, because I thought the internal game skeleton is a must. Especially because of that default mannekin and some animations, which I wanted to use. And that is, what most people do. Either taking animations from Adobe or trying to convert that stuff. And I understand why people do that. I tried a few without this. It takes some time ... and most people do not spend a lot of time for that.

Later I used our skeleton and my own animations (like I did in Godot with the standard skeleton we use) and it mostly worked. Limits are weird effects when a rotation cannot be calculated directly. Or for all: quaternions flip back and do no pirouettes (so root bone should always be Euler, quaternions are -180 to 180 degrees normally) :lol:

And then there is another problem. Our body is weighted and the weight transformation to another bone-set is not always the best (simply because of mathematics). And these weights were used in the engine. In one of the Sim-Worlds the system created own weights. This could be a catastrophe for obvious reasons (it is simply a distance algorithm). A character sitting cross-legged looked weird.

The reasons are sometimes bone-axes but also unfitting sizes. The game engines use preferable fast skinning algorithms (this is needed for speed). A few techniques like game engine skeleton as a driver skeleton + extra bones to keep distance of skin like in Metahuman help, they simulate fat or muscles (and if you change bone-length these muscles might also do some effect). But the skin has to be weighted to these extra bones. Otherwise the bones are simply useless.

Without changing too much, in Blender there is also a method called "keep volume" or more correct: "volume preserving mesh skinning". What works fine for a twisted lower arm is a catastrophe for that arms-over-head-pose, it creates a body-builder. Mindfront did that and I did that, too, but only in Blender.

The reason for an own editor:

1) I created a lot of animations in Blender and sent them to Flute to help her. It was an idea to help these people in future who neither want to use an extra program like Blender nor do want to play with the character in a game (engine). When I started MakeHuman years ago I was not really happy, when I saw that the character was glued in A-position.

2) Our bvh files mostly had problems with arms intersecting etc. This could be fixed easily with just tweaking the pose a bit. And then a beginner has a more healthier character :mrgreen:

3) The code is nearly identical for expressions and poses. I create a common class and added two inherited ones which are more or less only super(). calls with a parameter here and there. Most is not programming, it is creating poses in Blender for the sliders, which yield in 3x3 matrices (saved as a vector) in a json file. It is easy to maintain, compare to the old face-units.bvh we had before :roll:
https://github.com/makehumancommunity/makehuman-pyside6/blob/main/data/base/hm08/body-poses.json

There will be a few methods for symmetry (like we use for targets) later.

Honestly: using the expression method also for the body is not that bad. I did the following image as a test today, For a single pose (only head, arms, hands and fingers work atm) it is okay.

dreamy.png


And the image is NOT from blender, it is from the new Makehuman. No asset is stolen from another tool, I did all myself with our base mesh
By the way: i checked reload of skin function until she had no more issues and also if makeclothes worked for the hair. And I learnt that the material exporter was ruined. So at least a good test (not to mention further errors ...) :?

... I just need a bit more of PBR shading, a working normalmap and then a smoothing algorithm which does not have the problem of weird UV orientations. And shadow-maps maybe. ;)

And for all those who want more, they need to use blender then or for more then one animation cycle they should use a game engine..

Need to sleep, brain explodes ...

Punkduck
User avatar
punkduck
 
Posts: 1260
Joined: Mon Oct 17, 2016 7:24 pm
Location: Nuremberg, Germany

Re: Recruiting for Makehumans Future!

Postby RAS_MH » Tue Apr 15, 2025 11:13 am

Hi, I found a problem with running makehuman-pyside6.

When I run it, it gives this error:
Code: Select all
Traceback (most recent call last):
  File "/home/ras/makehuman-pyside6-main/makehuman.py", line 135, in <module>
    main()
    ~~~~^^
  File "/home/ras/makehuman-pyside6-main/makehuman.py", line 123, in main
    mainwin = MHMainWindow(glob)
  File "/home/ras/makehuman-pyside6-main/gui/mainwindow.py", line 240, in __init__
    self.glob.randomValues = RandomValues(self.glob)
                             ~~~~~~~~~~~~^^^^^^^^^^^
  File "/home/ras/makehuman-pyside6-main/gui/randomwindow.py", line 30, in __init__
    self.tr = TargetRandomizer(glob)
              ~~~~~~~~~~~~~~~~^^^^^^
  File "/home/ras/makehuman-pyside6-main/core/randomizer.py", line 55, in __init__
    bi = bc.baseInfo
         ^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'baseInfo'


A small change in the randomizer.py code - solves this problem:
Code: Select all
 54|        bc = self.glob.baseClass
 55|
 56|        if bc:
 57|            bi = bc.baseInfo
 58|            grps = []
 59|            #
 60|            # get infos from base.json, section "random"
 61|            if "random" in bi:
 62|                m= bi["random"]
 63|                for name, key in m.items():
 64|                    if name == "nonsym":
 65|                        self.setNonSymGroups(key)
 66|                    elif name == "gender":
 67|                        self.gendName = key
 68|                    elif name == "ideal":
 69|                        self.idealName = key
 70|                    elif name == "groups":
 71|                        for sname, preselect in key.items():
 72|                            self.possibleGroups[sname] = preselect
 73|                            if preselect:
 74|                                grps.append(sname)
 75|                    elif name == "rules":
 76|                        for rname, rule in key.items():
 77|                            self.rules[rname] = rule
 78|
 79|            self.setGroups(grps)


But it's more like dealing with the consequences rather than solving the problem.
It looks like makehuman should load some config on startup, but there is no exception handling for the case when there is no config.
I don't have a lot of insight into the architecture of the project yet, so I won't say for sure.
RAS_MH
 
Posts: 7
Joined: Sun Apr 13, 2025 11:26 pm

Re: Recruiting for Makehumans Future!

Postby tomcat » Tue Apr 15, 2025 4:36 pm

punkduck wrote:It was an idea to help these people in future who neither want to use an extra program like Blender nor do want to play with the character in a game (engine).

That's what I'm trying to do. Only I'm trying to do it in a game engine, and you're basically making a version of the engine (albeit a lightweight one). Alone. I was suggesting making a new version of MH in Godot. With its shaders, materials, lighting, physics. Users don't need to know the engine itself. It would just be an application (standalone) based on the engine.

Godot can export scenes to glTF, so there would be no problem with exporting models for use in other engines.
Foreigners' reactions to Russian "Bird's Milk" candies
— Are your birds being milked?
— In Russia everyone is milked. Here even the zucchini is used to make caviar.
User avatar
tomcat
 
Posts: 477
Joined: Sun Sep 27, 2015 7:53 pm
Location: Moscow (Orcish Stun), The Aggressive Evil Empire

Re: Recruiting for Makehumans Future!

Postby punkduck » Tue Apr 15, 2025 10:21 pm

RAS_MH wrote:Hi, I found a problem with running makehuman-pyside6.

When I run it, it gives this error:
...

But it's more like dealing with the consequences rather than solving the problem.
It looks like makehuman should load some config on startup, but there is no exception handling for the case when there is no config.
I don't have a lot of insight into the architecture of the project yet, so I won't say for sure.


Fixed.
https://github.com/makehumancommunity/makehuman-pyside6/commit/e34751a6f36cb985495f441920beec18de12be0c

This happened because my mesh was always pre-selected and THEN I added that random-function, pre-calculated some stuff and put it to the baseClass and of course forgot that in the beginning there is no selected baseClass. In the way you was right. Your solution would work, but when you then select a mesh the randomizer would not work. Of course after restart, but only when the base mesh is preselected it would magically work. Try to explain that to the audience ;)

I had to simulate this with -b none option. ... You could have used -b hm08 option then it would have worked like on my box.

Anyway: Thank you. Most people testing it already pre-selected the normal mesh so I do not even get the information from people testing ... it
User avatar
punkduck
 
Posts: 1260
Joined: Mon Oct 17, 2016 7:24 pm
Location: Nuremberg, Germany

PreviousNext

Return to News from the crew

Who is online

Users browsing this forum: No registered users and 2 guests