Jump to content
3DCoat Forums

Painting color over voxels


Andrew Shpagin
 Share

Recommended Posts

  • Advanced Member
It is interesting, how is performance in comparison to 3DC?

It is much slower on the rendeing side. They have point rendering and a kind of hierarchical LOD (or they just skip points I don't know), that can help a lot but it becomes a bit abstract when working on huge models.

On the brush side, it's ok up to say 10 millions, then it's becoming very slow (laggy brushes create straight lines). But it is a bit hard to compare to 3dcoat because the accuracy is so much more limited due to the Phantom device.

The great part is the ability to split your work into pieces and merge them later. So the brush performance limitation is less damaging.

Memory management is great in 64bits, never hit the ceiling. Still workable with objects of above 100m. I've used it to assemble pieces that I did in mudbox 1.0 last year, and then generate a single object.

Once all features are in, 3dcoat will surpass them in every area, except maybe the fast blocking-out of initial shapes. That's where the Phantom device is very handy.

So My future pipeline will probably be blocking out stuff in Claytools then bring them asap into 3dcoat for further detail and painting... isn't that the whole point of 3dcoat :)

Cheers,

Franck.

EDIT: Just did a quick test at 35m. Actually the brush doesn't get much slower if it is the same size. However as the resolution increases, you might need to use a much larger brush for rougher adjustments. In that case it becomes very slow because it has to move more voxel. Normal thing then. Knowing this, at some point it will become too slow to work with anyway. Like 100m or above, you can't sulpt past that limit as the carve brushes are definitely too laggy.

Link to comment
Share on other sites

  • Advanced Member

Frankie you are saying that it is easier to blocking out your form in Claytool because of the phatom.

Can you explain it better?

Are you used to block your form in Zbrush or Mudbox and what is the difference between 3Dcoat or Mud/Zb vs Claytool and its haptic device for this?

I never used Claytool and I didn't find the way of blocking out the shape in Zbrush slow, but because I don't have any experience in Claytool I would like to hear your point of view.

At least if it doesn't help 3DCoat I will be smarter than now :)

Btw the voxel painting you presented is really interesting.

Thanks.

Link to comment
Share on other sites

  • Advanced Member
Frankie you are saying that it is easier to blocking out your form in Claytool because of the phatom.

Can you explain it better?

Are you used to block your form in Zbrush or Mudbox and what is the difference between 3Dcoat or Mud/Zb vs Claytool and its haptic device for this?

I never used Claytool and I didn't find the way of blocking out the shape in Zbrush slow, but because I don't have any experience in Claytool I would like to hear your point of view.

At least if it doesn't help 3DCoat I will be smarter than now :)

Btw the voxel painting you presented is really interesting.

Thanks.

3dcoat's voxel with an haptic device would work pretty much the same way as Claytools does. Mud/Zb however are surfacic and in essence not capable of sculpting any shape from scratch. You need to start with a shape and then can only deform its surface. There lies the surfacic tools' topology constraint.

There are several advantages in the use of the Phantom in combination with a voxel tool. The device reads your 'pen' position and orientation in space at the same time. You're not working in a plane, or along a surface normal, that means you can carve and extrude matter in any direction at once.

With the Scraper tool for instance, you can cut the corner of a cube with a single stroke, without even tumbling the view to align. It's pretty much like if you had the tool in hand, you can rotate it the way you like and then touch the object.

You could even carve on the back side of the object if you wanted as you feel the surface with the force feedback of the Phantom, not that it makes much sense :P

I find it very cool for carving and scraping hard edges such as for creating rock formations.

Navigation is very easy as you control the camera position and orientation at the same time.

The disadvantage comes from the precision of the input if you compare it to a wacom tablet for instance. It is great to create rough shapes, but if you need to precisely detail a surface, it's not accurate enough.

Hope this helps,

Franck.

Link to comment
Share on other sites

  • Member

Something like this has probably been suggested already, but: Maybe instead of storing the color value for every voxel you could just store a material reference. The materials in turn could then be projected in a few different ways, like planar, cube etc. (and be masked/blended by alpha) Just my two cents there anyway, I have no technical background so I'm not aware of performance issues.

Thinking about this further.. how's this:

For every voxel you store the information wether it is affected by a certain material (So for every Material you need 1 bit). Then, for every material you should be able to create multiple projectors that you can move around and for every projector there should be an alpha map so you can mask out and blend (this alpha map, ideally, should be modifiable just by painting on the surface).

Link to comment
Share on other sites

  • 4 weeks later...
  • Advanced Member
I don't know if this has any relevance. Mudbox 2009's Polypainting is somewhat superior to zbrush's polypainting. Subdivision level doesn't need to be raised to get a better resolution for the texture. Video link demonstrating this.

http://www.dashdotslash.net/Mudbox2k9/pain...20tut%20SM.html

Mudbox 2009 does not have poly painting like ZBrush, whats being shown in the video is just projection painting. ;)

