-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnotes.txt
89 lines (65 loc) · 3.5 KB
/
notes.txt
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
TODO list and scratch pad for Structure Synth. /Mikael
- Update website
Structure Synth 1.5.0 ("Hinxton") Released
------------------------------------------
Structure Synth is a tool for generating 3D structures from recursive rules. The structures are often complex and surprising.
Structure Synth integrates with third-party renderers (such as Sunflow and POV-Ray) using a flexible template based export system.
Binaries for Windows (XP and Vista).
Mac binaries available soon.
Linux is source only.
Download instructions at:
http://structuresynth.sourceforge.net/download.php
New major features (since 1.0.0):
- Integrated raytracer
- JavaScript integration (for building animations).
- OBJ exporter (supporting all primitives and tagging)
Minor features:
- Added 'random[-2,3]' for preprocessor generated random numbers (uniform distributed).
- Added 'show coordinate system'.
- Added option to Template Export Dialog to Autosave Eisenscript. The Autosave includes the random seed and camera settings.
- Context menu with command help in editor window.
- Proper sorting of transparent OpenGL objects.
- Added a patch by François Beaune to support Appleseed.
- GUI Refactoring.
For more information see:
http://structuresynth.sourceforge.net/
- Website:
- add section links.
- tutorials: 'EisenScript Kata'
- JanJacobSV has some interesting 3D experiments with CFDG and Virtools. http://www.youtube.com/watch?v=KWgQ8XIPAio
EisenScript
-----------
Structures are specified in EisenScript (named after the russian film director Sergei Eisenstein).
EisenScript is processed by the Eisenstein Engine by the following steps:
1) Preprocessor (strips comments imports '#include' statements).
2) Tokenizer (divides string input into symbols. The string input is split at any white space (except if it occurs inside quotes).)
3) Parser (standard recursive descent parser). The parser creates a 'ruleset' from the text input.
4) Name resolving. Rules contain symbolic references to other rules. These symbols must be resolved.
The EBNF notation for EisenScript looks like this:
program = { set | rule } ;
rule = 'RULE' , rule_name , [ weight ] , '{' , { set | action } , '}' ;
action = { transformationloop } [transformationlist] rule_ref ;
transformationloop = number , '*' , transformationlist ;
transformationlist = '{' , { transformation } , '}';
transformation = 'X' , number | // translations
'Y' , number |
'Z' , number |
'RX', number | // rotation about axis
'RY', number |
'RZ', number |
'S', number | // resizing (all axis equal)
'S', number number number, // resizing for x,y,z individually
set = 'SET' , var_name , string ;
'rule_ref', 'var_name', and 'string' are text strings with a reasonable set of allowed characters.
Though not strictly a part of the syntax, a few rules are provided as predefined primitives in Structure Synth:
Primitives:
-----------
box - solid box
grid - wireframe box
sphere -
line - along x axis, centered in y,z plane.
point - centered in coordinate system.
cylinder - the symmetry axis will be the current x axis.
pbox - continues box (will be drawn smoothly as the coordinate system transforms).
pcylinder- polygonal cylinder (will be drawn smoothly as the coordinate system transforms).
tube - (With number of division)