Sunday, May 30, 2010
Windows build still broken
Seems I was a bit quick in declaring that the nightly builds are back online. It seems that while the linux builds work, there is still some problem with the windows build. At the moment it pukes on the new GLEW dependency, and I'm not altogether clear on what to do about it. If you feel like helping out, check the relevant post in the forums (bugs section).
Friday, May 28, 2010
Nightly builds temporarily failing
Due to a new library dependency, the nightly builds are failing to compile. This means that currently, non-functional files are distributed to the tuxfamily host.
I will take a look at this issue during the weekend and update the build scripts, hopefully resolving the issue.
I will take a look at this issue during the weekend and update the build scripts, hopefully resolving the issue.
Tuesday, May 25, 2010
Proxy configuration and administration
ascottk has contributed yet another proxy mesh. It is a nice quad mesh with the same uv layout as the original mesh. Hence you can use the same textures for both the high- and low-poly meshes.
With three low-poly meshes around, it becomes necessary to introduce some way to administrate them. Including all of them in every export both takes time and disk space, to no avail; I doubt that anybody wants more than one low-poly version of each character.
Which proxy meshes that will be included in the mhx file / exported as obj files is defined in the file proxy.cfg at the makehuman top level. The file simply lists the file paths to the proxy definitions to be included. Lines that start with a # are comments which are ignored. This is in svn now and hence in tomorrow's nightly build.
MakeHuman will also look for proxy.cfg in your home folder. Unlike what I thought, the home folder on Windows is not My Documents, but rather one level above it. As a second choice, MakeHuman also looks for this file at your computer's top level, i.e. C: on Windows.
I have started to write a description on how to create your own proxy definition file. So far the page differs little from the addendum to my previous blog post, but updated information will go there. Once the low-poly mesh is available, creating the proxy file is largely done by a script, but some manual tweaking is necessary for good results.
With so many low-poly meshes available, and others perhaps in the making, it is not clear to me whether all should be included by default in the MH distribution, or if we should set up some site where artists can share proxy files. Such a site could be used to share other resources as well.
With three low-poly meshes around, it becomes necessary to introduce some way to administrate them. Including all of them in every export both takes time and disk space, to no avail; I doubt that anybody wants more than one low-poly version of each character.
Which proxy meshes that will be included in the mhx file / exported as obj files is defined in the file proxy.cfg at the makehuman top level. The file simply lists the file paths to the proxy definitions to be included. Lines that start with a # are comments which are ignored. This is in svn now and hence in tomorrow's nightly build.
MakeHuman will also look for proxy.cfg in your home folder. Unlike what I thought, the home folder on Windows is not My Documents, but rather one level above it. As a second choice, MakeHuman also looks for this file at your computer's top level, i.e. C: on Windows.
I have started to write a description on how to create your own proxy definition file. So far the page differs little from the addendum to my previous blog post, but updated information will go there. Once the low-poly mesh is available, creating the proxy file is largely done by a script, but some manual tweaking is necessary for good results.
With so many low-poly meshes available, and others perhaps in the making, it is not clear to me whether all should be included by default in the MH distribution, or if we should set up some site where artists can share proxy files. Such a site could be used to share other resources as well.
Tuesday, May 18, 2010
Two new low-poly meshes
One unexpected benefit of my poor proxy mesh was that it triggered contributions from others. Two talented artists have made low-poly meshes, far better than mine. They have now been brought into MH, and are exported, both in the mhx file and as separate obj files. For the moment, only one of the meshes can be imported into Blender 2.49.
The meshes have been named after the contributors' user names in the forum. The proxy meshes are quite different, and I imagine that both can be useful. My own low-poly mesh has also been removed, missed by nobody. Some characteristics of the two meshes:
Rorkimaru:
* Very low poly
* Quads
* Two fingers and a mit
* Disconnected body parts, originally, but I seem to have changed that when I brought the mesh in MH.
* UV coordinates
forsaken:
* Medium poly count
* Triangles
* Five fingers
* Follows high-poly mesh closely, including inside mouth.
* No UV coordinates, at least not yet.