Link to comment
Share on other sites

  • Advanced Member
Really interesting paper SonK.

Yeah, i'm just reading it now..its like Zbrush polypaint but it also stores color value for edges and faces, I hope Andrew implement this into 3.0. <_<

Link to comment
Share on other sites

Yeah, i'm just reading it now..its like Zbrush polypaint but it also stores color value for edges and faces, I hope Andrew implement this into 3.0. <_<

Yes, direct painting will be in 3.0.

There are several; approaches of painting:

1) Per vertex painting -ZBrish,3D-Coat

2) Projection painting - Body Paint, ZB, PS CS4. But Painting resolution is dependent on object size in screen space. It is not good.

3) Direct painting - every pixel in UV has some position in space. You are painting directly over UV placed in space. It gives the best quality. But problems - it is easy to project texture on object but difficult to smooth, smudge, clone. Mayebe Mudbox has direct painting but in very basic stage (texture projection, it is most easy task). But 3DC will offer full set of tools for direct painting - texture projection, clone, transform, smudge.

Link to comment
Share on other sites

  • Advanced Member
Yes, direct painting will be in 3.0.

There are several; approaches of painting:

1) Per vertex painting -ZBrish,3D-Coat

2) Projection painting - Body Paint, ZB, PS CS4. But Painting resolution is dependent on object size in screen space. It is not good.

3) Direct painting - every pixel in UV has some position in space. You are painting directly over UV placed in space. It gives the best quality. But problems - it is easy to project texture on object but difficult to smooth, smudge, clone. Mayebe Mudbox has direct painting but in very basic stage (texture projection, it is most easy task). But 3DC will offer full set of tools for direct painting - texture projection, clone, transform, smudge.

I'm really impressed with the progress you have been making. You have an amazing work ethic. You have the set the bar really high. I appreciate your hard work, it is inspiring. You are surely blessed.

Link to comment
Share on other sites

  • 4 weeks later...
  • Member
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.

Sorry for jumping in late on this...

You don't HAVE to have 3 additional channels, nor do they have to be 16 bit. You could have the user specify how many channels and at what depth they are needed. Adding an 8 bit scalar to the existing voxel structure would add only 50% more memory usage. Even if you locked the depths down, adding a single scalar at 16 bit would only double the memory size. The speed hit would be less, since you aren't reconstructing the isosurface using the other channel. Also, the operation is identical on the second scalar, so it's just moving another channel of data through the same instructions, which should be very efficient.

Regarding memory, CUDA hardware currently runs up to 4GB in size in the Tesla range, and the GeForce line will soon be at 1.7GB. As applications for CUDA grow, I'm sure NVidia would love to sell you hardware with even more memory, so I don't think it is an impossible problem.

- Chad

Link to comment
Share on other sites

  • Advanced Member

this is very interesting. I would like to hear from artists what they would want to use this for? what kinds of projects would benefit from painting voxels? would you bake the voxel painting to a lower poly mesh?

personally I intend to build a retopologised mesh over my voxel model and then bake normal and AO from it. Then my mesh will probably be less than 10 000 polys and possibly have 3 2048x2048 maps. At this stage I would like to use 3D coat to paint my model with the diffuse colour or specular or fix seams. Maybe most computers memory could handle 3 additional channels at 16bit if you are just painting a 10000 poly mesh with 3 maps? just wondering.

Link to comment
Share on other sites

  • Member
what kinds of projects would benefit from painting voxels? would you bake the voxel painting to a lower poly mesh?

Technicaly, every project would benefit from voxel painting. It is next step in "artistic free" computer modeling. With voxel modeling, there is no need to bother with good topology, polygon stretching, polyloops, quads etc. But when you want to paint texture, all these old annoying problems are here again.

Of course, its not problem for game creation pipeline, bacause there still has to be a step where you transform your model into (few) polygons (even Larrabee can't render voxels, it still renders triangles) and it is not important whether it will be before painting texture or after that.

But now, evereyone in pipeline (maybe except of concept artist) has to understand the topology etc. In voxel pipeline you have to have only one person (or few) in company who can create good meshes and others can be just artists.

But as I said, I think that hardware nowadays isn't prepare for full voxel painting. Yes, some of us have dual-quad WS with 16GB of RAM a two or more Quadros (or Tesla at its best) and these people can take real advantage of fluent a ultra-detailed voxel painting.

But how many users of 3DC have HW like this? How many would have similar HW in 2009? And is it realy advantage for all the others?

So if I could vote in a poll, I would vote for voxel modeling and direct texture painting (thats what Im waiting for before buying 3dc) in 3dc 3.0 somewhere in Q1 or Q2 2009 and full voxel painting in some upcoming release in 2010 or 2011 when majority of 3dc users will have HW for that.

Link to comment
Share on other sites

  • Member
this is very interesting. I would like to hear from artists what they would want to use this for? what kinds of projects would benefit from painting voxels? would you bake the voxel painting to a lower poly mesh?

Two things come to mind right away.

1) You could use real 3D maps. Either explicit OR procedural data could be stored in the voxels and deformed with the voxels. So you could have a 3D skin texture that gets deformed correctly as you sculpt. It wouldn't have to be RGB data, either.

