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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
FEATURE REQUESTS
----------------
SHORT-TERM MUST DO
==================
1. All-the-way-through working UI to go from Python .CAD to
rendered 3D images. (DONE!)
2. All-the-way-through UI to do the same for 2D geometry. (web PHP?)
3. Toolpath generation for 2-D tools.
(apparently the grassfire toolpath algorithim has a fatal flaw?)
(it works in most practical cases, but we should fix it later. -- David)
4. Output to laser cutter, waterjet, etc. ported from cad.py
5. Clear documentation of all build dependencies --- procedure
to build from scratch.
6. Get web interface (amy PHP) into version control. (DONE!)
In web interface, keep previous settings in one session by
fixing postdata thing.
Ability to list files and select one from list to edit by clicking
Think about scheme for curated vs. non-curated libraries (DONE)
Creating + documenting library functions (k_french)
2D version of render
Rename things:
0 Fastest, Worst (Minimal)
1 (Smooth Surfaces)
2 Slowest, Best (Sharp Edges)
resolution smller is slower, Smallest Feature Size
bb dim
javaviewer auto reload (DONE)
kill java splash screen (amys)
fix bumps onto Level 2 objects
ability to click points in javaviewer and get their location / vertex #
and surface normal vector
wireframe mode
box next to render for which part you want to render (DONE!)
textures/colors? via viewer KAF -> (DONE)
*******
have viewer show multiple STL, each with center coords, (rotation?)
and color/texture. (DONE)
ability to specify multiple things in python
mutltiple objects to render
multiple output
// model description
// make assembly from models
part1 = x^2 + y^2 < 5
part2 = cylinder
use part1
use part2
accomodate model metadata such as
part1.origin = (0,1,0)
part1.rendercolor = red...
allows for multiple parts (not all & as one string)
on stdin, math_string_to_stl could take:
part1.function = foo;
part1.color = black;
part1.location[0] = (x,y,z)
part1.location[1] = (x2,y2,z2)
// fabrication
epilog_file(part1)
epilog_file(part2)
problem is presenting a clean, easy-to-start but powerful,
efficient assembly mode
****
exexfile / use alias
easy-to-identify button leading to nice, clear readable in
20 seconds getting started page (DONE)
trap for empty and display welcome screen
LONGER-TERM
===========
1. Fix problems with single-triangle inclusion errors in rendered
object. Is a SAT solver needed to make sure all verticies are
classified to a point? Or is there a simpler logic bug or
floating point roundoff error that results in points getting
misclasified?
1. Color rendering of objects with multivalued math string?
2. Hybrid program combining clicking to more anchor points with writing
code to describe objects that allows high-speed circuit board routing
and artistic playing but also allows arbitrary shape generation through
code and easy automation of tasks through code, and documents the
whole object in human-readable text. (Forrest has a good plan.)
3. Add a parametric variable, t, ranging from [0,1], and a syntax where
the object gets rendered everywhere the expression is true for any
value of t. This would allow spirals, extrusion of 2-D geometries
along 3-D linear paths, etc. which are not currently possible with
the implicit function format.
5. Improved expression support: Support for powers other than 2,
exp, and ln functions. (and automatic differention of these
functions.) Because ln and power are undefined on some ranges,
this might be slightly tricky, but we can probably do something
sensible. (right now we deal with the same problem that / is
undefined if the denominator is 0 with no problems --- one approach
would be to explicitly introduce branch cuts into expressions
where the function might be undefined by modifying the math string
with booleans; e.g. ln(x^2) > 4 --> (x^2 > 0) & ( ln(x^2) > 4 )
6. Expression pruner could be improved. One simple change is to add
pruning of multiplication by 0 and 1, addition/subtraction of 0.
This might help a lot to improve speed of normal calculation in
derivatives. Beyond this, all kinds of fancy compiler-type
optimizations could go in --- but need to be careful they
speed up rather than slow things down.
7. Javaviewer could use a download progress bar. (DONE!)
8. Could explicitly identify edges and corners (using clause table)
and allow wireframe object display.
9. Could speed up by checking for a large angle between triangles before
bothering to check if they span a face.
10. Ability for use to abort rendering in web interface
11. Ability to upload files
12. deal with BW constraints
13. server permissions / security / trap for rm * in python code
14. kokompe.org goes to phmgrid1, password protection?
kokompe.cba ..
15. Scratch integration --- because scratch is a web-based coding
environment.
16. write code in your favorite language (e.g. matlab, C, etc.)
buttons/ hash-bang to select which language you are using in editor
run gcc / octave / f77 / java
BUGS
----
1. Little inclusions on edges --- unknown cause -- find+fix.
2. trimesh: Rendering on a non-cubic region causes a bizzare directional
incorrect-noral artifact. This is clearly visbile rendering
the unit sphere on -.5 .5 -1 1 -1 1. A short term workaround
is to always use cubic regions: this isn't much of a performance hit,
due to the octree. Longer term, we should find out why---this may
point the way to other bugs.
(WORKED AROUND: PHP ONLY ALLOWS CUBIC REGIONS.)
3. javaviewer: Rendering an object on a domain that is all full or
all empty results in an empty STL file (84 bytes long, 80-byte header
plus 4-byte zero facet count) which causes javaviewer to display its
deafult image of the teapot. (FIXED!)
4. javaviewer: Should properly handle I/O exceptions by printing a
helpful error message, should not display teapot on bad URL's. (FIXED!)
5. Inccreasing text size in Mozilla on ara's machine causes line
numbers to get messed up --- line numbers box needs to be size
of browser
|