Want to build Mesh Painting app -- I know how -- preferences poll

During one of my meditative periods today, I realized how to make a mesh painting tool – an application that loads a mesh and lets you paint directly on it, then creates a texture that will wrap properly onto the mesh. I was also planning on giving an interface so that you could bind Cg-based vertex and fragment programs into the pipeline, which would allow you to paint normal-maps directly onto the object and see it in real-time.

Being only a hobbyist with limited real-world workflow experience, I was wondering if some of you real graphics guys (and/or gals) could give me some pointers on the following issues:

  1. What is a good object format? I was partway through a trueSpace 3.2 system when I noticed they don’t store normals, which makes it difficult to get things to look right. I’ve done some exporting from Blender via the Python interface. I will probably go with the Blender/Python exportin for myself, just because its a free tool that I can justify using for a hobby. But since I have to translate to some other format anyway, are there any suggestions?

  2. I should be able to support per-vertex UV coords and anything glGenTexCoord supports. Are there other texture mapping systems I need to understand?

  3. I am somewhat naive on the perils of UV mapping. I know that some mappings cause poles and other “discontinuities” (ex: spherical mapping compresses all points along the top edge into a single point at the north pole, cylindrical mapping does a radial mapping of top edge along top surface, etc). I have also seen some stuff suggesting that there are higher-space texture coordinates (UVS or UVST) that help with certain kinds of problems, but I have not yet wrapped my brain around what the problems are. Any kinds of accumulated knowledge would be quite handy.

  4. Vertex skinning: Do vertex skinned models just supply a UV coord for each vertex, or is it more complicated than that? If more complicated, how should I handle the mapping, given that I probably will not support changing the pose of the character in my app?

  5. I intend to give the program away, with a “send money if it makes you feel better” note. Purely out of curiosity, how much would a hobby-quality, dubiously supported mesh painter application be worth to you? $0 is a perfectly valid response, even if you would use it

  6. Pretty much anything else that you think would be worthwhile to warn me about…

Thanks for any feedback.

The biggest issue is getting it into someone’s workflow. i.e. format readers and writers.

A nice tool that does one thing well is it’s valuable but only if it can be used on your existing data.

Plugins help here and APIs in the big modelling tools to incorporate stuff like this and use it as part of your workflow.

Something that lets the MD* junkies paint their meshes might be cool for the masses but check what’s out there already.


Please note that most serious modeling enviroments (3dsmax and Maya at least) already support this functionality. With this in mind, the quake community might be a obvious target group, in which case the md* formats should be fine.

Models will typically have some kind of hand made UV mapping, which practically always has seams in it, so make sure you handle the seams somehow. Other that that, basic UV mapping should suffice.

You should also think what the program will be used for. Two typical uses are painting a final texture and painting a rough prototype to help you paint a final texture in a painting program. If you select the former, well, you might have to concentrate on the tools quite a bit…