general:paint_workspace:perpixel

Use Per-Pixel mode for both high resolution models and low resolution models, where you need maximum compatibility with other environments and where extreme clarity of texture is required. Note that Depth painting within this mode only supports the real time generation of a normal map, rather than actual painted displacement - but, based on this information, a displacement map can be exported as well as a normal map.

It was introduced into 3DCoat for the first iteration of the v3 cycle. The well known 3DCoat V2 used microvertex painting.
In this approach every face (quad only allowed) was represented as a patch N x M vertices (N and M could be different for every face).

Every vertex had color and coordinates in space, so any kind of displacement was allowed. However this approach was limited because it was very difficult to edit mesh with non-quad faces, projecting patch to texture resulted in loss of quality, so it was difficult to import a texture, edit it and then export because the after-export texture appeared to be slightly blurred.

So we decided to implement the per pixel painting. Here are the basic points of this technology:

• Painting is performed not over vertices but over pixels on the texture directly. It looks like every pixel on the texture is represented as a point in space.

• Every pixel contains any amount of layers of color, opacity, normal displacement, specularity.

• Every layer can be blended with previous one using common and well-known blending operations for color and displacement.

• Every texture point in space has its neighbors in per-pixel representation. It is important because it allows not only painting over model but also performing non-local operations like blurring and sharpening with brush.

• Some operations are performed in space, like painting, filling, applying curves, some – in projection, like smudge. All this is transparent to user.

• Most operations can be performed (optionally) not only on visible side of an object but on invisible too, like applying curves, filling, painting rings, rectangles and polygons over the surface.

• Exchange with other applications becomes really fast and with no quality loss, you can use 3DCoat on any stage of the pipeline put a final touch or perform full texturing.

• You can import normal map and use it as a reference for texture painting. Normal map can be changed too, you can apply some smoothing (not over seams) or fade some areas.

• Seamless painting and smoothing over texture. This technology can be used for any kind of texturing – low poly or high poly. You can edit textures from 32 x 32 to 8192 x 8192 (if you have 1GB or more of video memory). It can be used in a very wide range of applications – from graphics for mobile phones to high-end game projects and films that require huge textures. This technology supports tiled, self-intersected and mirrored textures without any problems. In summary there is a list of advantages of per-pixel painting over microvertex painting:

• Much faster then microvertex painting.

• Supports tiled, self-intersected and mirrored UV-sets (microvertex painting supports only non-overlapped texturing).

• Takes less memory than microvertex approach.

• Gives good precision of painting without any additional blurring. The only disadvantage in comparison to microvertex painting is that per-pixel painting does not support vector displacement, only normal displacement. Sometimes this makes it an essential point, so we leaved both approaches – per pixel and microvertex in place. For example using microvertex approach to paint over baked voxel sculptures gives you better results. Advantages of per pixel painting over projection painting:

• Possibility to operate pixels on the back side of the model, for example filling, blurring, applying overall effects.

• Painting quality does not depend on distance from object to camera.

• More precise painting result, what you see is what you get. The key advantage over usual texture painting in space is a possibility to blur pixels under the brush because of every pixel has its neighbors.

  • general/paint_workspace/perpixel.txt
  • Last modified: 2019/10/08 11:55
  • by carlosan