QBasicApps - collection of applications mostly written in MS QBasic for DOS environment
++
-
+
- download latest snapshot + + +
- This program is free software; you can redistribute it and/or modify +it under the terms of version 3 of the GNU Lesser General Public +License or later as published by the Free Software Foundation. + + +
- Program author:
+
-
+
- Svjatoslav Agejenko + +
- Homepage: http://svjatoslav.eu + +
- Email: mailto://svjatoslav@svjatoslav.eu + +
+
+ - other applications hosted at svjatoslav.eu + +
+Parses scene definition language and creates 3D world based on +it. Result will be in a wavefront obj file, witch can be then +visualized using external renderer. +
+ ++Basic concept of defining scene is: +
+-
+
- Simple and primitive objects are created on point and polygon level. + +
- More complex ones can be created my combinig already existing ones, +while applying various transformations on them. + +
+Objects with all its subobjects can be rotated, mirrored or resized +omong any axis. Generator has built in cache for data input and output +to minimize file access. +
+ +1 System requirements
+software | +preferred version | +
---|---|
DOS | +6.22 | +
QBasic | +4.5 | +
2 Installation
+-
+
- Unpack ZIP file in any folder. + +
- update include path inside bin/3dparse.bas + +
2.0.1 Directory layout
+-
+
- bin
+
-
+
- 3dparse.bas - 3D generator main executable + +
- city1.3d - city with square-like buildings + +
- city2.3d - city with hexangular buildings + +
- result.mtl - shared material library + +
- *.bat - quick launch scripts + +
+
+ - include - 3D objects used to compose the scene + +
3 Scene description language
++(read examples…) +
+ + ++here ++
+defines new segment +
+ ++p x y z ++
+defines new point +
+ ++f p1 p2 p3 p4 ++
+defines new polygon, p4 may be unused +
+ + ++warn <message> ++
+displays warning message, and wait for key +
+ ++end ++
+terminates parser +
+ ++mtl material ++
+selects material +
+ ++mtlrnd material ... ++
+selects random material from list +
+ ++obj object xz45 xy20 x+3 y*2 ++
+includes sub object, can be rotated moved or resized, across X Y Z. If +object name begin vith ~ then it will be loaded from current +directory. if object name ends with ~ then object will be parsed +directly from file, and not chached, to allow loading of greater than +500 lines files. +
+ + + + + ++rnd p^1^2^3 p^7^2^1 ++
+select random command to execute, ^ will be converted to spaces. +
+ ++# whatever text ++
+comment +
+ ++out file ++
+specify output file name, must be first command +
+ ++set variable contents ++
+set variable contents, variable must be number, contents can be +string. max variables is 100. first is 0. +
+ ++anycommand %1 anything ++
+inserts variable 1 contents info line +
+ ++cmp flag string1 string2 ++
+compares strings, and inserts TRUE to flag, if they are equal, else inserts FALSE. max 9 falgs, 0 first. Each subobject has its own flags. +
+ ++?flag anycommand ++
+executes command if flag is true. +
+ ++exapmle: ?3 obj car z*2 xy45 +
+ ++dum ++
+dummy function, does notheing +
+4 Usage
++Make sure you have QB binaries in your PATH. Execute +
++bin/city1.bat ++
+or +
++bin/city2.bat ++
+to generate example cities. After parsing is finished, appropriate +*.obj files will appear in the bin directory holding generated scene. +Visualize scene with your favourite renderer. +
+5 Examples
++Download Blender files: +
+file | +size | +
---|---|
rectangular city.blend | +3.6 MB | +
hexagonal city.blend | +21 MB | +
+They were produced by importing generated wavefront obj files into +Blender. +
+