3D Synthezier

Other applications hosted on svjatoslav.eu

Program author:
Svjatoslav Agejenko
Homepage: http://svjatoslav.eu
E-mail: svjatoslav@svjatoslav.eu

Distributed under GNU GENERAL PUBLIC LICENSE Version 2.

	
This QBasic program was written by me in around 2003. It 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, flipped or resized omong any axis.
Generator has built in cache for data input and output to minimize file access.


Examples:


Attempt to make "Fifth Eelement" like city.



Attempt to make "Fifth Eelement" like city. Night.



Attempt to make "Fifth Eelement" like city. Night.



Hexangular city.



Hexangular city, closer.



Hexangular city, even closer.



I converted these 2 generated cities also to Blender format
so you can explore them interactively :)

Download:
	Square city (3.5 MB)
	Hexagonal city (20.3 MB)




	System requirements
	===================
	
DOS	(6.22 preferred)
QBasic 	(4.5 preferred)


      	Installation
      	============
      
* Unpack ZIP file in any folder.
* update include path inside  bin/3dparse.bas


	Running program
	===============

Make sure you have QB binaries in your PATH.
Execute  bin/city1.bat  or  bin/city2.bat to generate example citys.
After parsing is finished appropriate *.obj files will
appear in the  bin  directory holding generated scene.
Visualize scene with your favourite renderer.
(3D Studio MAX or Nugraf 3D rendering System will do)


	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
doc				manual
include				3D objects used to compose the scene
	

	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