Skip to content

Commit 992f9e3

Browse files
authored
Update nodes.py - OrbitPose presets and switch between poses and lists.
1 parent ceecbde commit 992f9e3

File tree

1 file changed

+136
-1
lines changed

1 file changed

+136
-1
lines changed

nodes.py

Lines changed: 136 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3005,4 +3005,139 @@ def run_LRM(self, character_lrm_pipe, multiview_images, multiview_masks):
30053005
mesh.auto_normal()
30063006
mesh.auto_uv()
30073007

3008-
return (mesh,)
3008+
return (mesh,)
3009+
3010+
ORBITPOSE_PRESET = ["Custom", "CRM(6)", "Zero123Plus(6)", "Wonder3D(6)", "Era3D(6)", "MVDream(4)", "Unique3D(4)", "CharacterGen(4)"]
3011+
3012+
OrbitPosesList = {
3013+
"Custom": [[-90.0, 0.0, 180.0, 90.0, 0.0, 0.0], [0.0, 90.0, 0.0, 0.0, -90.0, 0.0], [4.0, 4.0, 4.0, 4.0, 4.0, 4.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]],
3014+
"CRM(6)": [[-90.0, 0.0, 180.0, 90.0, 0.0, 0.0], [0.0, 90.0, 0.0, 0.0, -90.0, 0.0], [4.0, 4.0, 4.0, 4.0, 4.0, 4.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]],
3015+
"Wonder3D(6)": [[0.0, 45.0, 90.0, 180.0, -90.0, -45.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [4.0, 4.0, 4.0, 4.0, 4.0, 4.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]],
3016+
"Zero123Plus(6)": [[30.0, 90.0, 150.0, -150.0, -90.0, -30.0], [-20.0, 10.0, -20.0, 10.0, -20.0, 10.0], [4.0, 4.0, 4.0, 4.0, 4.0, 4.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]],
3017+
"Era3D(6)": [[0.0, 45.0, 90.0, 180.0, -90.0, -45.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], #[[radius], [radius], [radius], [radius], [radius], [radius]], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
3018+
"MVDream(4)": [[0.0, 90.0, 180.0, -90.0], [0.0, 0.0, 0.0, 0.0], [4.0, 4.0, 4.0, 4.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],
3019+
"Unique3D(4)": [[0.0, 90.0, 180.0, -90.0], [0.0, 0.0, 0.0, 0.0]], #[[radius], [radius], [radius], [radius]], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]
3020+
"CharacterGen(4)": [[-90.0, 180.0, 90.0, 0.0], [0.0, 0.0, 0.0, 0.0]], #[[radius], [radius], [radius], [radius]], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]
3021+
}
3022+
3023+
class OrbitPoses_JK:
3024+
def __init__(self):
3025+
pass
3026+
3027+
@classmethod
3028+
def INPUT_TYPES(cls):
3029+
return {
3030+
"required": {
3031+
"orbitpose_preset": (ORBITPOSE_PRESET, {"default": "Custom"}),
3032+
"azimuths": ("STRING", {"default": "-90.0, 0.0, 180.0, 90.0, 0.0, 0.0"}),
3033+
"elevations": ("STRING", {"default": "0.0, 90.0, 0.0, 0.0, -90.0, 0.0"}),
3034+
"radius": ("STRING", {"default": "4.0, 4.0, 4.0, 4.0, 4.0, 4.0"}),
3035+
"center": ("STRING", {"default": "0.0, 0.0, 0.0, 0.0, 0.0, 0.0"}),
3036+
},
3037+
}
3038+
3039+
RETURN_TYPES = ("ORBIT_CAMPOSES", "ORBIT_CAMPOSES",)
3040+
RETURN_NAMES = ("orbit_lists", "orbit_camposes",)
3041+
3042+
FUNCTION = "get_orbit_poses"
3043+
CATEGORY = icons.get("JK/3D")
3044+
3045+
def get_orbit_poses(self, orbitpose_preset, azimuths, elevations, radius, center):
3046+
3047+
orbit_lists = OrbitPosesList.get(f"{orbitpose_preset}")
3048+
3049+
if orbitpose_preset == "Custom":
3050+
azimuths = azimuths.split(",")
3051+
elevations = elevations.split(",")
3052+
radius = radius.split(",")
3053+
center = center.split(",")
3054+
orbit_azimuths = [float(item) for item in azimuths]
3055+
orbit_elevations = [float(item) for item in elevations]
3056+
orbit_radius = [float(item) for item in radius]
3057+
orbit_center = [float(item) for item in center]
3058+
orbit_lists = [orbit_azimuths, orbit_elevations, orbit_radius, orbit_center, orbit_center, orbit_center]
3059+
elif orbitpose_preset == "Era3D(6)":
3060+
radius = radius.split(",")
3061+
orbit_radius = [float(item) for item in radius]
3062+
orbit_center = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
3063+
orbit_lists = [orbit_lists[0], orbit_lists[1], orbit_radius, orbit_center, orbit_center, orbit_center]
3064+
elif orbitpose_preset == "Unique3D(4)" or orbitpose_preset == "CharacterGen(4)":
3065+
radius = radius.split(",")
3066+
orbit_radius = [float(item) for item in radius]
3067+
orbit_radius.pop(4)
3068+
orbit_radius.pop(4)
3069+
orbit_center = [0.0, 0.0, 0.0, 0.0]
3070+
orbit_lists = [orbit_lists[0], orbit_lists[1], orbit_radius, orbit_center, orbit_center, orbit_center]
3071+
3072+
orbit_camposes = []
3073+
3074+
for i in range(0, len(orbit_lists[0])):
3075+
orbit_camposes.append([orbit_lists[2][i], orbit_lists[1][i], orbit_lists[0][i], orbit_lists[3][i], orbit_lists[4][i], orbit_lists[5][i]])
3076+
3077+
return (orbit_lists, orbit_camposes,)
3078+
3079+
class OrbitLists_to_OrbitPoses_JK:
3080+
def __init__(self):
3081+
pass
3082+
3083+
@classmethod
3084+
def INPUT_TYPES(cls):
3085+
return {
3086+
"required": {
3087+
"orbit_lists": ("ORBIT_CAMPOSES",),
3088+
},
3089+
}
3090+
3091+
RETURN_TYPES = ("ORBIT_CAMPOSES",)
3092+
RETURN_NAMES = ("orbit_camposes",)
3093+
3094+
FUNCTION = "convert_orbit_poses"
3095+
CATEGORY = icons.get("JK/3D")
3096+
3097+
def convert_orbit_poses(self, orbit_lists):
3098+
3099+
orbit_camposes = []
3100+
3101+
for i in range(0, len(orbit_camposes[0])):
3102+
orbit_camposes.append([orbit_lists[2][i], orbit_lists[1][i], orbit_lists[0][i], orbit_lists[3][i], orbit_lists[4][i], orbit_lists[5][i]])
3103+
3104+
return (orbit_camposes,)
3105+
3106+
class OrbitPoses_to_OrbitLists_JK:
3107+
def __init__(self):
3108+
pass
3109+
3110+
@classmethod
3111+
def INPUT_TYPES(cls):
3112+
return {
3113+
"required": {
3114+
"orbit_camposes": ("ORBIT_CAMPOSES",),
3115+
},
3116+
}
3117+
3118+
RETURN_TYPES = ("ORBIT_CAMPOSES",)
3119+
RETURN_NAMES = ("orbit_lists",)
3120+
3121+
FUNCTION = "convert_orbit_poses"
3122+
CATEGORY = icons.get("JK/3D")
3123+
3124+
def convert_orbit_poses(self, orbit_camposes):
3125+
3126+
orbit_azimuths = []
3127+
orbit_elevations = []
3128+
orbit_radius = []
3129+
orbit_center0 = []
3130+
orbit_center1 = []
3131+
orbit_center2 = []
3132+
3133+
for i in range(0, len(orbit_camposes)):
3134+
orbit_azimuths.append(orbit_camposes[i][2])
3135+
orbit_elevations.append(orbit_camposes[i][1])
3136+
orbit_radius.append(orbit_camposes[i][0])
3137+
orbit_center0.append(orbit_camposes[i][3])
3138+
orbit_center1.append(orbit_camposes[i][4])
3139+
orbit_center2.append(orbit_camposes[i][5])
3140+
3141+
orbit_lists = [orbit_azimuths, orbit_elevations, orbit_radius, orbit_center0, orbit_center1, orbit_center2]
3142+
3143+
return (orbit_lists,)

0 commit comments

Comments
 (0)