Jump to content


Notice about Feature Requests & Bug Reports

The bug reporting and feature request forums (except for the Urgent Help section) are going away soon! Please use Mantis to report any bugs and feature requests. the link to Mantis is:
3d-coat.com/mantis/

Read more about it HERE.

Photo

Painting color over voxels


  • Please log in to reply
60 replies to this topic

#1 Andrew Shpagin

Andrew Shpagin

    3DC creator & admin

  • 3D-Coat Developer
  • PipPipPipPipPipPip
  • 6,564 posts

  • Gender:Male

Posted 24 October 2008 - 08:34 AM

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.

#2 philnolan3d

philnolan3d

    Master

  • Moderator
  • PipPipPipPipPipPip
  • 6,397 posts

  • Gender:Male
  • Location:Philadelphia, PA, USA
  • Interests:3D, martial arts, anime, gaming, contact juggling

Posted 24 October 2008 - 08:57 AM

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.
Phil Nolan
Generalist
www.philnolan3d.com - Twitter - Google+
Desktop: Win8.1 Pro x64, Core i7 3.4 GHz, GeForce GT 640, 16GB RAM
Laptop: Vista Home Prem x86, Core 2 Duo, 1.5 GHz, GeForce 8600M GS, 2GB RAM

#3 Monsoon

Monsoon

    Novice

  • Member
  • PipPip
  • 146 posts

Posted 24 October 2008 - 03:36 PM

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.

#4 Jokermax

Jokermax

    Novice

  • Member
  • PipPip
  • 195 posts
  • Gender:Male
  • Location:US

Posted 24 October 2008 - 05:22 PM

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

#5 Psmith

Psmith

    Helper

  • Moderator
  • PipPipPipPip
  • 1,069 posts

  • Gender:Male

Posted 24 October 2008 - 05:32 PM

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

#6 Deadman21

Deadman21

    Novice

  • Member
  • PipPip
  • 223 posts
  • Location:North Carolina

Posted 24 October 2008 - 06:02 PM

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.

#7 Andrew Shpagin

Andrew Shpagin

    3DC creator & admin

  • 3D-Coat Developer
  • PipPipPipPipPipPip
  • 6,564 posts

  • Gender:Male

Posted 24 October 2008 - 06:09 PM

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.

#8 Psmith

Psmith

    Helper

  • Moderator
  • PipPipPipPip
  • 1,069 posts

  • Gender:Male

Posted 24 October 2008 - 11:09 PM

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.

#9 artaq

artaq

    Neophyte

  • Member
  • Pip
  • 58 posts

Posted 25 October 2008 - 03:25 AM

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.

#10 renderdemon

renderdemon

    Novice

  • Member
  • PipPip
  • 241 posts
  • Gender:Male
  • Location:milan

Posted 25 October 2008 - 06:21 AM

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)

#11 buqa

buqa

    Neophyte

  • Member
  • Pip
  • 40 posts
  • Gender:Male
  • Location:Brno - Czech Rep

Posted 25 October 2008 - 04:01 PM

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.

#12 SonK

SonK

    Novice

  • Member
  • PipPip
  • 464 posts
  • Gender:Male
  • Location:California
  • Interests:3DCG!, video games.

Posted 27 October 2008 - 07:04 AM

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.
Freelance Character Artist

#13 Mantis

Mantis

    Novice

  • Member
  • PipPip
  • 209 posts

Posted 27 October 2008 - 12:46 PM

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....ng_20070510.wmv

#14 Andrew Shpagin

Andrew Shpagin

    3DC creator & admin

  • 3D-Coat Developer
  • PipPipPipPipPipPip
  • 6,564 posts

  • Gender:Male

Posted 27 October 2008 - 02:41 PM

Edit: Just saw that sensable added an automatic surfacing tool, you can check it in this video http://www.sensable....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.

#15 Frankie

Frankie

    Novice

  • Member
  • PipPip
  • 169 posts

Posted 27 October 2008 - 08:09 PM

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...

#16 Andrew Shpagin

Andrew Shpagin

    3DC creator & admin

  • 3D-Coat Developer
  • PipPipPipPipPipPip
  • 6,564 posts

  • Gender:Male

Posted 27 October 2008 - 09:47 PM

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
- ...

#17 SonK

SonK

    Novice

  • Member
  • PipPip
  • 464 posts
  • Gender:Male
  • Location:California
  • Interests:3DCG!, video games.

Posted 27 October 2008 - 09:55 PM

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?
Freelance Character Artist

#18 Andrew Shpagin

Andrew Shpagin

    3DC creator & admin

  • 3D-Coat Developer
  • PipPipPipPipPipPip
  • 6,564 posts

  • Gender:Male

Posted 27 October 2008 - 09:59 PM

Btw, Vista 64 was shipped to me today :)
So 64-bit support becomes closer :)

#19 3dioot

3dioot

    Novice

  • Member
  • PipPip
  • 469 posts
  • Gender:Male
  • Location:Netherlands

Posted 27 October 2008 - 10:10 PM

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?
"Failure is the first step towards succes"

#20 SonK

SonK

    Novice

  • Member
  • PipPip
  • 464 posts
  • Gender:Male
  • Location:California
  • Interests:3DCG!, video games.

Posted 28 October 2008 - 07:29 AM

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 :)
Freelance Character Artist




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users