Repository navigation
Expand file tree
/
Copy pathsomething
More file actions
75 lines (57 loc) · 2.53 KB
/
Copy pathsomething
File metadata and controls
75 lines (57 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import bpy, os
import numpy as np
from ..Keyframe.Tools import *
def gp_Nudge(usr_inp, affect_non_selected, affect_obj_keyframes, affect_all_objects):
control = usr_inp
Pencils = [pencil for pencils in bpy.data.grease_pencils if bpy.context.active_object.data.as_pointer() == pencil.as_pointer()]
gp_Nudge_map = {}
selected_keyframes = []
layers_with_selectedKf = []
objects_with_selectedKf = []
#n Loop through GP objects
for pencil in Pencils:
name = pencil.name
layers = pencil.layers
gp_Nudge_map[name] = []
#n Loop through GP object's layers
for layer in layers:
layer_name = layer.info
keyframes = layer.frames
#n Loop through GP object's keyframes for every layer
# populate GP map
for keyframe in keyframes:
keyf_frame = keyframe.frame_number
if keyframe.select:
gp_Nudge_map[name].append(keyf_frame)
selected_keyframes.append(keyf_frame)
#n Mark layers with selected keyframes
if len(selected_keyframes) > 0:
layers_with_selectedKf.append(layer_name)
selected_keyframes.clear()
#n Modify Map - populate object modding list if object has a layer with selected keyframes
if len(layers_with_selectedKf) > 0:
objects_with_selectedKf.append(name)
layers_with_selectedKf.clear()
#n Remove Pencils with 0 selected keyframes.
if len(objects_with_selectedKf) > 0:
non_active_pencils = [pencil.name for pencil in Pencils if pencil.name not in objects_with_selectedKf]
for pencil in non_active_pencils:
del gp_Nudge_map[pencil]
del objects_with_selectedKf
#n Loop and modify pencils's frames based on generated map
for pencil in Pencils:
if pencil.name in gp_Nudge_map.keys():
selected_kf_x = np.array(gp_Nudge_map[pencil.name])
new_kf_x = selected_kf_x + control
layers = pencil.layers
for layer in layers:
if not layer.lock:
keyframes = layer.frames
for keyframe in keyframes:
if keyframe.frame_number in selected_kf_x:
list_id = int(np.where(selected_kf_x == keyframe.frame_number)[0][0])
keyframe.frame_number = new_kf_x[list_id]
# layer.select = False
forceReDraw()
print("Hello Blender")
# gp_Nudge(5,1,1,1)