Andrew Shpagin

Painting color over voxels

61 posts in this topic

Let us discuss it there. There are 2 approaches:

1) Paint over vertices. VERY easy to implement, only couple of days. BUT: any voxel operation remakes vertices in drawn cells at all (every cell is 8x8x8 voxels). This is problem.

2) Paint over voxels in volume. Not easy to implement because:

- exery voxel takes 2 bytes now (16 bit precission). Color is 3 or even 4 bytes more. Much more memory consumption, less speed because I need to preserve color (3 additional channels) during all operration. + layers... uff

So if you have any idea, please share it there.

Share this post


Link to post
Share on other sites

Well Painting over vertices could be an "OK" solution if the idea was just to get general colouring down, then later after retopo bake it or otherwise transfer it to an image map for further refinement. It seems like that would be more work for the end user though.

Share this post


Link to post
Share on other sites

This morning, with the alpha 33 update, I was able to voxel away, turn to polys, and reimport without a hitch.

The mesh out of the voxels was 700,000 + polys. I put it through MeshLab (open source decimator) and brought it down to 10000 polys without any loss of shape or form whatsoever.

Then I took it into 3dC and painted away with the coating tools. Everything in this particular flow worked perfectly.

What I'm wondering is ...since you don't have a 'usable' mesh until you retopo or turn 'to polys', what is the benefit of painting or adding color while still in voxel mode, other than the shaders?

I ask as a novice sculptor. It was no big hassle to export out and import back in.

Share this post


Link to post
Share on other sites

Interesting topic. The existing workflow is alright but it would be awesome to be able to color voxels.

#1 sounds bad, unless you can continuously and smoothly transfer colors to new vertices when mesh changes

#2 sounds better, any ideas you can get from ZB3? the way they handle mesh/colors memory/file size is impressive

#3 just an idea - having separate color "voxels" which will be independent from geometry ones, separate color space of some sort

Share this post


Link to post
Share on other sites

Painting On Polygons:

Voxel sculpting is attempting to be the equivalent of or better than traditional "real" sculpting. In keeping with this analogy, no sculptor would ever dream of applying a "finish" or to "paint" their work until it was absolutely and totally complete with regard to its final form and texture. Any sculptor who worked by adding some detail and refinement, applying finish or paint over that, changing his mind, obliterating the finish by re-sculpting, then repainting, without finalizing the form and texture first, would be considered quite irrational.

Painting of the polygonal "skin" would be completely adequate, if we stick to the traditional analogy, since no changes would be made after paint was applied. A person can always save an "unpainted" version of his sculpture, if he anticipates making structural changes later.

If anyone wanted to compromise this method, I suppose a kind of barrier or blocking system could be applied, (like the one currently being used for the "hide" function), where the paint is only erased in the "blocked out" area that is being re-sculpted. All surrounding paint and voxel structure would be preserved because of the "barrier".

Once the polygonal "skin" becomes painted, both sculpture detail and paint could be "baked" for transfer to the "coating" area of 3D-Coat.

And, if Andrew can implement polygonal painting in very short order, then, I think, we all would get a huge benefit in terms of speed of production, (since retopology takes so much time), and not everyone will be sculpting and painting for gaming or animation purposes - proper topology is not needed for static pieces of 3D art.

The 3D-Coat gallery could then begin to populate with much more interesting pieces of art as an additional benefit.

Psmith

Share this post


Link to post
Share on other sites

Ok my 2 cents B)

I agree with Psmith in that painting is usually last in the process. Also unless the voxel painting tools give me the exact type of tools including layers and splines and all the great stuff in 3d-coat now I dont see the point. I would much rather do that type of work with those tools.

Most of us are destined to use our models in other rendering programs that are going to require those texture maps and lower poly models. To me the emphasis and work should be focused on a smooth work flow from voxel sculpting to polygon mesh. Right now it is necessary to retopo the model if the artist plans to use it "efficiently" in another program. Zbrush has a slight advantage here in that you have multiple levels of subdivision and you can quickly export a lower poly model and use displacement and normal maps. In voxel sculpting we are stuck with extreemly high polys and the need to retopo.

Personally I would like to have a way to export a low poly model with displacement and normal maps without retopoing then bring it in to the painting area of 3d-coat to add paint and possibly add more displacement for finer details.

Share this post


Link to post
Share on other sites

