Не подтверждена Коммит c5919d4e создал по автору Sergey's avatar Sergey Зафиксировано автором GitHub
Просмотр файлов
владелец 92d17a95
...@@ -16,26 +16,6 @@ from sverchok.utils.logging import catch_log_error, debug ...@@ -16,26 +16,6 @@ from sverchok.utils.logging import catch_log_error, debug
_state = {'frame': None} _state = {'frame': None}
pre_running = False
sv_depsgraph = []
depsgraph_need = False
def get_sv_depsgraph():
global sv_depsgraph
global depsgraph_need
if not depsgraph_need:
sv_depsgraph = bpy.context.evaluated_depsgraph_get()
depsgraph_need = True
elif not sv_depsgraph:
sv_depsgraph = bpy.context.evaluated_depsgraph_get()
return sv_depsgraph
def set_sv_depsgraph_need(val):
global depsgraph_need
depsgraph_need = val
def sverchok_trees(): def sverchok_trees():
for ng in bpy.data.node_groups: for ng in bpy.data.node_groups:
...@@ -82,7 +62,6 @@ def sv_handler_undo_post(scene): ...@@ -82,7 +62,6 @@ def sv_handler_undo_post(scene):
if undo_handler_node_count['sv_groups'] != num_to_test_against: if undo_handler_node_count['sv_groups'] != num_to_test_against:
debug('looks like a node was removed, cleaning') debug('looks like a node was removed, cleaning')
sv_clean(scene) sv_clean(scene)
sv_main_handler(scene)
undo_handler_node_count['sv_groups'] = 0 undo_handler_node_count['sv_groups'] = 0
...@@ -113,25 +92,10 @@ def sv_update_handler(scene): ...@@ -113,25 +92,10 @@ def sv_update_handler(scene):
@persistent @persistent
def sv_main_handler(scene): def sv_scene_change_handler(scene):
""" """
On depsgraph update (pre) On depsgraph update (pre)
""" """
global pre_running
global sv_depsgraph
global depsgraph_need
# when this handler is called from inside another call to this handler we end early
# to avoid stack overflow.
if pre_running:
return
pre_running = True
if depsgraph_need:
sv_depsgraph = bpy.context.evaluated_depsgraph_get()
pre_running = False
# When the Play Animation is on this trigger is executed once. Such event # When the Play Animation is on this trigger is executed once. Such event
# should be suppressed because it repeats animation trigger. When Play # should be suppressed because it repeats animation trigger. When Play
# animation is on and user changes something in the scene this trigger is # animation is on and user changes something in the scene this trigger is
...@@ -242,7 +206,7 @@ handler_dict = { ...@@ -242,7 +206,7 @@ handler_dict = {
'undo_post': sv_handler_undo_post, 'undo_post': sv_handler_undo_post,
'load_pre': sv_pre_load, 'load_pre': sv_pre_load,
'load_post': sv_post_load, 'load_post': sv_post_load,
'depsgraph_update_pre': sv_main_handler, 'depsgraph_update_pre': sv_scene_change_handler,
'save_pre': save_pre_handler, 'save_pre': save_pre_handler,
} }
......
...@@ -10,7 +10,6 @@ import numpy as np ...@@ -10,7 +10,6 @@ import numpy as np
import bpy import bpy
from sverchok.node_tree import SverchCustomTreeNode from sverchok.node_tree import SverchCustomTreeNode
from sverchok.data_structure import updateNode from sverchok.data_structure import updateNode
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
def interp_v3l_v3v3(a, b, t): def interp_v3l_v3v3(a, b, t):
...@@ -108,7 +107,7 @@ class SvSweepModulator(bpy.types.Node, SverchCustomTreeNode): ...@@ -108,7 +107,7 @@ class SvSweepModulator(bpy.types.Node, SverchCustomTreeNode):
num_path_verts = len(path_verts) num_path_verts = len(path_verts)
# -- use the depsgraph for the bevelled objects # -- use the depsgraph for the bevelled objects
sv_depsgraph = get_sv_depsgraph() sv_depsgraph = bpy.context.evaluated_depsgraph_get()
shape_a = sv_depsgraph.objects[construct.shape_a.name] shape_a = sv_depsgraph.objects[construct.shape_a.name]
shape_b = sv_depsgraph.objects[construct.shape_b.name] shape_b = sv_depsgraph.objects[construct.shape_b.name]
shape_a_data = shape_a.to_mesh() shape_a_data = shape_a.to_mesh()
...@@ -200,16 +199,12 @@ class SvSweepModulator(bpy.types.Node, SverchCustomTreeNode): ...@@ -200,16 +199,12 @@ class SvSweepModulator(bpy.types.Node, SverchCustomTreeNode):
finally: finally:
if not construct.complete: if not construct.complete:
return return
set_sv_depsgraph_need(True)
v, e, f = self.sweep_between(construct) v, e, f = self.sweep_between(construct)
self.outputs['Verts'].sv_set([v]) self.outputs['Verts'].sv_set([v])
self.outputs['Edges'].sv_set([e]) self.outputs['Edges'].sv_set([e])
self.outputs['Faces'].sv_set([f]) self.outputs['Faces'].sv_set([f])
def sv_free(self):
set_sv_depsgraph_need(False)
classes = [SvSweepModulator] classes = [SvSweepModulator]
register, unregister = bpy.utils.register_classes_factory(classes) register, unregister = bpy.utils.register_classes_factory(classes)
...@@ -22,7 +22,6 @@ from mathutils.geometry import barycentric_transform ...@@ -22,7 +22,6 @@ from mathutils.geometry import barycentric_transform
import numpy as np import numpy as np
from bpy.props import BoolProperty, StringProperty, FloatVectorProperty from bpy.props import BoolProperty, StringProperty, FloatVectorProperty
from sverchok.node_tree import SverchCustomTreeNode from sverchok.node_tree import SverchCustomTreeNode
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
from sverchok.data_structure import (updateNode, second_as_first_cycle as safc) from sverchok.data_structure import (updateNode, second_as_first_cycle as safc)
...@@ -50,12 +49,9 @@ class SvMeshUVColorNode(bpy.types.Node, SverchCustomTreeNode): ...@@ -50,12 +49,9 @@ class SvMeshUVColorNode(bpy.types.Node, SverchCustomTreeNode):
color_socket = si('SvColorSocket', 'Color on UV') color_socket = si('SvColorSocket', 'Color on UV')
color_socket.prop_name = 'unit_color' color_socket.prop_name = 'unit_color'
def sv_free(self):
set_sv_depsgraph_need(False)
def process(self): def process(self):
Object, Points, Colors = self.inputs Object, Points, Colors = self.inputs
dps = get_sv_depsgraph() dps = bpy.context.evaluated_depsgraph_get()
obj = Object.sv_get()[0] # triangulate faces obj = Object.sv_get()[0] # triangulate faces
bvh = BVHTree.FromObject(obj, dps) bvh = BVHTree.FromObject(obj, dps)
point = Points.sv_get()[0] point = Points.sv_get()[0]
......
...@@ -22,7 +22,6 @@ from mathutils.geometry import barycentric_transform ...@@ -22,7 +22,6 @@ from mathutils.geometry import barycentric_transform
import numpy as np import numpy as np
from bpy.props import BoolProperty, StringProperty from bpy.props import BoolProperty, StringProperty
from sverchok.node_tree import SverchCustomTreeNode from sverchok.node_tree import SverchCustomTreeNode
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
from sverchok.data_structure import (updateNode) from sverchok.data_structure import (updateNode)
...@@ -46,14 +45,11 @@ class SvSampleUVColorNode(bpy.types.Node, SverchCustomTreeNode): ...@@ -46,14 +45,11 @@ class SvSampleUVColorNode(bpy.types.Node, SverchCustomTreeNode):
self.inputs.new('SvVerticesSocket', 'Point on mesh') self.inputs.new('SvVerticesSocket', 'Point on mesh')
self.outputs.new('SvColorSocket', 'Color on UV') self.outputs.new('SvColorSocket', 'Color on UV')
def sv_free(self):
set_sv_depsgraph_need(False)
def process(self): def process(self):
Points = self.inputs[1] Points = self.inputs[1]
Colors = self.outputs[0] Colors = self.outputs[0]
if Colors.is_linked: if Colors.is_linked:
dps = get_sv_depsgraph() dps = bpy.context.evaluated_depsgraph_get()
obj = self.inputs[0].sv_get()[0] # triangulate faces obj = self.inputs[0].sv_get()[0] # triangulate faces
bvh = BVHTree.FromObject(obj, dps) bvh = BVHTree.FromObject(obj, dps)
point = Points.sv_get()[0] point = Points.sv_get()[0]
......
...@@ -13,7 +13,6 @@ from sverchok.node_tree import SverchCustomTreeNode ...@@ -13,7 +13,6 @@ from sverchok.node_tree import SverchCustomTreeNode
from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator
from sverchok.data_structure import updateNode from sverchok.data_structure import updateNode
from sverchok.utils.sv_bmesh_utils import pydata_from_bmesh from sverchok.utils.sv_bmesh_utils import pydata_from_bmesh
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
from sverchok.utils.nodes_mixins.show_3d_properties import Show3DProperties from sverchok.utils.nodes_mixins.show_3d_properties import Show3DProperties
from sverchok.utils.blender_mesh import ( from sverchok.utils.blender_mesh import (
read_verts, read_edges, read_verts_normal, read_verts, read_edges, read_verts_normal,
...@@ -107,14 +106,10 @@ class SvGetObjectsData(Show3DProperties, bpy.types.Node, SverchCustomTreeNode): ...@@ -107,14 +106,10 @@ class SvGetObjectsData(Show3DProperties, bpy.types.Node, SverchCustomTreeNode):
elif not self.vergroups and showing_vg: elif not self.vergroups and showing_vg:
outs.remove(outs['Vers_grouped']) outs.remove(outs['Vers_grouped'])
def modifiers_handle(self, context):
set_sv_depsgraph_need(self.modifiers)
updateNode(self, context)
modifiers: BoolProperty( modifiers: BoolProperty(
name='Modifiers', name='Modifiers',
description='Apply modifier geometry to import (original untouched)', description='Apply modifier geometry to import (original untouched)',
default=False, update=modifiers_handle) default=False, update=updateNode)
vergroups: BoolProperty( vergroups: BoolProperty(
name='Vergroups', name='Vergroups',
...@@ -257,9 +252,6 @@ class SvGetObjectsData(Show3DProperties, bpy.types.Node, SverchCustomTreeNode): ...@@ -257,9 +252,6 @@ class SvGetObjectsData(Show3DProperties, bpy.types.Node, SverchCustomTreeNode):
def get_materials_from_bmesh(self, bm): def get_materials_from_bmesh(self, bm):
return [face.material_index for face in bm.faces[:]] return [face.material_index for face in bm.faces[:]]
def sv_free(self):
set_sv_depsgraph_need(False)
def process(self): def process(self):
objs = self.inputs[0].sv_get(default=[[]]) objs = self.inputs[0].sv_get(default=[[]])
...@@ -274,8 +266,7 @@ class SvGetObjectsData(Show3DProperties, bpy.types.Node, SverchCustomTreeNode): ...@@ -274,8 +266,7 @@ class SvGetObjectsData(Show3DProperties, bpy.types.Node, SverchCustomTreeNode):
o_vs, o_es, o_ps, o_vn, o_mi, o_pa, o_pc, o_pn, o_ms, o_ob = [s.is_linked for s in self.outputs[:10]] o_vs, o_es, o_ps, o_vn, o_mi, o_pa, o_pc, o_pn, o_ms, o_ob = [s.is_linked for s in self.outputs[:10]]
vs, es, ps, vn, mi, pa, pc, pn, ms = [[] for s in self.outputs[:9]] vs, es, ps, vn, mi, pa, pc, pn, ms = [[] for s in self.outputs[:9]]
if self.modifiers: if self.modifiers:
sv_depsgraph = get_sv_depsgraph() sv_depsgraph = bpy.context.evaluated_depsgraph_get()
out_np = self.out_np if not self.output_np_all else [True for i in range(7)] out_np = self.out_np if not self.output_np_all else [True for i in range(7)]
if isinstance(objs[0], list): if isinstance(objs[0], list):
......
...@@ -21,7 +21,6 @@ import numpy as np ...@@ -21,7 +21,6 @@ import numpy as np
from bpy.props import BoolProperty from bpy.props import BoolProperty
from sverchok.node_tree import SverchCustomTreeNode from sverchok.node_tree import SverchCustomTreeNode
from sverchok.data_structure import updateNode, second_as_first_cycle as safc from sverchok.data_structure import updateNode, second_as_first_cycle as safc
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
class SvParticlesMK2Node(bpy.types.Node, SverchCustomTreeNode): class SvParticlesMK2Node(bpy.types.Node, SverchCustomTreeNode):
...@@ -50,7 +49,7 @@ class SvParticlesMK2Node(bpy.types.Node, SverchCustomTreeNode): ...@@ -50,7 +49,7 @@ class SvParticlesMK2Node(bpy.types.Node, SverchCustomTreeNode):
outL, outV = self.outputs outL, outV = self.outputs
# this may not work in render mode. # this may not work in render mode.
sv_depsgraph = get_sv_depsgraph() sv_depsgraph = bpy.context.evaluated_depsgraph_get()
# listobj = [i.particle_systems.active.particles for i in O.sv_get() if i.particle_systems] # listobj = [i.particle_systems.active.particles for i in O.sv_get() if i.particle_systems]
listobj = [] listobj = []
...@@ -79,8 +78,6 @@ class SvParticlesMK2Node(bpy.types.Node, SverchCustomTreeNode): ...@@ -79,8 +78,6 @@ class SvParticlesMK2Node(bpy.types.Node, SverchCustomTreeNode):
if outV.is_linked: if outV.is_linked:
outV.sv_set([[i.velocity[:] for i in Plist] for Plist in listobj]) outV.sv_set([[i.velocity[:] for i in Plist] for Plist in listobj])
def sv_free(self):
set_sv_depsgraph_need(False)
def register(): def register():
bpy.utils.register_class(SvParticlesMK2Node) bpy.utils.register_class(SvParticlesMK2Node)
......
...@@ -21,7 +21,7 @@ import bpy ...@@ -21,7 +21,7 @@ import bpy
from bpy.props import BoolProperty from bpy.props import BoolProperty
from sverchok.node_tree import SverchCustomTreeNode from sverchok.node_tree import SverchCustomTreeNode
from sverchok.data_structure import (updateNode) from sverchok.data_structure import (updateNode)
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode): class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode):
'''Get Object Data''' '''Get Object Data'''
...@@ -38,11 +38,7 @@ class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode): ...@@ -38,11 +38,7 @@ class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode):
PolygonCenters='Polygon Centers', PolygonCenters='Polygon Centers',
PolygonNormals='Polygon Normals'))] PolygonNormals='Polygon Normals'))]
def modifiers_handle(self, context): modifiers: BoolProperty(name='Modifiers', default=False, update=updateNode)
set_sv_depsgraph_need(self.modifiers)
updateNode(self, context)
modifiers: BoolProperty(name='Modifiers', default=False, update=modifiers_handle)
def sv_init(self, context): def sv_init(self, context):
self.inputs.new('SvObjectSocket', "Objects") self.inputs.new('SvObjectSocket', "Objects")
...@@ -59,9 +55,6 @@ class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode): ...@@ -59,9 +55,6 @@ class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode):
row = layout.row() row = layout.row()
row.prop(self, "modifiers", text="Post modifiers") row.prop(self, "modifiers", text="Post modifiers")
def sv_free(self):
set_sv_depsgraph_need(False)
def process(self): def process(self):
objs = self.inputs[0].sv_get() objs = self.inputs[0].sv_get()
if isinstance(objs[0], list): if isinstance(objs[0], list):
...@@ -71,7 +64,7 @@ class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode): ...@@ -71,7 +64,7 @@ class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode):
vs,vn,es,ps,pa,pc,pn,ms = [],[],[],[],[],[],[],[] vs,vn,es,ps,pa,pc,pn,ms = [],[],[],[],[],[],[],[]
if self.modifiers: if self.modifiers:
sv_depsgraph = get_sv_depsgraph() sv_depsgraph = bpy.context.evaluated_depsgraph_get()
ot = objs[0].type in ['MESH', 'CURVE', 'FONT', 'SURFACE', 'META'] ot = objs[0].type in ['MESH', 'CURVE', 'FONT', 'SURFACE', 'META']
for obj in objs: for obj in objs:
......
...@@ -13,7 +13,6 @@ from sverchok.node_tree import SverchCustomTreeNode ...@@ -13,7 +13,6 @@ from sverchok.node_tree import SverchCustomTreeNode
from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator
from sverchok.data_structure import updateNode from sverchok.data_structure import updateNode
from sverchok.utils.sv_bmesh_utils import pydata_from_bmesh from sverchok.utils.sv_bmesh_utils import pydata_from_bmesh
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
from sverchok.utils.nodes_mixins.show_3d_properties import Show3DProperties from sverchok.utils.nodes_mixins.show_3d_properties import Show3DProperties
class SvOB3BDataCollection(bpy.types.PropertyGroup): class SvOB3BDataCollection(bpy.types.PropertyGroup):
...@@ -94,10 +93,6 @@ class SvObjectsNodeMK3(Show3DProperties, bpy.types.Node, SverchCustomTreeNode): ...@@ -94,10 +93,6 @@ class SvObjectsNodeMK3(Show3DProperties, bpy.types.Node, SverchCustomTreeNode):
elif not self.vergroups and showing_vg: elif not self.vergroups and showing_vg:
outs.remove(outs['Vers_grouped']) outs.remove(outs['Vers_grouped'])
def modifiers_handle(self, context):
set_sv_depsgraph_need(self.modifiers)
updateNode(self, context)
groupname: StringProperty( groupname: StringProperty(
name='groupname', description='group of objects (green outline CTRL+G)', name='groupname', description='group of objects (green outline CTRL+G)',
default='', update=updateNode) default='', update=updateNode)
...@@ -105,7 +100,7 @@ class SvObjectsNodeMK3(Show3DProperties, bpy.types.Node, SverchCustomTreeNode): ...@@ -105,7 +100,7 @@ class SvObjectsNodeMK3(Show3DProperties, bpy.types.Node, SverchCustomTreeNode):
modifiers: BoolProperty( modifiers: BoolProperty(
name='Modifiers', name='Modifiers',
description='Apply modifier geometry to import (original untouched)', description='Apply modifier geometry to import (original untouched)',
default=False, update=modifiers_handle) default=False, update=updateNode)
vergroups: BoolProperty( vergroups: BoolProperty(
name='Vergroups', name='Vergroups',
...@@ -221,9 +216,6 @@ class SvObjectsNodeMK3(Show3DProperties, bpy.types.Node, SverchCustomTreeNode): ...@@ -221,9 +216,6 @@ class SvObjectsNodeMK3(Show3DProperties, bpy.types.Node, SverchCustomTreeNode):
def get_materials_from_mesh(self, mesh): def get_materials_from_mesh(self, mesh):
return [face.material_index for face in mesh.polygons[:]] return [face.material_index for face in mesh.polygons[:]]
def sv_free(self):
set_sv_depsgraph_need(False)
def process(self): def process(self):
if not self.object_names: if not self.object_names:
...@@ -242,7 +234,7 @@ class SvObjectsNodeMK3(Show3DProperties, bpy.types.Node, SverchCustomTreeNode): ...@@ -242,7 +234,7 @@ class SvObjectsNodeMK3(Show3DProperties, bpy.types.Node, SverchCustomTreeNode):
materials_out = [] materials_out = []
if self.modifiers: if self.modifiers:
sv_depsgraph = get_sv_depsgraph() sv_depsgraph = bpy.context.evaluated_depsgraph_get()
# iterate through references # iterate through references
for obj in (data_objects.get(o.name) for o in self.object_names): for obj in (data_objects.get(o.name) for o in self.object_names):
......
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать