From 1c49fbb813626028458c1d0d25bf65a505401a48 Mon Sep 17 00:00:00 2001 From: Ma Nan Date: Fri, 11 Apr 2025 16:10:13 +0800 Subject: [PATCH] Add slicer to layer when first import --- .../assets/Nodes/BioxelNodes_latest.blend | 4 +- src/bioxelnodes/bioxelutils/container.py | 2 +- src/bioxelnodes/operators/io.py | 51 ++++++++++++++++--- src/bioxelnodes/operators/misc.py | 22 -------- 4 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/bioxelnodes/assets/Nodes/BioxelNodes_latest.blend b/src/bioxelnodes/assets/Nodes/BioxelNodes_latest.blend index dc5d2a5..57528b7 100644 --- a/src/bioxelnodes/assets/Nodes/BioxelNodes_latest.blend +++ b/src/bioxelnodes/assets/Nodes/BioxelNodes_latest.blend @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31506f1565fd95add291ec68921a8e3cd6fb70985fc0e737962ea723a41c0a8c -size 9059134 +oid sha256:a76a54a0ec3a2a279e6cc06288975c23ca0cb999dafd0d3fd8842ec3e310fc41 +size 9057934 diff --git a/src/bioxelnodes/bioxelutils/container.py b/src/bioxelnodes/bioxelutils/container.py index e947dca..147733f 100644 --- a/src/bioxelnodes/bioxelutils/container.py +++ b/src/bioxelnodes/bioxelutils/container.py @@ -95,7 +95,7 @@ def add_layers(layers: list[Layer], if len(output_node.inputs[0].links) == 0: node_group.links.new(fetch_node.outputs[0], output_node.inputs[0]) - move_node_to_node(fetch_node, output_node, (-600, 0)) + move_node_to_node(fetch_node, output_node, (-900, 0)) else: move_node_to_node(fetch_node, output_node, (0, -100 * (i+1))) diff --git a/src/bioxelnodes/operators/io.py b/src/bioxelnodes/operators/io.py index 51567aa..d3f4fd3 100644 --- a/src/bioxelnodes/operators/io.py +++ b/src/bioxelnodes/operators/io.py @@ -5,10 +5,12 @@ import threading import numpy as np from pathlib import Path + from ..exceptions import CancelledByUser from ..props import BIOXELNODES_Series +from ..bioxelutils.node import add_node_to_graph from ..bioxelutils.common import (get_all_layer_objs, get_container_obj, - get_layer_obj, is_incompatible) + get_layer_obj, get_nodes_by_type, get_output_node, is_incompatible, move_node_to_node) from ..bioxelutils.container import (Container, add_layers, container_to_obj) @@ -16,7 +18,7 @@ from ..bioxel.layer import Layer from ..bioxel.parse import (DICOM_EXTS, SUPPORT_EXTS, get_ext, parse_volumetric_data) -from ..utils import (get_cache_dir, +from ..utils import (get_cache_dir, get_use_link, progress_update, progress_bar, select_object) @@ -666,7 +668,7 @@ class ImportVolumetricDataDialog(bpy.types.Operator): # Gamma Correct # data = data ** 2.2 - + name = self.layer_name or "Color" if data.shape[4] == 1: data = np.repeat(data, repeats=3, axis=4) @@ -854,9 +856,46 @@ class ImportVolumetricDataDialog(bpy.types.Operator): # Change render setting for better result if is_first_import: - bpy.ops.bioxelnodes.render_setting_preset('EXEC_DEFAULT', - preset="balance") - bpy.context.scene.render.engine = 'CYCLES' + try: + + node_group = container_obj.modifiers[0].node_group + layer_node = get_nodes_by_type( + node_group, "BioxelNodes_FetchLayer")[0] + center_node = add_node_to_graph("ReCenter", + node_group, + use_link=get_use_link()) + + output_node = get_output_node(node_group) + + node_group.links.new(layer_node.outputs[0], + center_node.inputs[0]) + node_group.links.new(center_node.outputs[0], + output_node.inputs[0]) + + move_node_to_node(center_node, layer_node, (300, 0)) + bpy.ops.bioxelnodes.add_slicer('EXEC_DEFAULT') + except: + self.report({"WARNING"}, "Fail to create slicer.") + + try: + bpy.ops.bioxelnodes.render_setting_preset('EXEC_DEFAULT', + preset="balance") + bpy.ops.bioxelnodes.add_eevee_env('EXEC_DEFAULT') + bpy.context.scene.eevee.use_taa_reprojection = False + bpy.context.scene.render.engine = 'BLENDER_EEVEE_NEXT' + + view_3d = None + if context.area.type == 'VIEW_3D': + view_3d = context.area + else: + for area in context.screen.areas: + if area.type == 'VIEW_3D': + view_3d = area + break + if view_3d: + view_3d.spaces[0].shading.type = 'RENDERED' + except: + self.report({"WARNING"}, "Fail to change render setting.") self.report({"INFO"}, "Successfully Imported") return {'FINISHED'} diff --git a/src/bioxelnodes/operators/misc.py b/src/bioxelnodes/operators/misc.py index a9691cd..c0275e8 100644 --- a/src/bioxelnodes/operators/misc.py +++ b/src/bioxelnodes/operators/misc.py @@ -296,28 +296,6 @@ class AddEeveeEnv(bpy.types.Operator): directory=f"{str(LATEST_NODE_LIB_PATH)}/Object", filename="EeveeEnv" ) - # bpy.ops.object.light_add( - # type='POINT', align='WORLD', location=(0, 0, 0), scale=(1, 1, 1)) - # light_obj = bpy.context.active_object - # light_obj.name = "EeveeEnv" - # light_obj.data.shadow_soft_size = 100 - # light_obj.data.energy = 1e+06 - # light_obj.data.color = (0.1, 0.1, 0.1) - # light_obj.data.use_shadow = False - # light_obj.data.diffuse_factor = 0 - # light_obj.data.specular_factor = 0 - # light_obj.data.transmission_factor = 0 - - # light_obj.hide_select = True - # light_obj.lock_location[0] = True - # light_obj.lock_location[1] = True - # light_obj.lock_location[2] = True - # light_obj.lock_rotation[0] = True - # light_obj.lock_rotation[1] = True - # light_obj.lock_rotation[2] = True - # light_obj.lock_scale[0] = True - # light_obj.lock_scale[1] = True - # light_obj.lock_scale[2] = True bpy.context.scene.eevee.use_shadows = True bpy.context.scene.eevee.use_volumetric_shadows = True