My current view is close to that. At least there will be two ways:

1) Retopo and paint in 3DC

or

2) Auto - simplify to 10-200k, auto unwrap, move vox details to displacemetn and paint. Updating voxel mode will be possible:

- vox sculpt->merge simplified->paint->vox modification->merge & (simplify or retopo) again, take shape from voxels, color from current scene.

Share this post


Link to post
Share on other sites

Voxel Mesh Simplification

Andrew:

Do you feel you have a method for simplifying a voxel mesh that would make it useful, as it is, (automatically simplified), for animation purposes, (let's say, in Blender, for example)? Or, would one still need to retopologize for this kind of use?

Are you saying that you have a way to allow painting in the "voxel" area that could be transferred, (along with high frequency detail), and merged into an ordinary 3D-Coat scene, with an "auto-simplification" algorithm? Would this simplified mesh consist of quadrangles or triangles?

As you can readily see by observing the forums for programs like "Brand X", many people are only interested in generating static "works of art". There are also a minority of users who must have accurate geometry for animation in linear form or interactive forms - for games and entertainment.

It would be wonderful if you could offer beautifully structured "automatically simplified" meshes suitable for gaming and animation purposes. It would also be quite amazing if these "auto-simplified" meshes were only good enough for internal use within 3D-Coat, especially if they could be merged, intact, with their voxel details and colors. But, I think you have stated that engineering a process for creating truly useful, (for purposes outside of 3D-Coat), "automatically simplified" meshes will take quite a lot more time.

Maybe, for the short term, a "good enough" solution would be welcome and appreciated, allowing 3D-Coat users to quickly and efficiently make "works of art". But, in your long term plan, you could work on that perfect conversion algorithm that would provide even more production speed and usefulness for the professional content developers among us.

Share this post


Link to post
Share on other sites

I personally prefer the voxel painting route, even if file size does factor into the equation. My main concern has been mentioned in the forums and in regards to the process as a whole - being able to interactively increase and decrease resolutions on the mesh being painted, and having layers where details can be turned on and off, would alleviate the need for the many unnecessary incremental saves I make in order to retain crucial base details as I further work on a model... That being said, I currently have 6+ versions of the same model, all at different states, most of those due to increasing the resolution, and major features I'm not sure whether I'm ready to commit to.

Once this factor is out of the way, and I'm not saving hundreds of megabytes on various increments of the same model, then I'd gladly spare extra space for the voxel color information - whatever gets the best looking result in the end Andrew, that's what I'm for. Naturally, as the program matures I would expect for optimizations to be made, but things such as this should be expected in the beginning.

Share this post


Link to post
Share on other sites

If painting color over voxels means more memory usage and smaller resolution for sculpting I don't think is a good idea.

Probably is better to do it after,when the mesh is reconstructed,or at least as an user option,if the users don't need colors on voxel there should be able to not use that(to not use much more memory)

Share this post


Link to post
Share on other sites

I thing its useless to thing about voxel sculpting now. These are not only 3 additional bytes for color, but another byte for specularity, another for alpha, another for this or that ... and it isn't possible with current desktop hardware to carry all these informations in everyone of milion voxels in scene.

It would great of course to have full voxel sculpting and painting, but maybe in ten years we will have HW for that.

Artag> Personaly i think that the problem isnt in file sizes on HDD, but in RAM consumption in real-time.

Share this post


Link to post
Share on other sites
Let us discuss it there. There are 2 approaches:

1) Paint over vertices. VERY easy to implement, only couple of days. BUT: any voxel operation remakes vertices in drawn cells at all (every cell is 8x8x8 voxels). This is problem.

2) Paint over voxels in volume. Not easy to implement because:

- exery voxel takes 2 bytes now (16 bit precission). Color is 3 or even 4 bytes more. Much more memory consumption, less speed because I need to preserve color (3 additional channels) during all operration. + layers... uff

So if you have any idea, please share it there.

i'll go with number 1, but generally speaking you wont change your sculpted mesh when your painting texture. Its a very linear process, sculpt, then paint. This isnt a deal breaker for me, i'll probably sculpt, retopologize then using normal painting tools. I think most people will do the same thing.

How about approaching the painting part more like what Zbrush does, automatically UV unwrap all the triangles, and paint on that.

Share this post


Link to post
Share on other sites
I thing its useless to thing about voxel sculpting now. These are not only 3 additional bytes for color, but another byte for specularity, another for alpha, another for this or that ... and it isn't possible with current desktop hardware to carry all these informations in everyone of milion voxels in scene.

It would great of course to have full voxel sculpting and painting, but maybe in ten years we will have HW for that.

Artag> Personaly i think that the problem isnt in file sizes on HDD, but in RAM consumption in real-time.

Agreed with you, I don't think that voxel painting is ready, from what Andrew said about memory consumption, and if you are not able to use the same tool as you got in the normal painting part of 3DCoat that's not a benefit.

A simple automatic retopology for painting is a great alternative, if you can do a retopololgy after and reproject the work you have done on the automatic mesh that can bypass the problem of direct voxel sculpting.

But an automatic retopology fully usable for animation, I think that's a dream, you can't match everyone need with an automatic retopology, at least for production environment.

Edit: Just saw that sensable added an automatic surfacing tool, you can check it in this video http://www.sensable.com/documents/Gallerie...ng_20070510.wmv

Share this post


Link to post
Share on other sites
Edit: Just saw that sensable added an automatic surfacing tool, you can check it in this video http://www.sensable.com/documents/Gallerie...ng_20070510.wmv

Interesting... But it seems that simplification that they offer is surface curvature independent, just regular grid.

Btw, recently I have brought to life my old simplification utility. I will include it in one of the next alphas.

Share this post


Link to post
Share on other sites

Sorry but I have to disagree with some of the posts here.

Memory is not a problem, at least once 3dcoat gets natively compiled in 64bits (and this is on the list of v3.0 features). I mean, come on, memory is cheap and is getting cheaper every day. If we want 3dcoat to be future proof this can't be an argument. It has to be scalable, like a machine is scalable and not limited to the least common denominator.

Also I would like to remind that video memory is much more limited than main ram (1.5 GB versus 128 GB max for xp64). Textures use vram, vertex/voxel paint use main ram. I just want to be limited by my setup, not by the application.

Texture painting? Well there's already the retopo -> UV -> regular texture painting route, so what's the point.

Don't want to retopo now? Then auto reduce -> auto UVs -> paint and retopo/transfer later. There are already many automatic reduction solutions, and Andrew already said he will integrate its own.

But in the end, to me the real innovation would be to be able to sculpt and paint with the even density provided by voxels and inside the same tool.

So the question, as Andrew mentionned, is paint over vertices and 'loose paint' when modifying sculpt or 3d voxel paint?

People mentionned the fact that the usual workflow is sulpt then paint. I agree, but we are in the digital medium here, do we want to be constraint to real life constraints ? I mean I can see a lot of applications if we had a tool where you could mix sculpt and 3d voxel paint at the same time. I have the impression people can just see their usual workflow and not imagine the potential of innovative, new ways of working? I mean before Andrew came with the voxel tools people where just not aware this was possible and were happy with surfacic tools.

Let me give you a few examples that come to mind:

.First a 3d voxel paint would allow for a true 3d voxel, brush based, selection tool (I will post examples with claytools as this is already implemented in that software).

.Another application would be to paint strata of color with various brush size then scrape to reveal the various strata.

.You could use some procedural 3d texture to fill the model and then carve to reveal the inner matter (alright this one would be very memory consuming if it filled the entire model, but a brush could apply a procedural texture to a given depth only).

.You could invent brushes that 'melt' or 'vaporize' ony certain color or voxel densities to create intricate structures. 3d masking if you like.

.And the list goes on...

