Add new node asset scripts for geometry and shader operations
- Implemented `build_mesh_plane.py` to create a geometry node group for mesh planes with customizable parameters. - Created `build_shadeless.py` for a shader node group that displays color without scene lighting while preserving shadows and reflections. - Added `validate.py` to validate the integrity of the newly created node groups and their inputs. - Introduced `validate_cutout.py` to ensure the functionality of cutout node groups and their dependencies. - Developed `validate_mesh_plane.py` to test the mesh plane creation and its modifier settings.
This commit is contained in:
@@ -1,16 +1,14 @@
|
||||
import bpy
|
||||
|
||||
from ..preferences import (
|
||||
DEFAULT_UPSCALE_MAX_OUTPUT_SIZE,
|
||||
MAX_UPSCALE_OUTPUT_SIZE,
|
||||
)
|
||||
from ..properties import (
|
||||
configured_upscale_max_output_size,
|
||||
configured_upscale_model,
|
||||
upscale_model_label,
|
||||
from ..preferences import configured_max_ai_input_size
|
||||
from ..properties import configured_upscale_model, upscale_model_label
|
||||
from ..server.media.resolution import (
|
||||
DEFAULT_MAX_AI_INPUT_SIZE,
|
||||
MAX_MAX_AI_INPUT_SIZE,
|
||||
MIN_MAX_AI_INPUT_SIZE,
|
||||
)
|
||||
from ..runtime import JobOperatorBase
|
||||
from .common import (
|
||||
from .common.operator import (
|
||||
HIDDEN,
|
||||
cleanup_temporary_input,
|
||||
input_path,
|
||||
@@ -20,7 +18,7 @@ from .common import (
|
||||
require_model,
|
||||
source_start_frame,
|
||||
)
|
||||
from .image import (
|
||||
from .common.image import (
|
||||
create_color_image,
|
||||
default_extract_frames,
|
||||
image_base_name,
|
||||
@@ -42,15 +40,12 @@ class UpscaleImage(JobOperatorBase, bpy.types.Operator):
|
||||
default="REALESRGAN_GENERAL_WDN_X4V3",
|
||||
options=HIDDEN,
|
||||
)
|
||||
max_output_size: bpy.props.IntProperty(
|
||||
name="Max Output Size",
|
||||
description=(
|
||||
"Maximum output long edge; larger inputs are resized before 4x "
|
||||
"upscaling to keep memory use bounded"
|
||||
),
|
||||
default=DEFAULT_UPSCALE_MAX_OUTPUT_SIZE,
|
||||
min=1024,
|
||||
max=MAX_UPSCALE_OUTPUT_SIZE,
|
||||
max_input_size: bpy.props.IntProperty(
|
||||
name="Max AI Input Size",
|
||||
description="Maximum input long edge used for AI upscale analysis",
|
||||
default=DEFAULT_MAX_AI_INPUT_SIZE,
|
||||
min=MIN_MAX_AI_INPUT_SIZE,
|
||||
max=MAX_MAX_AI_INPUT_SIZE,
|
||||
step=256,
|
||||
subtype="PIXEL",
|
||||
options=HIDDEN,
|
||||
@@ -74,7 +69,7 @@ class UpscaleImage(JobOperatorBase, bpy.types.Operator):
|
||||
|
||||
def execute(self, context):
|
||||
self.model = configured_upscale_model(context)
|
||||
self.max_output_size = configured_upscale_max_output_size(context)
|
||||
self.max_input_size = configured_max_ai_input_size(context)
|
||||
source_object = context.object
|
||||
if not is_image_empty(source_object):
|
||||
self.report({"ERROR"}, "Select an Image Empty to upscale")
|
||||
@@ -127,7 +122,7 @@ class UpscaleImage(JobOperatorBase, bpy.types.Operator):
|
||||
"device": production_device().lower(),
|
||||
"video_frames": settings.video_frames,
|
||||
"start_frame": source_start_frame(self.source_object_name),
|
||||
"max_output_size": int(self.max_output_size),
|
||||
"max_input_size": int(self.max_input_size),
|
||||
}
|
||||
|
||||
def response(self, _context, result):
|
||||
|
||||
Reference in New Issue
Block a user