summaryrefslogtreecommitdiff
path: root/engines/kokompe/kokompe/TODO
blob: c5af786e3ed37cf52c8b1e1de6f992c3ac6f7379 (plain)
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