Single-responsibility conversion node that sits between a depth source
(e.g. PanoramaSplit on an equirect depth pano) and SHARP's predict
node. Makes the convention boundary visible in the graph instead of
hiding it as a 'depth_convention' toggle inside the predict node.
Inputs:
image IMAGE — per-face depth in ray-distance convention
intrinsics INTRINSICS — per-face K (normalized or pixel, auto-detected)
extrinsics EXTRINSICS — pass-through (optional, not used in the math)
Outputs:
image IMAGE — per-face depth in planar-Z convention
extrinsics EXTRINSICS — pass-through
intrinsics INTRINSICS — pass-through, rescaled to pixel-K if input
was normalized (consistent units downstream)
Math: planar_z = ray_distance × cos_map where
cos_map[u, v] = 1 / sqrt(((u-cx)/fx)² + ((v-cy)/fy)² + 1)
Inherits the same fx<2.0 normalized-K sniff added to the three Sharp
predict nodes earlier this cycle, so workflows that wire PanoPack's
utils3d-style normalized intrinsics get auto-rescaled to pixel-K.
Predict-side note: SharpPredictGaussiansFromMetricDepth still has the
'depth_convention' input -- now redundant when this node is used.
Workflows can drop the toggle (use default planar_z) and instead wire
ray-distance depth through SharpRayToPlanarDepth first. Keeping the
toggle in place so existing workflows don't break; deprecation /
removal is a later cleanup.
79 lines
4.9 KiB
Python
79 lines
4.9 KiB
Python
"""ComfyUI-Sharp nodes aggregation."""
|
|
|
|
from .load_model import NODE_CLASS_MAPPINGS as LOAD_MODEL_MAPPINGS
|
|
from .load_model import NODE_DISPLAY_NAME_MAPPINGS as LOAD_MODEL_DISPLAY_MAPPINGS
|
|
from .predict import NODE_CLASS_MAPPINGS as PREDICT_MAPPINGS
|
|
from .predict import NODE_DISPLAY_NAME_MAPPINGS as PREDICT_DISPLAY_MAPPINGS
|
|
from .load_image_exif import NODE_CLASS_MAPPINGS as LOAD_IMAGE_EXIF_MAPPINGS
|
|
from .load_image_exif import NODE_DISPLAY_NAME_MAPPINGS as LOAD_IMAGE_EXIF_DISPLAY_MAPPINGS
|
|
from .sample_panorama import NODE_CLASS_MAPPINGS as SAMPLE_PANORAMA_MAPPINGS
|
|
from .sample_panorama import NODE_DISPLAY_NAME_MAPPINGS as SAMPLE_PANORAMA_DISPLAY_MAPPINGS
|
|
from .merge_gaussians import NODE_CLASS_MAPPINGS as MERGE_GAUSSIANS_MAPPINGS
|
|
from .merge_gaussians import NODE_DISPLAY_NAME_MAPPINGS as MERGE_GAUSSIANS_DISPLAY_MAPPINGS
|
|
from .predict_depth import NODE_CLASS_MAPPINGS as PREDICT_DEPTH_MAPPINGS
|
|
from .predict_depth import NODE_DISPLAY_NAME_MAPPINGS as PREDICT_DEPTH_DISPLAY_MAPPINGS
|
|
from .project_depth_to_panorama import NODE_CLASS_MAPPINGS as PROJECT_DEPTH_MAPPINGS
|
|
from .project_depth_to_panorama import NODE_DISPLAY_NAME_MAPPINGS as PROJECT_DEPTH_DISPLAY_MAPPINGS
|
|
from .align_depth_maps import NODE_CLASS_MAPPINGS as ALIGN_DEPTH_MAPPINGS
|
|
from .align_depth_maps import NODE_DISPLAY_NAME_MAPPINGS as ALIGN_DEPTH_DISPLAY_MAPPINGS
|
|
from .panorama_cube_split import NODE_CLASS_MAPPINGS as PANORAMA_CUBE_SPLIT_MAPPINGS
|
|
from .panorama_cube_split import NODE_DISPLAY_NAME_MAPPINGS as PANORAMA_CUBE_SPLIT_DISPLAY_MAPPINGS
|
|
from .refined_depth_from_gaussians import NODE_CLASS_MAPPINGS as REFINED_DEPTH_MAPPINGS
|
|
from .refined_depth_from_gaussians import NODE_DISPLAY_NAME_MAPPINGS as REFINED_DEPTH_DISPLAY_MAPPINGS
|
|
from .predict_gaussian_attrs import NODE_CLASS_MAPPINGS as PREDICT_ATTRS_MAPPINGS
|
|
from .predict_gaussian_attrs import NODE_DISPLAY_NAME_MAPPINGS as PREDICT_ATTRS_DISPLAY_MAPPINGS
|
|
from .predict_metric_depth import NODE_CLASS_MAPPINGS as PREDICT_MDEPTH_MAPPINGS
|
|
from .predict_metric_depth import NODE_DISPLAY_NAME_MAPPINGS as PREDICT_MDEPTH_DISPLAY_MAPPINGS
|
|
from .predict_gaussians_from_depth import NODE_CLASS_MAPPINGS as PREDICT_GFD_MAPPINGS
|
|
from .predict_gaussians_from_depth import NODE_DISPLAY_NAME_MAPPINGS as PREDICT_GFD_DISPLAY_MAPPINGS
|
|
from .predict_foreground import NODE_CLASS_MAPPINGS as PREDICT_FG_MAPPINGS
|
|
from .predict_foreground import NODE_DISPLAY_NAME_MAPPINGS as PREDICT_FG_DISPLAY_MAPPINGS
|
|
from .image_attrs_to_ply import NODE_CLASS_MAPPINGS as IMAGE_ATTRS_MAPPINGS
|
|
from .image_attrs_to_ply import NODE_DISPLAY_NAME_MAPPINGS as IMAGE_ATTRS_DISPLAY_MAPPINGS
|
|
from .scale_image_values import NODE_CLASS_MAPPINGS as SCALE_IMAGE_MAPPINGS
|
|
from .scale_image_values import NODE_DISPLAY_NAME_MAPPINGS as SCALE_IMAGE_DISPLAY_MAPPINGS
|
|
from .ray_to_planar_depth import NODE_CLASS_MAPPINGS as RAY_TO_PLANAR_MAPPINGS
|
|
from .ray_to_planar_depth import NODE_DISPLAY_NAME_MAPPINGS as RAY_TO_PLANAR_DISPLAY_MAPPINGS
|
|
|
|
# Aggregate all node mappings
|
|
NODE_CLASS_MAPPINGS = {}
|
|
NODE_DISPLAY_NAME_MAPPINGS = {}
|
|
|
|
NODE_CLASS_MAPPINGS.update(LOAD_MODEL_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(PREDICT_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(LOAD_IMAGE_EXIF_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(SAMPLE_PANORAMA_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(MERGE_GAUSSIANS_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(PREDICT_DEPTH_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(PROJECT_DEPTH_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(ALIGN_DEPTH_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(PANORAMA_CUBE_SPLIT_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(REFINED_DEPTH_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(PREDICT_ATTRS_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(PREDICT_MDEPTH_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(PREDICT_GFD_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(PREDICT_FG_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(IMAGE_ATTRS_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(SCALE_IMAGE_MAPPINGS)
|
|
NODE_CLASS_MAPPINGS.update(RAY_TO_PLANAR_MAPPINGS)
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(LOAD_MODEL_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(PREDICT_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(LOAD_IMAGE_EXIF_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(SAMPLE_PANORAMA_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(MERGE_GAUSSIANS_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(PREDICT_DEPTH_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(PROJECT_DEPTH_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(ALIGN_DEPTH_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(PANORAMA_CUBE_SPLIT_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(REFINED_DEPTH_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(PREDICT_ATTRS_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(PREDICT_MDEPTH_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(PREDICT_GFD_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(PREDICT_FG_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(IMAGE_ATTRS_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(SCALE_IMAGE_DISPLAY_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(RAY_TO_PLANAR_DISPLAY_MAPPINGS)
|
|
|
|
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]
|