2) You could extrapolate 3D maps from 2D maps. The imported mesh could transfer it's textures, either from UV maps or from per TV colors to a voxel array. That way you could modify an already textured model and preserve the original colors and UV's.

The reason you feel like you are sculpting in wax, clay, bronze, etc is a limitation, not a design intent. If you could model a human face and feel like you were working with a real live ACTOR and not a plaster MAQUETTE, wouldn't that be better?

- Chad

Link to comment
Share on other sites

  • Member

What does sound of use as Frankie pointed out, is using it for masking and such. Very wicked tools that would not require a lot of RAM to implement.

But for actual texturing, its of little use -namely because the artist will want to use a 2d paint program in juxtaposition, and also, whatever solution you choose, if the artifacting and filtering degrades the texturing process - it is of little value.

That is one thing that really shines with projection painting in Mudbox....there is very little quality loss.

Link to comment
Share on other sites

  • Member
What does sound of use as Frankie pointed out, is using it for masking and such. Very wicked tools that would not require a lot of RAM to implement.

The way Claytools does masking, it's basically an on-or-off thing for masking. If you could implement segmentation of the voxels based on a scalar value, then you could assign properties to the voxels.

So you could have a segment of "skin" and a segment of "bone". The bone voxels would be very stiff, while the skin ones would be stretchy and flexible. So you could push the skin into the bone, but the bone wouldn't move. Or you could push the top of the bone with enough force, and it would move the ENTIRE bone, not just the point where you touched it. With an 8 bit scalar, you could define 256 unique "materials" for your object.

And when you converted the voxels to an isosurface mesh, the texture vertices could have the nearest segmentation scalar assigned to them in a segmentation channel so you would get automatic masking, so you would have a mask for "hair", "skin", "eyeball", "shirt", "scar tissue", "teeth", etc. Would make painting textures much easier then.

Also, you could choose to extract a mesh of JUST the "shirt" channel or whatever, so you could get multiple meshes out of your main voxel object.

- Chad

Link to comment
Share on other sites

  • Advanced Member
The way Claytools does masking, it's basically an on-or-off thing for masking. If you could implement segmentation of the voxels based on a scalar value, then you could assign properties to the voxels.

Actually, Claytools uses a 8 bit scalar for masking, and that allows for smooth grandient masking and transforming.

Data painting as you suggest might just be yet another step further. Much like Maya's blind data editor, where you can paint any type of data (boolean, scalar, vector, even strings) at vertex/face level. This would be usefull in combination with a scripting language associated with the brushes (custom brushes), or at the shader level (for special rendering based on those data, skinning, procedural stuff or whatever). Those should also be transferable (baked) to maps or verts (of low poly mesh).

However I agree with previous posts that we need UV painting first for V3. Then I hope Andrew will have a go on voxel masking/painting and maybe at some point generalised data painting.

Franck.

Link to comment
Share on other sites

  • 11 months later...
  • Advanced Member

Out of curiosity, since there is now a voxel-surface workflow, does this open the door (a little bit maybe) for some kind of vertex painting?

The vertex color can be multiplied with the current shader for the output that can be baked.

Also, VC could be used for freezing states too.

Link to comment
Share on other sites

  • Advanced Member

I've no desire to paint on voxels. By the time I've reached an 8x resolution and start sculpting in the details then I'm quite eager to get away from a high res model because of the poor frame rate. So it's really nice to be able to convert to a low poly model with all details baked in and start pixel painting at 100+ fps...

The pixel painting is one 3D Coat's (and Mudbox's) main advantages over ZBrush.

Link to comment
Share on other sites

  • Advanced Member

I see your point and totally agree.

Personally I see it being useful at the stage where major changes to the sculpt probably will not be made and a little color could help the finalizing stage of the sculpt before baking it. And when it is baked, you already have a base color to start painting on.

And this may not be usable\practical for hi-poly objects.

I don't see this as replacing or diminishing pixel painting at all, just a color base to help start the process.

Anyway, just some thoughts.

Link to comment
Share on other sites

  • 2 months later...
  • Member

Sorry to reply to an old thread but this topic is something i am very interested in. Firstly let me say i am not a professional, i am new to modeling but even with my limited experience i already think voxels are truly amazing! If you would definately plan to add this feature i would buy the program today (i already am 99% sold, but i still have some time left on trial to decide).

