Skip to content
Snippets Groups Projects
Commit 1cf0358a authored by Campbell Barton's avatar Campbell Barton
Browse files

bmesh todo: vertex dirtmap now working again.

also renamed Polygon helper property from 'loops' to loop_indices
parent 6046500e
No related branches found
No related tags found
No related merge requests found
...@@ -457,7 +457,7 @@ class MeshPolygon(StructRNA): ...@@ -457,7 +457,7 @@ class MeshPolygon(StructRNA):
return [ord_ind(verts[i], verts[(i + 1) % vlen]) for i in range(vlen)] return [ord_ind(verts[i], verts[(i + 1) % vlen]) for i in range(vlen)]
@property @property
def loops(self): def loop_indices(self):
start = self.loop_start start = self.loop_start
end = start + self.loop_total end = start + self.loop_total
return range(start, end) return range(start, end)
......
...@@ -60,8 +60,8 @@ def extend(obj, operator, EXTEND_MODE): ...@@ -60,8 +60,8 @@ def extend(obj, operator, EXTEND_MODE):
vidx_target = face_target.vertices vidx_target = face_target.vertices
uv_layer = me.uv_loop_layers.active.data uv_layer = me.uv_loop_layers.active.data
uvs_source = [uv_layer[i].uv for i in face_source.loops] uvs_source = [uv_layer[i].uv for i in face_source.loop_indices]
uvs_target = [uv_layer[i].uv for i in face_target.loops] uvs_target = [uv_layer[i].uv for i in face_target.loop_indices]
# vertex index is the key, uv is the value # vertex index is the key, uv is the value
......
...@@ -759,7 +759,7 @@ class thickface(object): ...@@ -759,7 +759,7 @@ class thickface(object):
__slost__= "v", "uv", "no", "area", "edge_keys" __slost__= "v", "uv", "no", "area", "edge_keys"
def __init__(self, face, uv_layer, mesh_verts): def __init__(self, face, uv_layer, mesh_verts):
self.v = [mesh_verts[i] for i in face.vertices] self.v = [mesh_verts[i] for i in face.vertices]
self.uv = [uv_layer[i].uv for i in face.loops] self.uv = [uv_layer[i].uv for i in face.loop_indices]
self.no = face.normal self.no = face.normal
self.area = face.area self.area = face.area
......
...@@ -26,8 +26,6 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, ...@@ -26,8 +26,6 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
from mathutils import Vector from mathutils import Vector
from math import acos from math import acos
#BPyMesh.meshCalcNormals(me)
vert_tone = [0.0] * len(me.vertices) vert_tone = [0.0] * len(me.vertices)
min_tone = 180.0 min_tone = 180.0
...@@ -95,7 +93,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, ...@@ -95,7 +93,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
tone_range = max_tone - min_tone tone_range = max_tone - min_tone
if not tone_range: if not tone_range:
return return {'CANCELLED'}
active_col_layer = None active_col_layer = None
...@@ -109,18 +107,17 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, ...@@ -109,18 +107,17 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
active_col_layer = me.vertex_colors[0].data active_col_layer = me.vertex_colors[0].data
if not active_col_layer: if not active_col_layer:
return('CANCELLED', ) return
for i, f in enumerate(me.faces):
if not me.use_paint_mask or f.select:
f_col = active_col_layer[i]
f_col = [f_col.color1, f_col.color2, f_col.color3, f_col.color4] use_paint_mask = me.use_paint_mask
for j, v in enumerate(f.vertices): for i, p in enumerate(me.polygons):
col = f_col[j] if not use_paint_mask or p.select:
tone = vert_tone[me.vertices[v].index] for loop_index in p.loop_indices:
loop = me.loops[loop_index]
v = loop.vertex_index
col = active_col_layer[loop_index].color
tone = vert_tone[v]
tone = (tone - min_tone) / tone_range tone = (tone - min_tone) / tone_range
if dirt_only: if dirt_only:
...@@ -131,6 +128,8 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, ...@@ -131,6 +128,8 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
col[1] = tone * col[1] col[1] = tone * col[1]
col[2] = tone * col[2] col[2] = tone * col[2]
return {'FINISHED'}
import bpy import bpy
from bpy.types import Operator from bpy.types import Operator
...@@ -185,8 +184,8 @@ class VertexPaintDirt(Operator): ...@@ -185,8 +184,8 @@ class VertexPaintDirt(Operator):
t = time.time() t = time.time()
applyVertexDirt(mesh, self.blur_iterations, self.blur_strength, radians(self.dirt_angle), radians(self.clean_angle), self.dirt_only) ret = applyVertexDirt(mesh, self.blur_iterations, self.blur_strength, radians(self.dirt_angle), radians(self.clean_angle), self.dirt_only)
print('Dirt calculated in %.6f' % (time.time() - t)) print('Dirt calculated in %.6f' % (time.time() - t))
return {'FINISHED'} return ret
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment