1
TODO list and scratch pad for Structure Synth. /Mikael
4
- Show hour-glass when making long operations (before progress when rendering...)
5
- Better sphere implementation (remember transformation thing...)
8
- Remember file extension.
10
Template Rendering Dialog:
14
[Sunflow.template] [<]
16
(o) Render to file: [c:\testmig.es] [File...]
17
[x] add unique ID to filename
18
( ) Render to clipboard.
21
X: 640 Y: 400. [x] Lock Aspect
23
[x] Modify Template before applying:
24
(changes to template are not saved on disk)
27
[x] Modify export before saving
28
[x] Run the following commands after export:
29
C:\sunflow\sunflow.bat {File}
37
Make Debug moc'ing on release...
40
Debug.ShowProgress(...);
41
Debug.SetProgress(...); // TODO: Should throw exception if cancelled...
45
Builder.load(filename);
46
Builder.replace(before, after);
47
QString text = Builder.applyTemplate(...);
50
IO.save(text, filename);
52
IO.saveImage(filename); // For OpenGL output...
54
About box sizing on Mac.
55
Change 'mac.pro' -> 'StructureSynth.pro'
58
Template Render Dialog
59
----------------------
61
Default file path: [...............] [Dir...]
62
File name: [Output0001.es] [File...]
65
[ ] Run the following command after saving picture.
66
[C:\program files\Sunflow\Sunflow.bat {FILENAME}]
68
Edit script before saving:
77
On startup -> show 3D view nav info...
78
Help -> add weblinks...
81
-Check directory structure.
86
- tutorials: 'EisenScript Kata'
88
- JanJacobSV has some interesting 3D experiments with CFDG and Virtools. http://www.youtube.com/watch?v=KWgQ8XIPAio
90
- [Collada] Support? (http://www.khronos.org/collada/)
92
- VRML example (could be fun)
103
Structures are specified in EisenScript (named after the russian film director Sergei Eisenstein).
105
EisenScript is processed by the Eisenstein Engine by the following steps:
106
1) Preprocessor (strips comments imports '#include' statements).
107
2) Tokenizer (divides string input into symbols. The string input is split at any white space (except if it occurs inside quotes).)
108
3) Parser (standard recursive descent parser). The parser creates a 'ruleset' from the text input.
109
4) Name resolving. Rules contain symbolic references to other rules. These symbols must be resolved.
111
The EBNF notation for EisenScript looks like this:
113
program = { set | rule } ;
114
rule = 'RULE' , rule_name , [ weight ] , '{' , { set | action } , '}' ;
115
action = { transformationloop } [transformationlist] rule_ref ;
116
transformationloop = number , '*' , transformationlist ;
117
transformationlist = '{' , { transformation } , '}';
118
transformation = 'X' , number | // translations
121
'RX', number | // rotation about axis
124
'S', number | // resizing (all axis equal)
125
'S', number number number, // resizing for x,y,z individually
127
set = 'SET' , var_name , string ;
129
'rule_ref', 'var_name', and 'string' are text strings with a reasonable set of allowed characters.
130
Though not strictly a part of the syntax, a few rules are provided as predefined primitives in Structure Synth:
137
line - along x axis, centered in y,z plane.
138
point - centered in coordinate system.
139
cylinder - the symmetry axis will be the current x axis.
140
pbox - continues box (will be drawn smoothly as the coordinate system transforms).
141
pcylinder- polygonal cylinder (will be drawn smoothly as the coordinate system transforms).
142
tube - (With number of division)