Created
April 2, 2013 01:35
-
-
Save chadcooper/5289280 to your computer and use it in GitHub Desktop.
Places a cartesian array of cylinders on a planetary sphere in Vue. End result here: http://i.imgur.com/cwi6M5O.jpg
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Create the Cartesian array with Python: | |
>>> import itertools | |
>>> d = {} | |
>>> count = 1 | |
>>> for i in itertools.product([0,100,200,300,400,500,600,700,800,900,1000],[0,- | |
100,-200,-300,-400,-500,-600,-700,-800,-900,-1000]): | |
... d[count] = list(i) | |
... count += 1 | |
... | |
>>> d | |
{1: [0, 0], 2: [0, -100], 3: [0, -200], 4: [0, -300], 5: [0, -400], 6: [0, -500] | |
, 7: [0, -600], 8: [0, -700], 9: [0, -800], 10: [0, -900], 11: [0, -1000], 12: [ | |
100, 0], 13: [100, -100], 14: [100, -200], 15: [100, -300], 16: [100, -400], 17: | |
[100, -500], 18: [100, -600], 19: [100, -700], 20: [100, -800], 21: [100, -900] | |
, 22: [100, -1000], 23: [200, 0], 24: [200, -100], 25: [200, -200], 26: [200, -3 | |
00], 27: [200, -400], 28: [200, -500], 29: [200, -600], 30: [200, -700], 31: [20 | |
0, -800], 32: [200, -900], 33: [200, -1000], 34: [300, 0], 35: [300, -100], 36: | |
[300, -200], 37: [300, -300], 38: [300, -400], 39: [300, -500], 40: [300, -600], | |
41: [300, -700], 42: [300, -800], 43: [300, -900], 44: [300, -1000], 45: [400, | |
0], 46: [400, -100], 47: [400, -200], 48: [400, -300], 49: [400, -400], 50: [400 | |
, -500], 51: [400, -600], 52: [400, -700], 53: [400, -800], 54: [400, -900], 55: | |
[400, -1000], 56: [500, 0], 57: [500, -100], 58: [500, -200], 59: [500, -300], | |
60: [500, -400], 61: [500, -500], 62: [500, -600], 63: [500, -700], 64: [500, -8 | |
00], 65: [500, -900], 66: [500, -1000], 67: [600, 0], 68: [600, -100], 69: [600, | |
-200], 70: [600, -300], 71: [600, -400], 72: [600, -500], 73: [600, -600], 74: | |
[600, -700], 75: [600, -800], 76: [600, -900], 77: [600, -1000], 78: [700, 0], 7 | |
9: [700, -100], 80: [700, -200], 81: [700, -300], 82: [700, -400], 83: [700, -50 | |
0], 84: [700, -600], 85: [700, -700], 86: [700, -800], 87: [700, -900], 88: [700 | |
, -1000], 89: [800, 0], 90: [800, -100], 91: [800, -200], 92: [800, -300], 93: [ | |
800, -400], 94: [800, -500], 95: [800, -600], 96: [800, -700], 97: [800, -800], | |
98: [800, -900], 99: [800, -1000], 100: [900, 0], 101: [900, -100], 102: [900, - | |
200], 103: [900, -300], 104: [900, -400], 105: [900, -500], 106: [900, -600], 10 | |
7: [900, -700], 108: [900, -800], 109: [900, -900], 110: [900, -1000], 111: [100 | |
0, 0], 112: [1000, -100], 113: [1000, -200], 114: [1000, -300], 115: [1000, -400 | |
], 116: [1000, -500], 117: [1000, -600], 118: [1000, -700], 119: [1000, -800], 1 | |
20: [1000, -900], 121: [1000, -1000]} | |
>>> | |
# now add z values to the lists: | |
>>> d2=d | |
>>> for k, v in d2.iteritems(): | |
... v.append(500) | |
... | |
>>> d2 | |
{1: [0, 0, 500], 2: [0, -100, 500], 3: [0, -200, 500], 4: [0, -300, 500], 5: [0, | |
-400, 500], 6: [0, -500, 500], 7: [0, -600, 500], 8: [0, -700, 500], 9: [0, -80 | |
0, 500], 10: [0, -900, 500], 11: [0, -1000, 500], 12: [100, 0, 500], 13: [100, - | |
100, 500], 14: [100, -200, 500], 15: [100, -300, 500], 16: [100, -400, 500], 17: | |
[100, -500, 500], 18: [100, -600, 500], 19: [100, -700, 500], 20: [100, -800, 5 | |
00], 21: [100, -900, 500], 22: [100, -1000, 500], 23: [200, 0, 500], 24: [200, - | |
100, 500], 25: [200, -200, 500], 26: [200, -300, 500], 27: [200, -400, 500], 28: | |
[200, -500, 500], 29: [200, -600, 500], 30: [200, -700, 500], 31: [200, -800, 5 | |
00], 32: [200, -900, 500], 33: [200, -1000, 500], 34: [300, 0, 500], 35: [300, - | |
100, 500], 36: [300, -200, 500], 37: [300, -300, 500], 38: [300, -400, 500], 39: | |
[300, -500, 500], 40: [300, -600, 500], 41: [300, -700, 500], 42: [300, -800, 5 | |
00], 43: [300, -900, 500], 44: [300, -1000, 500], 45: [400, 0, 500], 46: [400, - | |
100, 500], 47: [400, -200, 500], 48: [400, -300, 500], 49: [400, -400, 500], 50: | |
[400, -500, 500], 51: [400, -600, 500], 52: [400, -700, 500], 53: [400, -800, 5 | |
00], 54: [400, -900, 500], 55: [400, -1000, 500], 56: [500, 0, 500], 57: [500, - | |
100, 500], 58: [500, -200, 500], 59: [500, -300, 500], 60: [500, -400, 500], 61: | |
[500, -500, 500], 62: [500, -600, 500], 63: [500, -700, 500], 64: [500, -800, 5 | |
00], 65: [500, -900, 500], 66: [500, -1000, 500], 67: [600, 0, 500], 68: [600, - | |
100, 500], 69: [600, -200, 500], 70: [600, -300, 500], 71: [600, -400, 500], 72: | |
[600, -500, 500], 73: [600, -600, 500], 74: [600, -700, 500], 75: [600, -800, 5 | |
00], 76: [600, -900, 500], 77: [600, -1000, 500], 78: [700, 0, 500], 79: [700, - | |
100, 500], 80: [700, -200, 500], 81: [700, -300, 500], 82: [700, -400, 500], 83: | |
[700, -500, 500], 84: [700, -600, 500], 85: [700, -700, 500], 86: [700, -800, 5 | |
00], 87: [700, -900, 500], 88: [700, -1000, 500], 89: [800, 0, 500], 90: [800, - | |
100, 500], 91: [800, -200, 500], 92: [800, -300, 500], 93: [800, -400, 500], 94: | |
[800, -500, 500], 95: [800, -600, 500], 96: [800, -700, 500], 97: [800, -800, 5 | |
00], 98: [800, -900, 500], 99: [800, -1000, 500], 100: [900, 0, 500], 101: [900, | |
-100, 500], 102: [900, -200, 500], 103: [900, -300, 500], 104: [900, -400, 500] | |
, 105: [900, -500, 500], 106: [900, -600, 500], 107: [900, -700, 500], 108: [900 | |
, -800, 500], 109: [900, -900, 500], 110: [900, -1000, 500], 111: [1000, 0, 500] | |
, 112: [1000, -100, 500], 113: [1000, -200, 500], 114: [1000, -300, 500], 115: [ | |
1000, -400, 500], 116: [1000, -500, 500], 117: [1000, -600, 500], 118: [1000, -7 | |
00, 500], 119: [1000, -800, 500], 120: [1000, -900, 500], 121: [1000, -1000, 500 | |
]} | |
>>> | |
# Now print it out to copy into script below: | |
>>> for k, v in d2.iteritems(): | |
... print k,":", v,"," | |
... | |
1 : [0, 0, 500] , | |
2 : [0, -100, 500] , | |
3 : [0, -200, 500] , | |
4 : [0, -300, 500] , | |
5 : [0, -400, 500] , | |
6 : [0, -500, 500] , | |
7 : [0, -600, 500] , | |
8 : [0, -700, 500] , | |
9 : [0, -800, 500] , | |
10 : [0, -900, 500] , | |
11 : [0, -1000, 500] , | |
12 : [100, 0, 500] , | |
13 : [100, -100, 500] , | |
14 : [100, -200, 500] , | |
15 : [100, -300, 500] , | |
16 : [100, -400, 500] , | |
17 : [100, -500, 500] , | |
18 : [100, -600, 500] , | |
19 : [100, -700, 500] , | |
20 : [100, -800, 500] , | |
21 : [100, -900, 500] , | |
22 : [100, -1000, 500] , | |
23 : [200, 0, 500] , | |
24 : [200, -100, 500] , | |
25 : [200, -200, 500] , | |
26 : [200, -300, 500] , | |
27 : [200, -400, 500] , | |
28 : [200, -500, 500] , | |
29 : [200, -600, 500] , | |
30 : [200, -700, 500] , | |
31 : [200, -800, 500] , | |
32 : [200, -900, 500] , | |
33 : [200, -1000, 500] , | |
34 : [300, 0, 500] , | |
35 : [300, -100, 500] , | |
36 : [300, -200, 500] , | |
37 : [300, -300, 500] , | |
38 : [300, -400, 500] , | |
39 : [300, -500, 500] , | |
40 : [300, -600, 500] , | |
41 : [300, -700, 500] , | |
42 : [300, -800, 500] , | |
43 : [300, -900, 500] , | |
44 : [300, -1000, 500] , | |
45 : [400, 0, 500] , | |
46 : [400, -100, 500] , | |
47 : [400, -200, 500] , | |
48 : [400, -300, 500] , | |
49 : [400, -400, 500] , | |
50 : [400, -500, 500] , | |
51 : [400, -600, 500] , | |
52 : [400, -700, 500] , | |
53 : [400, -800, 500] , | |
54 : [400, -900, 500] , | |
55 : [400, -1000, 500] , | |
56 : [500, 0, 500] , | |
57 : [500, -100, 500] , | |
58 : [500, -200, 500] , | |
59 : [500, -300, 500] , | |
60 : [500, -400, 500] , | |
61 : [500, -500, 500] , | |
62 : [500, -600, 500] , | |
63 : [500, -700, 500] , | |
64 : [500, -800, 500] , | |
65 : [500, -900, 500] , | |
66 : [500, -1000, 500] , | |
67 : [600, 0, 500] , | |
68 : [600, -100, 500] , | |
69 : [600, -200, 500] , | |
70 : [600, -300, 500] , | |
71 : [600, -400, 500] , | |
72 : [600, -500, 500] , | |
73 : [600, -600, 500] , | |
74 : [600, -700, 500] , | |
75 : [600, -800, 500] , | |
76 : [600, -900, 500] , | |
77 : [600, -1000, 500] , | |
78 : [700, 0, 500] , | |
79 : [700, -100, 500] , | |
80 : [700, -200, 500] , | |
81 : [700, -300, 500] , | |
82 : [700, -400, 500] , | |
83 : [700, -500, 500] , | |
84 : [700, -600, 500] , | |
85 : [700, -700, 500] , | |
86 : [700, -800, 500] , | |
87 : [700, -900, 500] , | |
88 : [700, -1000, 500] , | |
89 : [800, 0, 500] , | |
90 : [800, -100, 500] , | |
91 : [800, -200, 500] , | |
92 : [800, -300, 500] , | |
93 : [800, -400, 500] , | |
94 : [800, -500, 500] , | |
95 : [800, -600, 500] , | |
96 : [800, -700, 500] , | |
97 : [800, -800, 500] , | |
98 : [800, -900, 500] , | |
99 : [800, -1000, 500] , | |
100 : [900, 0, 500] , | |
101 : [900, -100, 500] , | |
102 : [900, -200, 500] , | |
103 : [900, -300, 500] , | |
104 : [900, -400, 500] , | |
105 : [900, -500, 500] , | |
106 : [900, -600, 500] , | |
107 : [900, -700, 500] , | |
108 : [900, -800, 500] , | |
109 : [900, -900, 500] , | |
110 : [900, -1000, 500] , | |
111 : [1000, 0, 500] , | |
112 : [1000, -100, 500] , | |
113 : [1000, -200, 500] , | |
114 : [1000, -300, 500] , | |
115 : [1000, -400, 500] , | |
116 : [1000, -500, 500] , | |
117 : [1000, -600, 500] , | |
118 : [1000, -700, 500] , | |
119 : [1000, -800, 500] , | |
120 : [1000, -900, 500] , | |
121 : [1000, -1000, 500] , | |
>>> | |
# Using the following code on a 1km scene radius planetary terrain: | |
d_100s = {1 : [0, 0, 500] , | |
2 : [0, -100, 500] , | |
3 : [0, -200, 500] , | |
4 : [0, -300, 500] , | |
5 : [0, -400, 500] , | |
6 : [0, -500, 500] , | |
7 : [0, -600, 500] , | |
8 : [0, -700, 500] , | |
9 : [0, -800, 500] , | |
10 : [0, -900, 500] , | |
11 : [0, -1000, 500] , | |
12 : [100, 0, 500] , | |
13 : [100, -100, 500] , | |
14 : [100, -200, 500] , | |
15 : [100, -300, 500] , | |
16 : [100, -400, 500] , | |
17 : [100, -500, 500] , | |
18 : [100, -600, 500] , | |
19 : [100, -700, 500] , | |
20 : [100, -800, 500] , | |
21 : [100, -900, 500] , | |
22 : [100, -1000, 500] , | |
23 : [200, 0, 500] , | |
24 : [200, -100, 500] , | |
25 : [200, -200, 500] , | |
26 : [200, -300, 500] , | |
27 : [200, -400, 500] , | |
28 : [200, -500, 500] , | |
29 : [200, -600, 500] , | |
30 : [200, -700, 500] , | |
31 : [200, -800, 500] , | |
32 : [200, -900, 500] , | |
33 : [200, -1000, 500] , | |
34 : [300, 0, 500] , | |
35 : [300, -100, 500] , | |
36 : [300, -200, 500] , | |
37 : [300, -300, 500] , | |
38 : [300, -400, 500] , | |
39 : [300, -500, 500] , | |
40 : [300, -600, 500] , | |
41 : [300, -700, 500] , | |
42 : [300, -800, 500] , | |
43 : [300, -900, 500] , | |
44 : [300, -1000, 500] , | |
45 : [400, 0, 500] , | |
46 : [400, -100, 500] , | |
47 : [400, -200, 500] , | |
48 : [400, -300, 500] , | |
49 : [400, -400, 500] , | |
50 : [400, -500, 500] , | |
51 : [400, -600, 500] , | |
52 : [400, -700, 500] , | |
53 : [400, -800, 500] , | |
54 : [400, -900, 500] , | |
55 : [400, -1000, 500] , | |
56 : [500, 0, 500] , | |
57 : [500, -100, 500] , | |
58 : [500, -200, 500] , | |
59 : [500, -300, 500] , | |
60 : [500, -400, 500] , | |
61 : [500, -500, 500] , | |
62 : [500, -600, 500] , | |
63 : [500, -700, 500] , | |
64 : [500, -800, 500] , | |
65 : [500, -900, 500] , | |
66 : [500, -1000, 500] , | |
67 : [600, 0, 500] , | |
68 : [600, -100, 500] , | |
69 : [600, -200, 500] , | |
70 : [600, -300, 500] , | |
71 : [600, -400, 500] , | |
72 : [600, -500, 500] , | |
73 : [600, -600, 500] , | |
74 : [600, -700, 500] , | |
75 : [600, -800, 500] , | |
76 : [600, -900, 500] , | |
77 : [600, -1000, 500] , | |
78 : [700, 0, 500] , | |
79 : [700, -100, 500] , | |
80 : [700, -200, 500] , | |
81 : [700, -300, 500] , | |
82 : [700, -400, 500] , | |
83 : [700, -500, 500] , | |
84 : [700, -600, 500] , | |
85 : [700, -700, 500] , | |
86 : [700, -800, 500] , | |
87 : [700, -900, 500] , | |
88 : [700, -1000, 500] , | |
89 : [800, 0, 500] , | |
90 : [800, -100, 500] , | |
91 : [800, -200, 500] , | |
92 : [800, -300, 500] , | |
93 : [800, -400, 500] , | |
94 : [800, -500, 500] , | |
95 : [800, -600, 500] , | |
96 : [800, -700, 500] , | |
97 : [800, -800, 500] , | |
98 : [800, -900, 500] , | |
99 : [800, -1000, 500] , | |
100 : [900, 0, 500] , | |
101 : [900, -100, 500] , | |
102 : [900, -200, 500] , | |
103 : [900, -300, 500] , | |
104 : [900, -400, 500] , | |
105 : [900, -500, 500] , | |
106 : [900, -600, 500] , | |
107 : [900, -700, 500] , | |
108 : [900, -800, 500] , | |
109 : [900, -900, 500] , | |
110 : [900, -1000, 500] , | |
111 : [1000, 0, 500] , | |
112 : [1000, -100, 500] , | |
113 : [1000, -200, 500] , | |
114 : [1000, -300, 500] , | |
115 : [1000, -400, 500] , | |
116 : [1000, -500, 500] , | |
117 : [1000, -600, 500] , | |
118 : [1000, -700, 500] , | |
119 : [1000, -800, 500] , | |
120 : [1000, -900, 500] , | |
121 : [1000, -1000, 500]} | |
def get_object_size(vue_object): | |
""" Takes a input Vue object, gets it's bounding box, then does the | |
math to get the XYZ size of the object. Returns a X,Y,Z tuple of | |
the object size. | |
""" | |
bounding_box = vue_object.GetBoundingBox() | |
bb_min = bounding_box.GetMin() | |
bb_max = bounding_box.GetMax() | |
# Build our tuple of object XYZ size | |
object_size = (bb_max[0] - bb_min[0], bb_max[1] - bb_min[1], | |
bb_max[2] - bb_min[2]) | |
return object_size | |
i = 1 | |
for k, v in d_100s.iteritems(): | |
AddCylinder() | |
cyl = GetSelectedObjectByIndex(0) | |
cyl.SetPosition((v[0]), (v[1]), v[2]/2) | |
Refresh() | |
# Get Z size of object | |
orig_z = get_object_size(cyl)[2] | |
print orig_z | |
cyl.ResizeAxis(10, 10, (v[2])/orig_z) | |
Refresh() | |
DeselectAll() | |
i += 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment