mjbWorld - Source Code

I have zipped up all the source files into a single file for your language of choice. (you can also download the work in progress from CVS, but this is only necessary if you want to help develop the program, I would really appreciate new developers for the program)

So you only have to download one file as follows.

  1. Choose the version you want to use, depending on your language of choice, use the source code file named from the table below.
  2. Goto this page and click on your choice to upload it.
  3. You may also need some of the resources shown below.
  Language source code file


There are many free development environments availible,

For information about compiling using Eclipse.
For information about compiling using JBuilder.

.Net C# mjbworld_cs_opengl_source_525.zip
Linux Qt


note: this version is not yet stable

(Ed nickname 'slimb' has improved the C++ version although he warns that its only for serious hackers at this stage. Ed tells me that the simpler models now work in a stable way, He is now planning fix the editors and OpenGL rendering.)

For information about compiling using KDevelop see this page.


I would really appreciate and help to improve this program, such as bug reports, ideas for improvements, corrections etc. (or even better changes to the source code). Please enter your reports/comments here.

The .NET environment allows languages to be mixed, so I would like to put VB .NET versions here if anyone could help me to do the conversions.

Copyright (c) 1998-2005 Martin John Baker

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

For information about the GNU General Public License see http://www.gnu.org/

If you would like to contact me, my website is https://www.euclideanspace.com/

The following resouces may also be required to build and run the program


graphics files These are included in the runtime file - download the runtime file and unzip it to get the graphics files.
ICONs These are included in the runtime file - download the runtime file and unzip it to get the ICON files.
BASH scripting package Only needed if you un-comment the BASH version of run script. A version of this is included in the BASH version of runtime.
Jpython scripting package Only needed if you un-comment the JPython version of run script. A version of this is included in the JPython version of runtime.


If you are using JBuilder here is some information to help you


Each node is a bean, eventually I can see the program having the following types of bean:

mjbWorld package

Contains environment and input/output

mjbModel package

The following classes form a parallel structure to the Scene Graph and cross linked to it. See Programmers Guide.

The either store the persistent information or have access to it, therefore they can be serialised.

I have separated this package out in preparation for conversion to beans, but that's not yet complete so they are not valid beans.

Initially the beans could be used to build a scene graph at build time (not sure what benefit this would give as the program builds the model at runtime) but it would be an interesting extra capability to be able to build a scene graph from within a programming environment like JBuilder. And it does give us a standard set of interfaces to add capability at runtime.

nodeBean.java nodeBeanInfo.java base functionality, other nodes subclass these.
controlPointBean.java controlPointBeanInfo.java  
morphBean.java morphBeanInfo.java  
errorBean.java errorBeanInfo.java  
switchBean.java switchBeanInfo.java  
linkBean.java linkBeanInfo.java  
sphereBean.java sphereBeanInfo.java  
ambientLightBean.java ambientLightBeanInfo.java  
clipBean.java clipBeanInfo.java  
globalBean.java globalBeanInfo.java  
sceneBean.java sceneBeanInfo.java  
transform3dBean.java transform3dBeanInfo.java  
geometryBean.java geometryBeanInfo.java  
cylinderBean.java cylinderBeanInfo.java  
boxBean.java boxBeanInfo.java  
coneBean.java coneBeanInfo.java  
textBean.java textBeanInfo.java  
ifsBean.java ifsBeanInfo.java  
blobBean.java blobBeanInfo.java customised version of ifs for non-rigid shapes
branchGroupBean.java branchGroupBeanInfo.java  
lightBean.java lightBeanInfo.java  
localeBean.java localeBeanInfo.java  
rootBean.java rootBeanInfo.java  
viewPlatformBean.java viewPlatformBeanInfo.java  
rasterBean.java rasterBeanInfo.java  
shape3dBean.java shape3dBeanInfo.java  
behaviorBean.java behaviorBeanInfo.java  
colorBean.java colorBeanInfo.java  
coordinateBean.java coordinateBeanInfo.java  
textureCoordinateBean.java textureCoordinateBeanInfo.java  
appearanceBean.java appearanceBeanInfo.java  
renderingAttributesBean.java renderingAttributesBeanInfo.java  
normalBean.java normalBeanInfo.java  
texCoordGenerationBean.java texCoordGenerationBeanInfo.java  
transformGroupBean.java transformGroupBeanInfo.java  
coloringAttributesBean.java coloringAttributesBeanInfo.java  
textureBean.java textureBeanInfo.java  
textureAttributesBean.java textureAttributesBeanInfo.java  
pointAttributesBean.java pointAttributesBeanInfo.java  
lineAttributesBean.java lineAttributesBeanInfo.java  
directionalLightBean.java directionalLightBeanInfo.java  
polygonAttributesBean.java polygonAttributesBeanInfo.java  
transparencyAttributesBean.java transparencyAttributesBeanInfo.java  
grappleBean.java grappleBeanInfo.java  
meshBean.java meshBeanInfo.java  
orderedGroupBean.java orderedGroupBeanInfo.java  
sharedGroupBean.java sharedGroupBeanInfo.java  
backgroundBean.java backgroundBeanInfo.java  
fogBean.java fogBeanInfo.java  
soundBean.java soundBeanInfo.java  
soundscapeBean.java soundscapeBeanInfo.java  
spotLightBean.java spotLightBeanInfo.java  
pointLightBean.java pointLightBeanInfo.java  
movementBean.java movementBeanInfo.java  
groupBean.java groupBeanInfo.java  
protoBean.java protoBeanInfo.java  
routeBean.java routeBeanInfo.java  
elivationGridBean.java elivationGridBeanInfo.java  
extrusionBean.java extrusionBeanInfo.java  
decalGroupBean.java decalGroupBeanInfo.java  
materialBean.java materialBeanInfo.java  

The following classes are parameters used in the above classes.

The following classes are editors for the parameters

The following classes are extensions of scene graph objects

If you would like to help with the program please contribute to the discussion Forum for the program.

metadata block
see also:


Correspondence about this page

Book Shop - Further reading.

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.


Commercial Software Shop

Where I can, I have put links to Amazon for commercial software, not directly related to this site, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.


This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2018 Martin John Baker - All rights reserved - privacy policy.