Редактор нормалей: Face для нескольких выделенных лиц
24 августа 2016 21:05
Предлагаю простое изменение в коде класса B4W_FaceVertexNormals (vertex_normals.py) которое позволяет этой функции работать с любым количеством выделенных лиц и задавать им независимые нормали:
Старый код:
if len(sel_indices) < 3:
self.report({'INFO'}, _('Please select at least 3 vertices'))
return {"FINISHED"}
for p in mesh.polygons:
all_in = True
for i in sel_indices:
if mesh.vertices.index not in p.vertices:
all_in = False
break
if all_in:
for i in sel_indices:
set_vertex_normal(i, (p.normal.x, p.normal.y, p.normal.z))
Новый код:
if len(sel_indices) < 3:
self.report({'INFO'}, _('Please select at least 3 vertices'))
return {"FINISHED"}
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.mode_set(mode='EDIT')
sel_polys = []
for p in mesh.polygons:
if p.select == True:
sel_polys.append(p)
for i in sel_indices:
resVec = mathutils.Vector((0,0,0))
for p in sel_polys:
if i.index in p.vertices:
resVec = resVec + p.normal
resVec.normalize()
set_vertex_normal(i,(resVec.x,resVec.y,resVec.z))
Старый код:
if len(sel_indices) < 3:
self.report({'INFO'}, _('Please select at least 3 vertices'))
return {"FINISHED"}
for p in mesh.polygons:
all_in = True
for i in sel_indices:
if mesh.vertices.index not in p.vertices:
all_in = False
break
if all_in:
for i in sel_indices:
set_vertex_normal(i, (p.normal.x, p.normal.y, p.normal.z))
Новый код:
if len(sel_indices) < 3:
self.report({'INFO'}, _('Please select at least 3 vertices'))
return {"FINISHED"}
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.mode_set(mode='EDIT')
sel_polys = []
for p in mesh.polygons:
if p.select == True:
sel_polys.append(p)
for i in sel_indices:
resVec = mathutils.Vector((0,0,0))
for p in sel_polys:
if i.index in p.vertices:
resVec = resVec + p.normal
resVec.normalize()
set_vertex_normal(i,(resVec.x,resVec.y,resVec.z))
25 августа 2016 15:49
Здравствуйте! И добро пожаловать на наш форум!
Самый удобный способ предложения изменений в коде - это сделать pull request в проект на гитхабе https://github.com/TriumphLLC/Blend4Web
Менее удобный - опубликовать здесь на форуме патч, сформированный командой diff или git diff.
А так получается неотформатированный текст, который придется вручную заменять и формировать отступы, что для питона является частью синтаксиса.
Было бы очень здорово, если бы вы воспользовались одним из предложенных способов. Спасибо за интерес к нашему проекту!
Самый удобный способ предложения изменений в коде - это сделать pull request в проект на гитхабе https://github.com/TriumphLLC/Blend4Web
Менее удобный - опубликовать здесь на форуме патч, сформированный командой diff или git diff.
А так получается неотформатированный текст, который придется вручную заменять и формировать отступы, что для питона является частью синтаксиса.
Было бы очень здорово, если бы вы воспользовались одним из предложенных способов. Спасибо за интерес к нашему проекту!
Александр (команда Blend4Web)
twitter
25 августа 2016 16:20
PS Правда есть небольшая юридическая заморочка: если патч будет принят, вам придется подписать Contributor License Agreement, подобное тому, что у Canonical.
Александр (команда Blend4Web)
twitter