This repository has been archived by the owner on May 21, 2019. It is now read-only.
/
main.py
executable file
·103 lines (79 loc) · 1.88 KB
/
main.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import print_function
def main(args):
from differentialCloud import DifferentialCloud
from modules.helpers import print_stats
from modules.helpers import make_info_str
from modules.utils import get_initial_cloud
from dddUtils.ioOBJ import export as export_obj
from numpy.random import random
from numpy import array, zeros
reject = args.reject*args.stp
attract = args.attract*args.stp
stat = args.stat
export = args.export
out = args.out
vnum_max = args.vnum
start_num = args.startNum
start_rad = args.startRad
nearl = args.nearl
midl = args.midl
farl = args.farl
np_verts = zeros((args.nmax, 3), 'float')
DC = DifferentialCloud(
nmax = args.nmax,
zonewidth = args.farl,
nearl = nearl,
midl = midl,
farl = farl,
procs = args.procs
)
xyz, mode = get_initial_cloud(start_num, start_rad)
DC.init_cloud(xyz, mode)
DC.init_rules(
array(
[
[1.0,1.0],
[1.0,-1.0]
],
'double'
),
array(
[
[nearl,farl],
[nearl,farl]
],
'double'
)
)
for i in xrange(args.itt):
try:
rnd = (random(size=DC.get_vnum())<0.001).nonzero()[0]
if len(rnd)>0:
DC.spawn(rnd)
DC.optimize_position(
reject,
attract,
nearl*0.1
)
if i%stat==0:
print_stats(i, DC, meta=None)
if i%export==0:
vnum = DC.np_get_vertices(np_verts)
export_obj(
obj_name = 'cloud',
fn = '{:s}_{:012d}.obj'.format(out, i),
verts = np_verts[:vnum,:],
tris = None,
meta = make_info_str(args)
)
if DC.get_vnum()>vnum_max:
return
except KeyboardInterrupt:
break
if __name__ == '__main__':
from modules.helpers import get_args
args = get_args()
print(args)
main(args)