Please don't think 'characters' only. I mean, voxel's true potential lies in the ability to represent arbitrary complex shapes. There are already many solutions to sculpt and paint characters (including 3dcoat's own texture painting tools), but there is NO solution to sculpt and paint arbitrary complex shapes. And there is this thing. Not everything can be retopo (nor need to, depending on the application). If it's too complex, it can become a nightmare. You need to be able to paint it directly.

Now I understand implementing 3d voxel paint can be a lot of work. I would be happy to have surface voxel (MC vertex) paint first (since Andrew says it's a relatively small work) with the sculpt tools to project paint onto the next voxels if modifying the sculpt.

But please Andrew, don't close this door, think beyond this.

Thanks and sorry for the rather long post.

Franck.

PS: On a side note, right now, only ZBrush makes it possible to paint color without UVs with micropoly paint, and it is used alot because of the freedom of not having to worry about UVs or retopo or vram limitation at that stage.

PS2: Not to mention the fact that something tells me voxel game engines are around the corner, but this is another story...

Share this post


Link to post
Share on other sites

Of course I am not closing the door on vox painting. But there is some order of improvements. Approx order is:

- transpose (now in process)

- auto-degrade

- layers

- objects tree

- clone

- vertex paint

- ...

Share this post


Link to post
Share on other sites
Sorry but I have to disagree with some of the posts here.

Memory is not a problem, at least once 3dcoat gets natively compiled in 64bits (and this is on the list of v3.0 features). I mean, come on, memory is cheap and is getting cheaper every day. If we want 3dcoat to be future proof this can't be an argument. It has to be scalable, like a machine is scalable and not limited to the least common denominator.

Also I would like to remind that video memory is much more limited than main ram (1.5 GB versus 128 GB max for xp64). Textures use vram, vertex/voxel paint use main ram. I just want to be limited by my setup, not by the application.

Texture painting? Well there's already the retopo -> UV -> regular texture painting route, so what's the point.

Don't want to retopo now? Then auto reduce -> auto UVs -> paint and retopo/transfer later. There are already many automatic reduction solutions, and Andrew already said he will integrate its own.

But in the end, to me the real innovation would be to be able to sculpt and paint with the even density provided by voxels and inside the same tool.

So the question, as Andrew mentionned, is paint over vertices and 'loose paint' when modifying sculpt or 3d voxel paint?

People mentionned the fact that the usual workflow is sulpt then paint. I agree, but we are in the digital medium here, do we want to be constraint to real life constraints ? I mean I can see a lot of applications if we had a tool where you could mix sculpt and 3d voxel paint at the same time. I have the impression people can just see their usual workflow and not imagine the potential of innovative, new ways of working? I mean before Andrew came with the voxel tools people where just not aware this was possible and were happy with surfacic tools.

Let me give you a few examples that come to mind:

.First a 3d voxel paint would allow for a true 3d voxel, brush based, selection tool (I will post examples with claytools as this is already implemented in that software).

.Another application would be to paint strata of color with various brush size then scrape to reveal the various strata.

.You could use some procedural 3d texture to fill the model and then carve to reveal the inner matter (alright this one would be very memory consuming if it filled the entire model, but a brush could apply a procedural texture to a given depth only).

.You could invent brushes that 'melt' or 'vaporize' ony certain color or voxel densities to create intricate structures. 3d masking if you like.

.And the list goes on...

Please don't think 'characters' only. I mean, voxel's true potential lies in the ability to represent arbitrary complex shapes. There are already many solutions to sculpt and paint characters (including 3dcoat's own texture painting tools), but there is NO solution to sculpt and paint arbitrary complex shapes. And there is this thing. Not everything can be retopo (nor need to, depending on the application). If it's too complex, it can become a nightmare. You need to be able to paint it directly.

Now I understand implementing 3d voxel paint can be a lot of work. I would be happy to have surface voxel (MC vertex) paint first (since Andrew says it's a relatively small work) with the sculpt tools to project paint onto the next voxels if modifying the sculpt.

But please Andrew, don't close this door, think beyond this.

Thanks and sorry for the rather long post.

Franck.

PS: On a side note, right now, only ZBrush makes it possible to paint color without UVs with micropoly paint, and it is used alot because of the freedom of not having to worry about UVs or retopo or vram limitation at that stage.

PS2: Not to mention the fact that something tells me voxel game engines are around the corner, but this is another story...

I was going to bring up the 64-bit thing too(Vista 64-bit,8GB here), but then i thought to myself isn't 3DC using VRAM when your painting? I assume that's the case, since using system ram to store texture would be too slow?

Share this post


Link to post
Share on other sites

Btw, Vista 64 was shipped to me today :)

So 64-bit support becomes closer :)

Share this post


Link to post
Share on other sites
Of course I am not closing the door on vox painting. But there is some order of improvements. Approx order is:

- transpose (now in process)

- auto-degrade

- layers

- objects tree

- clone

- vertex paint

- ...

Very happy to see this. I also read somewhere else you are no longer obliging yourself to a december release. Which is good. Dont forget about masking/freezing. It will make transpose about 300% more usable plus that it will enrich the existing tools very much.

Im really looking forward to alot of stuff. Especially the object tree and cloning. It will be great to finally be able to just add a ball of clay and stretch and massage it to form a muscle then join it seamlessly to the rest of the sculpt. I cant wait! ^_^

@ Frankie

In essence i agree with you. :) However imho it should be VERY low on the priority list. Once all basic functionality is in (how is brush stroke interpolation going Andrew?) it would be wicked to have voxel painting. But if anything has to be saved for a future release i wont shed a tear for voxel painting as long as the other important stuff gets in and is well done.

3dioot

PS

Andrew, are you planning any improvements to the current hiding functionality? Ive posted specific critics on it and didnt receive any feedback. Does that mean you think its fine the way it is or are there still some improvements you have in store for it?

Share this post


Link to post
Share on other sites
Very happy to see this.

me too, however i wish transpose would be worked on last, since its not that important, then say a curve editor(for custom falloff on brush), and tons of sculpting related things. Also i can get near 18 million triangles in 3DC, in Mudbox 2009 on a 32 bit system you can reach 14-15 million quads(so there's alot of room for improvement there for 3DC), which would be needed if you want to implement vertex painting. Layers , stepping up/down,etc.. those kind of things seem more important to me than transpose at the moment. Maybe i haven't spent enough time with the alpha yet, but it still feels tough to rough out a basic form with the current tools,where as in Mudbox 2009 i can do that easy and fast.

BTW whats "auto-degrade" and "object tree"?

PS>does anyone else think the brush stroke are still abit messy(same problem with Mudbox 1.0), it could be smoother.

@Andrew ,looking forward to the 64-bit support :)

Share this post


Link to post
Share on other sites

I'm really looking forward to 64 bit! Also curious about object tree. I'm guessing auto-degrade is a method of polygon reduction.

BTW Arkanis said he's working on the curve editor as part of the GUI upgrade.

Share this post


Link to post
Share on other sites

Puuulease don't forget support for painting directly on low poly models (without altering geometry)

mike

Share this post


Link to post
Share on other sites

64 bit! Great!

And i too think that some brushstrokes are messy. needs improving. extrude brush seems to work ok. use it for making scraches (extrude+sharpbrush+lots of depth)...

but things seem to get better and better. :)

