forked from bartvdbraak/blender
Merge branch 'master' into blender2.8
This commit is contained in:
commit
be4ebb7fa6
@ -21,7 +21,17 @@
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
# Contributor(s): Keith "Wahooney" Boshoff, Campbell Barton
|
||||
# Contributor(s): Keith "Wahooney" Boshoff, Campbell Barton, Sybren A. Stüvel
|
||||
|
||||
|
||||
def get_vcolor_layer_data(me):
|
||||
for lay in me.vertex_colors:
|
||||
if lay.active:
|
||||
return lay.data
|
||||
|
||||
lay = me.vertex_colors.new()
|
||||
lay.active = True
|
||||
return lay.data
|
||||
|
||||
|
||||
def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only):
|
||||
@ -32,8 +42,6 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
|
||||
vert_tone = array.array("f", [0.0]) * len(me.vertices)
|
||||
|
||||
# create lookup table for each vertex's connected vertices (via edges)
|
||||
con = []
|
||||
|
||||
con = [[] for i in range(len(me.vertices))]
|
||||
|
||||
# add connected verts
|
||||
@ -50,7 +58,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
|
||||
for c in con[i]:
|
||||
vec += (me.vertices[c].co - co).normalized()
|
||||
|
||||
# normalize the vector by dividing by the number of connected verts
|
||||
# average the vector by dividing by the number of connected verts
|
||||
tot_con = len(con[i])
|
||||
|
||||
if tot_con == 0:
|
||||
@ -58,7 +66,9 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
|
||||
|
||||
vec /= tot_con
|
||||
|
||||
# angle is the acos() of the dot product between vert and connected verts normals
|
||||
# angle is the acos() of the dot product between normal and connected verts.
|
||||
# > 90 degrees: convex
|
||||
# < 90 degrees: concave
|
||||
ang = acos(no.dot(vec))
|
||||
|
||||
# enforce min/max
|
||||
@ -93,17 +103,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
|
||||
else:
|
||||
tone_range = 1.0 / tone_range
|
||||
|
||||
active_col_layer = None
|
||||
|
||||
if me.vertex_colors:
|
||||
for lay in me.vertex_colors:
|
||||
if lay.active:
|
||||
active_col_layer = lay.data
|
||||
else:
|
||||
bpy.ops.mesh.vertex_color_add()
|
||||
me.vertex_colors[0].active = True
|
||||
active_col_layer = me.vertex_colors[0].data
|
||||
|
||||
active_col_layer = get_vcolor_layer_data(me)
|
||||
if not active_col_layer:
|
||||
return {'CANCELLED'}
|
||||
|
||||
@ -186,4 +186,4 @@ class VertexPaintDirt(Operator):
|
||||
|
||||
classes = (
|
||||
VertexPaintDirt,
|
||||
)
|
||||
)
|
||||
|
@ -1080,8 +1080,13 @@ makebreak:
|
||||
float distfac, imat[4][4], imat3[3][3], cmat[3][3];
|
||||
float minx, maxx, miny, maxy;
|
||||
float timeofs, sizefac;
|
||||
|
||||
invert_m4_m4(imat, ob->obmat);
|
||||
|
||||
if (ob != NULL) {
|
||||
invert_m4_m4(imat, ob->obmat);
|
||||
}
|
||||
else {
|
||||
unit_m4(imat);
|
||||
}
|
||||
copy_m3_m4(imat3, imat);
|
||||
|
||||
copy_m3_m4(cmat, cu->textoncurve->obmat);
|
||||
|
@ -411,22 +411,46 @@ typedef struct ParameterDynAlloc {
|
||||
/* Function */
|
||||
|
||||
typedef enum FunctionFlag {
|
||||
FUNC_NO_SELF = (1 << 0), /* for static functions */
|
||||
FUNC_USE_SELF_TYPE = (1 << 1), /* for class methods, only used when FUNC_NO_SELF is set */
|
||||
/***** Options affecting callback signature. *****/
|
||||
/* Those add additionnal parameters at the beginning of the C callback, like that:
|
||||
* rna_my_func([ID *_selfid],
|
||||
* [<DNA_STRUCT> *self|StructRNA *type],
|
||||
* [Main *bmain],
|
||||
* [bContext *C],
|
||||
* [ReportList *reports],
|
||||
* <other RNA-defined parameters>);
|
||||
*/
|
||||
/* Pass ID owning 'self' data (i.e. ptr->id.data, might be same as self in case data is an ID...). */
|
||||
FUNC_USE_SELF_ID = (1 << 11),
|
||||
|
||||
/* Do not pass the object (DNA struct pointer) from which it is called, used to define static or class functions. */
|
||||
FUNC_NO_SELF = (1 << 0),
|
||||
/* Pass RNA type, used to define class functions, only valid when FUNC_NO_SELF is set. */
|
||||
FUNC_USE_SELF_TYPE = (1 << 1),
|
||||
|
||||
/* Pass Main, bContext and/or ReportList. */
|
||||
FUNC_USE_MAIN = (1 << 2),
|
||||
FUNC_USE_CONTEXT = (1 << 3),
|
||||
FUNC_USE_REPORTS = (1 << 4),
|
||||
FUNC_USE_SELF_ID = (1 << 11),
|
||||
|
||||
|
||||
/***** Registering of python subclasses. *****/
|
||||
/* This function is part of the registerable class' interface, and can be implemented/redefined in python. */
|
||||
FUNC_REGISTER = (1 << 5),
|
||||
/* Subclasses can choose not to implement this function. */
|
||||
FUNC_REGISTER_OPTIONAL = FUNC_REGISTER | (1 << 6),
|
||||
/* If not set, the python function implementing this call is not allowed to write into data-blocks.
|
||||
* Except for WindowManager and Screen currently, see rna_id_write_error() in bpy_rna.c */
|
||||
FUNC_ALLOW_WRITE = (1 << 12),
|
||||
|
||||
/* registering */
|
||||
FUNC_REGISTER = (1 << 5),
|
||||
FUNC_REGISTER_OPTIONAL = FUNC_REGISTER | (1 << 6),
|
||||
|
||||
/* internal flags */
|
||||
/***** Internal flags. *****/
|
||||
/* UNUSED CURRENTLY? ??? */
|
||||
FUNC_BUILTIN = (1 << 7),
|
||||
/* UNUSED CURRENTLY. ??? */
|
||||
FUNC_EXPORT = (1 << 8),
|
||||
/* Function has been defined at runtime, not statically in RNA source code. */
|
||||
FUNC_RUNTIME = (1 << 9),
|
||||
/* UNUSED CURRENTLY? Function owns its identifier and description strings, and has to free them when deleted. */
|
||||
FUNC_FREE_POINTERS = (1 << 10),
|
||||
} FunctionFlag;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user