@@ -3005,4 +3005,139 @@ def run_LRM(self, character_lrm_pipe, multiview_images, multiview_masks):
3005
3005
mesh .auto_normal ()
3006
3006
mesh .auto_uv ()
3007
3007
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_lists [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