Share this post


Link to post
Share on other sites
Sorry but I have to disagree with some of the posts here.

Texture painting? Well there's already the retopo -> UV -> regular texture painting route, so what's the point.

Disagree with you there. Texture painting on low poly objects is probably more important to me at this moment even than voxel sculpting. This is a feature that doesn't work as it should yet and for games work it is very important. 3dcoat could very well displace the need for bodypaint, modo, and mudbox if it actually gets proper texture painting. That means more customers and a solid push into studio use. As much as I like the voxel sculpting I'm still not convinced I want to use it in place of say zbrush yet. I want to see it replace zbrush too but I also want texture painting that actually works just as much, if not more so. It was promised for 3.0 and I purchased the software in good faith, under that promise. Zbrush polypaint isn't exactly the best solution for all texturing needs. It's pretty much useless when you need to make tweaks or changes on texture assets that are already in game. With 3dcoat being able to paint accurately in pixels AND edit normal maps there will be no other competition from 3d painting apps at any level. None of them can do this.

Share this post


Link to post
Share on other sites
Disagree with you there. Texture painting on low poly objects is probably more important to me at this moment even than voxel sculpting. This is a feature that doesn't work as it should yet and for games work it is very important. 3dcoat could very well displace the need for bodypaint, modo, and mudbox if it actually gets proper texture painting. That means more customers and a solid push into studio use. As much as I like the voxel sculpting I'm still not convinced I want to use it in place of say zbrush yet. I want to see it replace zbrush too but I also want texture painting that actually works just as much, if not more so. It was promised for 3.0 and I purchased the software in good faith, under that promise. Zbrush polypaint isn't exactly the best solution for all texturing needs. It's pretty much useless when you need to make tweaks or changes on texture assets that are already in game. With 3dcoat being able to paint accurately in pixels AND edit normal maps there will be no other competition from 3d painting apps at any level. None of them can do this.

I know that direct painting is one of the most desired functions. And it will be done. I panned how it should work, all algoritmical part was deeply thinked. But of course one part must be finished before starting next. So, don't worry. I know how is it important and even commertially desirable.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now