Adding your own proxy mesh
Black Moderate asks how make a proxy mesh of your own. I will describe how to make it, but currently the only way make MakeHuman recognize it is to overwrite one of the existing proxy definitions. If you do that, make sure to back up your own file before you download MH again, because it will be overwritten.
The definition of the two current proxies are located in the files forsaken.proxy and Rorkimaru.proxy in the data/templates/ folder. The files consist of several sections:
Mesh without UVs:
1. Association of proxy verts with original verts.
2. Proxy faces, as in an obj file without UVs.
Mesh with UVs:
1. Association of proxy verts with original verts.
2. Proxy UV coordinates.
3. Proxy faces, as in an obj file with UVs.
A vertex in the proxy mesh simply inherits everything from its parent vert in the original mesh: morph targets, vertex weights, shapekeys, etc.
How to make a new proxy mesh:
1. Import the default mesh into Blender (a recent build of 2.5!) and rename it "Human"
2. Import your proxy mesh, or make one with the retopo tools. It must be called "Proxy".
3. Run the script utils/mhx/defineProxy.py. I just committed it to svn, so it will be there in tomorrow's nightly build. The variable path at the end of the script is your output file.
4. The script creates a proxy file without UVs.
To add UVs:
1. Export your proxy mesh as obj.
2. Delete the Faces section of the proxy file.
3. Copy the tex verts (lines that start with vt) and faces (lines that start with f) from the obj file into you proxy file.
4. Insert the line "TexVerts" before the first vt and "Faces" before the first f.
5. Delete all vt's and f's.
6. Compare with Rorkimuru's file to see how it should look.
How to improve vertex association
The algorithm works by associating a proxy vertex to its closest neighbor in the original mesh. Unfortunately, it becomes confused in areas where the original mesh has overlapping parts. The mouth area is especially nasty, but also the eyes and lips can cause problems. To assist the algorithm, you can assign vertex groups to both the proxy and the original mesh, e.g. to the upper/lower teeth, upper/lower gum, tounge and body. The program will then assign the closest vertex in the correct vertex group.
The meshes have been named after the contributors' user names in the forum. The proxy meshes are quite different, and I imagine that both can be useful. My own low-poly mesh has also been removed, missed by nobody. Some characteristics of the two meshes:
Rorkimaru:
* Very low poly
* Quads
* Two fingers and a mit
* Disconnected body parts, originally, but I seem to have changed that when I brought the mesh in MH.
* UV coordinates
forsaken:
* Medium poly count
* Triangles
* Five fingers
* Follows high-poly mesh closely, including inside mouth.
* No UV coordinates, at least not yet.

Adding your own proxy mesh
Black Moderate asks how make a proxy mesh of your own. I will describe how to make it, but currently the only way make MakeHuman recognize it is to overwrite one of the existing proxy definitions. If you do that, make sure to back up your own file before you download MH again, because it will be overwritten.
The definition of the two current proxies are located in the files forsaken.proxy and Rorkimaru.proxy in the data/templates/ folder. The files consist of several sections:
Mesh without UVs:
1. Association of proxy verts with original verts.
2. Proxy faces, as in an obj file without UVs.
Mesh with UVs:
1. Association of proxy verts with original verts.
2. Proxy UV coordinates.
3. Proxy faces, as in an obj file with UVs.
A vertex in the proxy mesh simply inherits everything from its parent vert in the original mesh: morph targets, vertex weights, shapekeys, etc.
How to make a new proxy mesh:
1. Import the default mesh into Blender (a recent build of 2.5!) and rename it "Human"
2. Import your proxy mesh, or make one with the retopo tools. It must be called "Proxy".
3. Run the script utils/mhx/defineProxy.py. I just committed it to svn, so it will be there in tomorrow's nightly build. The variable path at the end of the script is your output file.
4. The script creates a proxy file without UVs.
To add UVs:
1. Export your proxy mesh as obj.
2. Delete the Faces section of the proxy file.
3. Copy the tex verts (lines that start with vt) and faces (lines that start with f) from the obj file into you proxy file.
4. Insert the line "TexVerts" before the first vt and "Faces" before the first f.
5. Delete all vt's and f's.
6. Compare with Rorkimuru's file to see how it should look.
How to improve vertex association
The algorithm works by associating a proxy vertex to its closest neighbor in the original mesh. Unfortunately, it becomes confused in areas where the original mesh has overlapping parts. The mouth area is especially nasty, but also the eyes and lips can cause problems. To assist the algorithm, you can assign vertex groups to both the proxy and the original mesh, e.g. to the upper/lower teeth, upper/lower gum, tounge and body. The program will then assign the closest vertex in the correct vertex group.
Friday, May 14, 2010
Sunday, May 9, 2010
Bending elbows and knees for better IK
In Blender (and I think also in Maya), inverse kinematics works best if the character is modelled with slightly bent elbows and knees. This tells the IK solver the preferred direction to bend the joints. However, the MH mesh was not modelled in this way. Since I don't think that Manuel is interested in modifying the mesh, the import script was modified instead. Now the character comes in with bent joints, and my tests indicate that it is indeed easier to make the arms and legs to bend the way they should.
Saturday, May 8, 2010
New Subsurface scattering method for Aqsis & C
Well, alpha5 was out 2 days ago, but we are already working hard on alpha6.
There is a new sss method to improve the skin shader. It work fine with Aqsis (and with all engines renderman compliant).
The image below show a light test. Note the sss rendering was done in 5.54 sec!
Stay tuned for further updates.
There is a new sss method to improve the skin shader. It work fine with Aqsis (and with all engines renderman compliant).
The image below show a light test. Note the sss rendering was done in 5.54 sec!
Stay tuned for further updates.
Labels:
aqsis,
renderman,
shader,
skin shader,
sss,
subsurface scattering
Changes to nightly builds, linux alpha
Since some time back I have been dissatisfied with how the build environment is looking for the nightly builds and have planned to rebuild it. The way it currently looks is based on ad-hoc solutions where I have set up build scripts on various machines on the university, wherever there was some space left.
Since we both have a new alpha release now, and Ubuntu 10.04 seem to completely have dropped support for python 2.5, I've decided it's time to do something about it.
Thus, as a head's up: The nightly builds might be a bit erratic and/or not update for the next days while I migrate and rewrite the build scripts. Once the build environments have stabilized I will also make and post linux versions of the latest alpha.
Since we both have a new alpha release now, and Ubuntu 10.04 seem to completely have dropped support for python 2.5, I've decided it's time to do something about it.
Thus, as a head's up: The nightly builds might be a bit erratic and/or not update for the next days while I migrate and rewrite the build scripts. Once the build environments have stabilized I will also make and post linux versions of the latest alpha.
Thursday, May 6, 2010
MakeHuman 1.0 alpha 5 ready!!!

Changelog
GUI
- New GUI, with theme support, and even more intuitive tabs.
- Better sliders, text fields.Realtime preview for many changes.
- Hair preview in 3d.
- Global cam button: automatic zoom out to the body
- Face cam button: automatic zoom in to the head
- Background button: to enable/disable the background.
Export
- Export hairs as a wavefront obj polygons (experimental)
- Export hairs as a wavefront obj curves (experimental)
- Export a full character from makehuman to Blender, using the mhx format, with armature and expression support.
- Export a full character in obj format, with or without face groups and skeleton
- Export a full character in collada dae format (experimental)
- Export a full character as proxy lowpoly wavefront obj
Save
- Files are saved in home folders now.
Modelling
- Hair details: color and ribbons width.
- Nose shape tool: to navigate the most commonly perceived noses.
- Ears shape tool: to navigate the most commonly perceived ears.
- Jaw shape tool: to navigate the most commonly perceived jaws.
- Mouth shape tool: to navigate the most commonly perceived mouths.
- Breast size tool: to set the female breast size.
- Breast firmness size: to set the female breast firmness.
- Head shape tool: to navigate the most important head types.
- Head age tool: to change the age of the face.
- Face angle tool: to change the side facial angle.
- Pelvis tone tool: to increase or decrease the pelvis tone.
- Stomach tool: to increase of decrease stomach volume.
- Buttocks tool: To increase or decrease the buttocks volume.
makehuman 1.0 alpha 5
Subscribe to:
Posts (Atom)


