-
Notifications
You must be signed in to change notification settings - Fork 2
/
draw_control_points.py
70 lines (53 loc) · 4.35 KB
/
draw_control_points.py
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
import bge
import mathutils as m
import math
def main():
sce = bge.logic.getCurrentScene()
cont = bge.logic.getCurrentController()
obj = cont.owner
name = obj.name + "_"
cont_keys = name + "cont_keys"
cam = sce.active_camera
if obj["key_count"] > 0:
points = bge.logic.globalDict[cont_keys]
j = 0
while j < len(points) and obj["draw"] == True:
if (j)%3 == 0:
vec = points[j]
mul = 0.005*(vec - cam.worldPosition).magnitude
col = [0,0.7,1]
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1, 1))), (vec + mul*m.Vector(( 1, 1, 1)) + mul*m.Vector(( 0, 0,-2))), col)
bge.render.drawLine( (vec + mul*m.Vector((-1, 1, 1))), (vec + mul*m.Vector((-1, 1, 1)) + mul*m.Vector(( 0, 0,-2))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1,-1, 1))), (vec + mul*m.Vector(( 1,-1, 1)) + mul*m.Vector(( 0, 0,-2))), col)
bge.render.drawLine( (vec + mul*m.Vector((-1,-1, 1))), (vec + mul*m.Vector((-1,-1, 1)) + mul*m.Vector(( 0, 0,-2))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1, 1))), (vec + mul*m.Vector(( 1, 1, 1)) + mul*m.Vector(( 0,-2, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1,-1))), (vec + mul*m.Vector(( 1, 1,-1)) + mul*m.Vector(( 0,-2, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector((-1, 1, 1))), (vec + mul*m.Vector((-1, 1, 1)) + mul*m.Vector(( 0,-2, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector((-1, 1,-1))), (vec + mul*m.Vector((-1, 1,-1)) + mul*m.Vector(( 0,-2, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1, 1))), (vec + mul*m.Vector(( 1, 1, 1)) + mul*m.Vector((-2, 0, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1,-1))), (vec + mul*m.Vector(( 1, 1,-1)) + mul*m.Vector((-2, 0, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1,-1, 1))), (vec + mul*m.Vector(( 1,-1, 1)) + mul*m.Vector((-2, 0, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1,-1,-1))), (vec + mul*m.Vector(( 1,-1,-1)) + mul*m.Vector((-2, 0, 0))), col)
else:
vec = points[j]
mul = 0.004*(vec - cam.worldPosition).magnitude
col = [1,1,0.6]
handle_color = [1,0.5,0]
if (j - 1)%3 == 0:
bge.render.drawLine( points[j], points[j - 1], handle_color)
if (j + 1)%3 == 0:
bge.render.drawLine( points[j], points[j + 1], handle_color)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1, 1))), (vec + mul*m.Vector(( 1, 1, 1)) + mul*m.Vector(( 0, 0,-2))), col)
bge.render.drawLine( (vec + mul*m.Vector((-1, 1, 1))), (vec + mul*m.Vector((-1, 1, 1)) + mul*m.Vector(( 0, 0,-2))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1,-1, 1))), (vec + mul*m.Vector(( 1,-1, 1)) + mul*m.Vector(( 0, 0,-2))), col)
bge.render.drawLine( (vec + mul*m.Vector((-1,-1, 1))), (vec + mul*m.Vector((-1,-1, 1)) + mul*m.Vector(( 0, 0,-2))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1, 1))), (vec + mul*m.Vector(( 1, 1, 1)) + mul*m.Vector(( 0,-2, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1,-1))), (vec + mul*m.Vector(( 1, 1,-1)) + mul*m.Vector(( 0,-2, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector((-1, 1, 1))), (vec + mul*m.Vector((-1, 1, 1)) + mul*m.Vector(( 0,-2, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector((-1, 1,-1))), (vec + mul*m.Vector((-1, 1,-1)) + mul*m.Vector(( 0,-2, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1, 1))), (vec + mul*m.Vector(( 1, 1, 1)) + mul*m.Vector((-2, 0, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1, 1,-1))), (vec + mul*m.Vector(( 1, 1,-1)) + mul*m.Vector((-2, 0, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1,-1, 1))), (vec + mul*m.Vector(( 1,-1, 1)) + mul*m.Vector((-2, 0, 0))), col)
bge.render.drawLine( (vec + mul*m.Vector(( 1,-1,-1))), (vec + mul*m.Vector(( 1,-1,-1)) + mul*m.Vector((-2, 0, 0))), col)
j += 1
main()