From BlenderWiki

Jump to: navigation, search

2.49 Release

Projection Painting

image courtesy of sebastian_k

Painting in the 3D view has been improved to support projection painting, which allows you to paint directly onto your model without having to worry nearly so much (or perhaps, at all) about "seams" or "unwrapping manually."

This is useful for anyone making textured models for games (realtime display), painting stencil maps for use with rendering, and for people who just don't want to manually unwrap their meshes.

The essential notion here is as intuitively-simple as it is powerful. From the particular point-of-view represented by a given viewport that you are "looking through," you "paint" the pixels from some currently-selected image "onto" the model. Blender automatically determines the corresponding UV-coordinate locations for you, selecting the proper pixels from the source UV-map and using them to modify the pixels in the target UV-map while showing you the effects of your work in real time. You can rotate the object at any time, select different source images at any time, and adjust many other characteristics of how pixels are selected, mixed and applied. It really is "like painting on the model itself."

Projection painting works on a UV-mapped texture. Thus, you need a non-overlapping set of UV coordinates as well as an image to paint to. To automatically generate an UV set suitable for painting, you can just unwrap your mesh with the "Lightmap UV pack" option or "Smart Projections."

Note: Of course you can use any UV mapping that you like, prepared any way you like. You should just make sure that the map doesn't have any overlapping areas, lest your "paint" wind up in several places on the model's surface at once. Projection painting is sometimes used to "touch up" image-maps that were prepared using other methods; or, vice-versa.

Also See...

Features

image courtesy of ropsta
  • Screen resolution independent
    Detail will remain the same no matter how far you're zoomed in
  • Blending modes, Texture Brushes (Nodal brush textures)
  • Tablet pressure sensitivity
  • Face select
    Only paint onto selected faces (FKey toggles)
  • Paints directly into textures
    Allowing you to paint into diffuse, specular maps and other textures used by GLSL shaders
  • Paint onto the modified mesh
    Subsurf, Armatures, Multires etc. can be enabled while painting
New buttons to select clone and stencil UV layers as well as 3D paint options (right)


Occlude disabled

Geometry Occlusion

When this is enabled only exposed pixels are affected, this also allows for 3D stencils to be used to mask out areas of the surface too. This is normally enabled along with the Cull and Normal settings.

normal falloff on/off

View Normal Falloff

As faces point away from the view the brush strokes fade away to prevent harsh edges or brush smearing (optional).

The normal angle can be adjusted to only allow painting onto very front facing areas of the mesh.

When painting onto models with large faces and sharp angles (low poly building for example) you may want to disable this option.

8px bleed comparison

Seam Bleed

Extend the paint beyond UV island bounds to avoid visual artifacts (like bleed for baking)

Clone between layers with a stencil

Clone between UV Layers

Paint from 1 UV layer to the current one, useful for taking photos from multiple angles and painting them onto an unwrapped texture

Clone with an offset to remove seams

Clone with offset

Useful for painting over UV seams which isn't possible to do in a 2D image editor, otherwise its similar to cloning in the Gimp. (Ctrl+LMB to set the 3D cursor location to clone from)

UV layer stencil mask

Use another UV layer as a mask for painting, (like quickmask in The Gimp)

Clip the view by a bounding box

View clipping

Painting can be constrained to a bounding box (Alt+B to set view clipping).

This helps to avoid painting onto overlapping geometry.

Correct Opacity Blending

never accumulate over the opacity set for a brush (except when Airbrush is enabled)

Implementation

  • screen to UV Image mapping initialization as needed.
  • multi-threaded painting and mapping initialization.
  • floating point as well as 8bit channels.
  • partial OpenGL updates (avoid sending the entire image to the graphics card)
  • tile based undo (only store modified tiles for each undo step)

Limitations

  • Using textures with dimensions other than 128, 256, 512, 1024, 2048, 4096 will be a lot slower to refresh.
  • Large faces with a single vertex behind the view in perspective mode will be ignored.
  • Overlapping UVs will show artifacts when painting onto the same pixels from different faces (only when air-brush is disabled).
    This includes Mirrored UVs in some cases.
  • Hard edges with the edge split modifier are detected as UV island boundaries when bleed is enabled.

Future Plans

  • Easy image stamp option
  • Normal map painting options
  • Texture mapping modes (world, orco, normal, reflection)
  • Project from face normal (even width line over a curved surface)
  • Auto select paint depth exclude distant geometry.
  • Mirror painting
  • Keep screen:uv cache between brush strokes, generate while idle. (will improve user experience with high-res textures)

Brush System

  • thumbnails to select brushes (like in the gimp)
  • Curve falloff (like sculpt currently has)
  • Options jitter, paint image sequence.