bmesh todo: vertex dirtmap now working again.
also renamed Polygon helper property from 'loops' to loop_indices
This commit is contained in:
@@ -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):
|
|||||||
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):
|
|||||||
__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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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):
|
use_paint_mask = me.use_paint_mask
|
||||||
if not me.use_paint_mask or f.select:
|
|
||||||
|
|
||||||
f_col = active_col_layer[i]
|
for i, p in enumerate(me.polygons):
|
||||||
|
if not use_paint_mask or p.select:
|
||||||
f_col = [f_col.color1, f_col.color2, f_col.color3, f_col.color4]
|
for loop_index in p.loop_indices:
|
||||||
|
loop = me.loops[loop_index]
|
||||||
for j, v in enumerate(f.vertices):
|
v = loop.vertex_index
|
||||||
col = f_col[j]
|
col = active_col_layer[loop_index].color
|
||||||
tone = vert_tone[me.vertices[v].index]
|
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,
|
|||||||
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):
|
|||||||
|
|
||||||
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
|
||||||
|
Reference in New Issue
Block a user