I have split the classes which make up the program into two packages (in java terminology) or address spaces (in C# terminology), these are:
- mjbModel - which holds the model of the 3D world as a scenegraph.
- mjbWorld - which is a user interface (UI) to allow users to graphically build and modify the model.
The reason for this split is to allow other programmers to use the model in their own program, so that they can write their own user interface without having to write an entire 3D modelling program.
What I would like to do is every time I release a new version of the complete program would be to also release a separate mjbModel JAR file in parallel. Unfortunately I seem to be overstreaching myself and I have not managed to do this since version 5.15 (which is the last version to support Java3D, newer versions use JOGL). So if you want to do this you will need to download the source files and compile only the mjbModel files (which are in a separate directory) together with the JOGL stuff and other resources into a JAR. I think it would also be a good idea to run JavaDoc on this so that you can work out which methods to call.
The Java version of mjbModel uses beans standards with the intention of allowing your Java IDE to allow you to select the classes you need to use at build time.
The following is a quick guide that I wrote for using the Java3D version, this is out of date but it may still help you.
Create your own application or applet, then to add a 3d window using the mjbModel bean do the following:
1) import the model
Insert the following line at the top of your file:import mjbModel.*;
2) create the model
public mjbModel model = new mjbModel();
3) initialise and add to panel
model.initialise(this); // 'this' must be instance of mjbModel.modelEvent interface
panel1.add(model.getCanvas3d(),"panel_3d");
4) implement modelEvent interface
put interface mjbModel.modelEvent in your class definition and implement the following classes:
public void statusMessage(String s){
statusBar.setText(s);
}
public String getFileName(){
return currFileName;
}
public nodeBean getSelected() {
return selected;
}
public void setSelected(nodeBean s) {
selected = s;
}
5) to load a file
filter_base f=new filter_base();
f.StartReader(this);
model.readVRML2(f);
f.EndReader();
6) to save a file
filter_base f=new filter_base();
f.StartWriter(this);
imodel.writeVRML2(f);
f.EndWriter();
7 )Starting the renderer and setting the view
model.setView(1,0,(TransformGroup)tg); // front view
8) Changing the tool
model.setTool(rootBean.TOOL_DRAG); //drag tool
9) Adding an object to under the currently selected object
selected.addChild((nodeBean)(object),


