updated 2 reconstruction tools to single versions
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
#
|
||||
#
|
||||
# 3DE4.script.name: Delete Non Keyframes and Triangulate
|
||||
#
|
||||
# 3DE4.script.version: v1.0
|
||||
#
|
||||
# 3DE4.script.comment: Delete Non Keyframes,Triangulate
|
||||
#
|
||||
# 3DE4.script.gui: Manual Tracking Controls::Reconstruction
|
||||
# 3DE4.script.gui.button: Manual Tracking Controls::Del Non Keyframes + Trian, align-bottom-left, 120, 20
|
||||
|
||||
|
||||
# 3DE4.script.hide: false
|
||||
# 3DE4.script.startup: false
|
||||
#
|
||||
# Giovanni Di Grezia 2016
|
||||
# http://www.xgiovio.com
|
||||
#
|
||||
|
||||
|
||||
|
||||
def operations (del_non_keyframes = False, triangulate = False, reelin = False, distortion = False , deform = False, inside_only = False):
|
||||
|
||||
|
||||
cam = tde4.getCurrentCamera()
|
||||
current_point_group = tde4.getCurrentPGroup()
|
||||
selected_points = tde4.getPointList (current_point_group,1)
|
||||
playback = tde4.getCameraPlaybackRange(cam)
|
||||
firstframe = playback[0]
|
||||
lastframe = playback[1]
|
||||
|
||||
if del_non_keyframes :
|
||||
for point in selected_points :
|
||||
k_pos = []
|
||||
for frame in range (firstframe, lastframe + 1):
|
||||
point_status = tde4.getPointStatus2D(current_point_group,point,cam,frame)
|
||||
if point_status == "POINT_KEYFRAME" or point_status == "POINT_KEYFRAME_END":
|
||||
pos = tde4.getPointPosition2D(current_point_group,point,cam,frame)
|
||||
k_pos.append([frame,[ pos[0], pos[1] ] ])
|
||||
tde4.deletePointCurve2D (current_point_group,point,cam)
|
||||
for i in k_pos :
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,i[0],i[1])
|
||||
if triangulate :
|
||||
if len(k_pos) >= 2:
|
||||
pos3d = tde4.calcPointPosition3D(current_point_group,point,cam)
|
||||
tde4.setPointCalcPosition3D(current_point_group,point,pos3d)
|
||||
tde4.setPointCalculated3D(current_point_group,point,1)
|
||||
tde4.setPointCalculated3DStatus(current_point_group,point,"TRIANGULATED")
|
||||
if reelin :
|
||||
points_to_deform = {}
|
||||
for frame in range (firstframe, lastframe + 1):
|
||||
if distortion:
|
||||
pos = tde4.calcPointBackProjection2D(current_point_group,point,cam,frame,1)
|
||||
else:
|
||||
pos = tde4.calcPointBackProjection2D(current_point_group,point,cam,frame,0)
|
||||
if not deform:
|
||||
if inside_only :
|
||||
if frame >= k_pos[0][0] and frame <= k_pos[-1][0]:
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,frame,pos)
|
||||
else:
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,frame,pos)
|
||||
else:
|
||||
points_to_deform[frame] = pos
|
||||
if deform:
|
||||
|
||||
#update k_pos with offset from reelincurve
|
||||
for i in k_pos:
|
||||
reel_in_x = points_to_deform[i[0]][0]
|
||||
reel_in_y = points_to_deform[i[0]][1]
|
||||
k_pos_x = i[1][0]
|
||||
k_pos_y = i[1][1]
|
||||
offset_x = k_pos_x - reel_in_x
|
||||
offset_y = k_pos_y - reel_in_y
|
||||
i[1] = [offset_x,offset_y]
|
||||
|
||||
#extend keyframes to reelin range
|
||||
k_pos_extended = []
|
||||
if k_pos[0][0] != firstframe and not inside_only:
|
||||
k_pos_extended.append([firstframe,k_pos[0][1]])
|
||||
for i in k_pos:
|
||||
k_pos_extended.append(i)
|
||||
if k_pos[-1][0] != lastframe and not inside_only:
|
||||
k_pos_extended.append([lastframe,k_pos[-1][1]])
|
||||
|
||||
|
||||
for i in range(len(k_pos_extended) - 1):
|
||||
f0 = k_pos_extended[i][0]
|
||||
f1 = k_pos_extended[i+1][0]
|
||||
xo0 = k_pos_extended[i][1][0]
|
||||
yo0 = k_pos_extended[i][1][1]
|
||||
xo1 = k_pos_extended[i+1][1][0]
|
||||
yo1 = k_pos_extended[i+1][1][1]
|
||||
# linear deform step
|
||||
for f in range(f0, f1):
|
||||
xoI = (xo0 + ((f - f0) * ((xo1 - xo0) / (f1 - f0))))
|
||||
yoI = (yo0 + ((f - f0) * ((yo1 - yo0) / (f1 - f0))))
|
||||
reelin_curve_x = points_to_deform[f][0]
|
||||
reelin_curve_y = points_to_deform[f][1]
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,f,[reelin_curve_x + xoI, reelin_curve_y + yoI ] )
|
||||
#lastkeyframe
|
||||
reelin_curve_x = points_to_deform[f1][0]
|
||||
reelin_curve_y = points_to_deform[f1][1]
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,f1,[reelin_curve_x + xo1, reelin_curve_y + yo1 ] )
|
||||
|
||||
operations (del_non_keyframes = True, triangulate = True)
|
||||
@@ -0,0 +1,105 @@
|
||||
#
|
||||
#
|
||||
# 3DE4.script.name: Del Non Keys,Triangulate,Reel Deform Inside Dist
|
||||
#
|
||||
# 3DE4.script.version: v1.0
|
||||
#
|
||||
# 3DE4.script.comment: Delete Non Keyframes,Triangulate and Reel in Inside the keyframes range with distortion
|
||||
# 3DE4.script.comment: and deform the track on previous keyframes. Recalculate from scratch needed after this command.
|
||||
#
|
||||
# 3DE4.script.gui: Manual Tracking Controls::Reconstruction
|
||||
# 3DE4.script.gui.button: Manual Tracking Controls::Del Non Keyframes - Trian - Reel in - Def Inside Dist, align-bottom-left, 250, 20
|
||||
|
||||
# 3DE4.script.hide: false
|
||||
# 3DE4.script.startup: false
|
||||
#
|
||||
# Giovanni Di Grezia 2016
|
||||
# http://www.xgiovio.com
|
||||
#
|
||||
|
||||
|
||||
|
||||
def operations (del_non_keyframes = False, triangulate = False, reelin = False, distortion = False , deform = False, inside_only = False):
|
||||
|
||||
|
||||
cam = tde4.getCurrentCamera()
|
||||
current_point_group = tde4.getCurrentPGroup()
|
||||
selected_points = tde4.getPointList (current_point_group,1)
|
||||
playback = tde4.getCameraPlaybackRange(cam)
|
||||
firstframe = playback[0]
|
||||
lastframe = playback[1]
|
||||
|
||||
if del_non_keyframes :
|
||||
for point in selected_points :
|
||||
k_pos = []
|
||||
for frame in range (firstframe, lastframe + 1):
|
||||
point_status = tde4.getPointStatus2D(current_point_group,point,cam,frame)
|
||||
if point_status == "POINT_KEYFRAME" or point_status == "POINT_KEYFRAME_END":
|
||||
pos = tde4.getPointPosition2D(current_point_group,point,cam,frame)
|
||||
k_pos.append([frame,[ pos[0], pos[1] ] ])
|
||||
tde4.deletePointCurve2D (current_point_group,point,cam)
|
||||
for i in k_pos :
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,i[0],i[1])
|
||||
if triangulate :
|
||||
if len(k_pos) >= 2:
|
||||
pos3d = tde4.calcPointPosition3D(current_point_group,point,cam)
|
||||
tde4.setPointCalcPosition3D(current_point_group,point,pos3d)
|
||||
tde4.setPointCalculated3D(current_point_group,point,1)
|
||||
tde4.setPointCalculated3DStatus(current_point_group,point,"TRIANGULATED")
|
||||
if reelin :
|
||||
points_to_deform = {}
|
||||
for frame in range (firstframe, lastframe + 1):
|
||||
if distortion:
|
||||
pos = tde4.calcPointBackProjection2D(current_point_group,point,cam,frame,1)
|
||||
else:
|
||||
pos = tde4.calcPointBackProjection2D(current_point_group,point,cam,frame,0)
|
||||
if not deform:
|
||||
if inside_only :
|
||||
if frame >= k_pos[0][0] and frame <= k_pos[-1][0]:
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,frame,pos)
|
||||
else:
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,frame,pos)
|
||||
else:
|
||||
points_to_deform[frame] = pos
|
||||
if deform:
|
||||
|
||||
#update k_pos with offset from reelincurve
|
||||
for i in k_pos:
|
||||
reel_in_x = points_to_deform[i[0]][0]
|
||||
reel_in_y = points_to_deform[i[0]][1]
|
||||
k_pos_x = i[1][0]
|
||||
k_pos_y = i[1][1]
|
||||
offset_x = k_pos_x - reel_in_x
|
||||
offset_y = k_pos_y - reel_in_y
|
||||
i[1] = [offset_x,offset_y]
|
||||
|
||||
#extend keyframes to reelin range
|
||||
k_pos_extended = []
|
||||
if k_pos[0][0] != firstframe and not inside_only:
|
||||
k_pos_extended.append([firstframe,k_pos[0][1]])
|
||||
for i in k_pos:
|
||||
k_pos_extended.append(i)
|
||||
if k_pos[-1][0] != lastframe and not inside_only:
|
||||
k_pos_extended.append([lastframe,k_pos[-1][1]])
|
||||
|
||||
|
||||
for i in range(len(k_pos_extended) - 1):
|
||||
f0 = k_pos_extended[i][0]
|
||||
f1 = k_pos_extended[i+1][0]
|
||||
xo0 = k_pos_extended[i][1][0]
|
||||
yo0 = k_pos_extended[i][1][1]
|
||||
xo1 = k_pos_extended[i+1][1][0]
|
||||
yo1 = k_pos_extended[i+1][1][1]
|
||||
# linear deform step
|
||||
for f in range(f0, f1):
|
||||
xoI = (xo0 + ((f - f0) * ((xo1 - xo0) / (f1 - f0))))
|
||||
yoI = (yo0 + ((f - f0) * ((yo1 - yo0) / (f1 - f0))))
|
||||
reelin_curve_x = points_to_deform[f][0]
|
||||
reelin_curve_y = points_to_deform[f][1]
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,f,[reelin_curve_x + xoI, reelin_curve_y + yoI ] )
|
||||
#lastkeyframe
|
||||
reelin_curve_x = points_to_deform[f1][0]
|
||||
reelin_curve_y = points_to_deform[f1][1]
|
||||
tde4.setPointPosition2D(current_point_group,point,cam,f1,[reelin_curve_x + xo1, reelin_curve_y + yo1 ] )
|
||||
|
||||
operations (del_non_keyframes = True, triangulate = True, reelin = True, deform = True, inside_only = True, distortion = True)
|
||||
Reference in New Issue
Block a user