Fix #26218: texture paint
- Added option "Fixed Texture" to the UI. Because of strange reason, this feature was implemented but hidden from users. Would be cool, if somebody familiar with 2d texture paiting check. - Fixed some issues in existing code of fixed texture paiting. It now handles brush radius and curve correct. - Also fixed issue with paiting with texture from node tree - it used to be painted with regular brush color instead of texture.
This commit is contained in:
parent
f2f52a578a
commit
0e8d313f0e
@ -685,6 +685,7 @@ class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, bpy.types.Panel):
|
||||
|
||||
col = layout.column()
|
||||
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
|
||||
col.prop(brush, "use_fixed_texture")
|
||||
|
||||
|
||||
class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel):
|
||||
|
@ -694,6 +694,8 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel):
|
||||
col = layout.column()
|
||||
|
||||
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
|
||||
if brush.use_paint_texture:
|
||||
col.prop(brush, "use_fixed_texture")
|
||||
|
||||
if context.sculpt_object:
|
||||
#XXX duplicated from properties_texture.py
|
||||
|
@ -593,7 +593,7 @@ void brush_imbuf_new(Brush *brush, short flt, short texfall, int bufsize, ImBuf
|
||||
dst[2]= FTOCHAR(rgba[2]);
|
||||
dst[3]= FTOCHAR(rgba[3]);
|
||||
}
|
||||
else {
|
||||
else if (texfall == 2) {
|
||||
dist = sqrt(xy[0]*xy[0] + xy[1]*xy[1]);
|
||||
|
||||
brush_sample_tex(brush, xy, rgba, 0);
|
||||
@ -601,6 +601,14 @@ void brush_imbuf_new(Brush *brush, short flt, short texfall, int bufsize, ImBuf
|
||||
dst[1] = FTOCHAR(rgba[1]*brush->rgb[1]);
|
||||
dst[2] = FTOCHAR(rgba[2]*brush->rgb[2]);
|
||||
dst[3] = FTOCHAR(rgba[3]*alpha*brush_curve_strength_clamp(brush, dist, radius));
|
||||
} else {
|
||||
dist = sqrt(xy[0]*xy[0] + xy[1]*xy[1]);
|
||||
|
||||
brush_sample_tex(brush, xy, rgba, 0);
|
||||
dst[0]= crgb[0];
|
||||
dst[1]= crgb[1];
|
||||
dst[2]= crgb[2];
|
||||
dst[3] = FTOCHAR(rgba[3]*alpha*brush_curve_strength_clamp(brush, dist, radius));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -870,11 +878,8 @@ static void brush_painter_refresh_cache(BrushPainter *painter, float *pos)
|
||||
flt= cache->flt;
|
||||
size= (cache->size)? cache->size: diameter;
|
||||
|
||||
if (!(mtex && mtex->tex) || (mtex->tex->type==0)) {
|
||||
brush_imbuf_new(brush, flt, 0, size, &cache->ibuf);
|
||||
}
|
||||
else if (brush->flag & BRUSH_FIXED_TEX) {
|
||||
brush_imbuf_new(brush, flt, 0, size, &cache->maskibuf);
|
||||
if (brush->flag & BRUSH_FIXED_TEX) {
|
||||
brush_imbuf_new(brush, flt, 3, size, &cache->maskibuf);
|
||||
brush_painter_fixed_tex_partial_update(painter, pos);
|
||||
}
|
||||
else
|
||||
|
@ -665,11 +665,10 @@ static void rna_def_brush(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Restore Mesh", "Allows a single dot to be carefully positioned");
|
||||
RNA_def_property_update(prop, 0, "rna_Brush_update");
|
||||
|
||||
/* not exposed in the interface yet
|
||||
prop= RNA_def_property(srna, "fixed_tex", PROP_BOOLEAN, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "use_fixed_texture", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_FIXED_TEX);
|
||||
RNA_def_property_ui_text(prop, "Fixed Texture", "Keep texture origin in fixed position");
|
||||
RNA_def_property_update(prop, 0, "rna_Brush_update"); */
|
||||
RNA_def_property_update(prop, 0, "rna_Brush_update");
|
||||
|
||||
/* only for projection paint, TODO, other paint modes */
|
||||
prop= RNA_def_property(srna, "use_alpha", PROP_BOOLEAN, PROP_NONE);
|
||||
|
Loading…
Reference in New Issue
Block a user