In my opinion, coloring of voxels should be done directly on the voxel volume, the extra memory footprint does not concern me and i agree with others who have said that memory only gets larger and cheaper each year. Also i would like to see a new render mode in the Voxel Room which shows the actual volume you are sculpting/painting - IE small cubes for each voxel, even if this is significantly slower than using a polygon 'skin' i think it would be extremely useful (especially for painting).

I have read in several articles that John Carmack (iD Software) is already planning to use voxel volumes for environment and static models in the next game engine iD Tech 6, so i think voxels will actually find a direct application in realtime rendering sooner than we might think. 3D-Coat is already so far ahead in terms of voxel modeling and this feature will only increase the advantage.

Here is an interview with John Carmack talking about voxels: http://www.pcper.com/article.php?aid=532

And here is a video of early an tech demonstration from an iD employee:

This voxel painting feature is my #1 request - please make it happen!

PS. I hope i don't sound rude or arrogant, i don't mean it this way, i'm just really excited about this possibility!

Link to comment
Share on other sites

Using voxels for environments and static meshes is what Andrew did before making 3D Coat (or 3D Brush), so that's really nothing new. As for the multi-res I don't think so seeing as Andrew said it was coming to the Surface mode, meaning it's polygon based. Of course I could be totally wrong.

Link to comment
Share on other sites

  • Member

Using voxels for environments and static meshes is what Andrew did before making 3D Coat (or 3D Brush), so that's really nothing new.

Oh yes i know many companies have used voxels back in the early 90's even - i'm not suggesting Carmack invented their use in games. But what he is talking about are voxel objects of close to the same density (maybe even higher?) possible in 3D-Coat being rendered real time in a game engine for first person shooters etc.. That has certainly never been done before. He already implemented fully virtualized textures in ID tech 5, you can have 8k textures for all your character faces if you wanted and 128000x128000 textures for terrain with no performance hit or texture management concerns. Next step is voxels, and i can't wait to see what happens. Tim Sweeney from Epic Games is also talking about voxels and other volumetric options for the next gen consoles.

Who knows maybe this stuff won't pan out in time for the next gen consoles, but if it does 3D-Coat could be in for a massive amount of new business if they have comprehensive voxel modeling tools all ready to go and well optimized.

Some early info on ID tech 6:

"id Tech 6 will use a more advanced technique that builds upon the MegaTexture idea and virtualizes both the geometry and the textures to obtain unique geometry down to the equivalent of the texel: the Sparse Voxel Octree (SVO). It works by raycasting the geometry represented by voxels (instead of triangles) stored in an octree. The goal being to be able to stream parts of the octree into video memory, going further down along the tree for nearby objects to give them more details, and to use higher level, larger voxels for further objects, which give an automatic level of detail (LOD) system for both geometry and textures at the same time. The geometric detail that can be obtained using this method is nearly infinite, which removes the need for faking 3-dimensional details with techniques such as normal mapping. Despite that most Voxel rendering tests use very large amounts of memory (up to several Gb), Jon Olick of id Software claimed it's able to compress such SVO to 1.15 bits per voxel of position data."

Link to comment
Share on other sites

  • Advanced Member

did someone say multires for voxels ? :-) please oh please let the multires addition come SOON to 3DC!

I cant believe how fun sculpting is again for me now that I use 3DC for each project that accommodates it(thankfully). Thanks Andrew, cant wait to see whats next

P.S. direct painting on voxels would be useful, but not very high on my wish list for 3DC, just my workflow/opinoin.

Link to comment
Share on other sites

  • Advanced Member

'Multires' in the case of iD tech 6 is an offline process more like mip mapping in 3d for the purpose of lod. Doing multires voxel sculpting is still an unsolved problem at this point afaik.

BTW can we have an export voxel object as a 3d texture (.dds) feature please. I'd like to use 3dcoat to produce some static clouds in voxel and raycast a 3d texture in cg.

Franck.

Link to comment
Share on other sites

  • Member

'Multires' in the case of iD tech 6 is an offline process more like mip mapping in 3d for the purpose of lod. Doing multires voxel sculpting is still an unsolved problem at this point afaik.

Yep as i understand it SVO is some kind of 'nested' compression format for voxel volumes. They can't be deformed (like for destructable environments in games) so i assume they can't be sculpted either atm. We would just be taking models created in 3D-Coat (or another voxel modeling app) and converting them to SVO for use in the game engine.

This is a very interesting engine i found also: http://atomontage.com/?id=home

It uses some kind of multi-res voxel volume for the terrain that's not using SVO, and it supports real-time destruction/deformation of the voxels. I'm not sure if it takes a cluster of voxles, averages their color and shape information and then fuses/removes them as you step down the LOD, or whether the LOD is all precomputed.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...