mjbWorld - Known Bugs and Planned Enhancements

VRML nodes not yet supported:

AudioClip
Billboard
LOD
MovieTexture
PixelTexture

VRML nodes with some support but not all parameters:

Inline
Sound

VRML nodes which can read and write all parameters but not displayed in 3D

window:
Anchor
Collision
ColorInterpolator
CylinderSensor
Extrusion
NavigationInfo
NormalInterpolator
PlaneSensor
PointSet
ScalarInterpolator
Script
SphereSensor
Switch
TextureTransform
Viewpoint
VisibilitySensor

VRML nodes fully supported (but may have bugs):

Appearance
Background
Box
Color
Cone
Coordinate
CoordinateInterpolator
Cylinder
DirectionalLight
ElevationGrid
Fog
FontStyle
Group
ImageTexture
IndexedFaceSet
IndexedLineSet
Material
Normal
OrientationInterpolator
PointLight
PositionInterpolator
ProximitySensor
Shape
Sphere
SpotLight
Text
TextureCoordinate
TimeSensor
TouchSensor
Transform
WorldInfo

see here for more details of VRML support


bug 1 - non ASCII characters in DEF/PROTO names

see here


feedback from Tobin

 

* compiler warning that setTextureCoordinates and setTextureCoordinateIndices are deprecated.
- no change in this release, I will update to follow latest java3d spec at a future release.

* File compiled but would not run with error "Exception in thread "main" java.lang.NoClassDefFoundError: mjbOutput (wrong name : mjbOutput/mjbOutput)
- I'll look into this.

* Keep losing my 3d view when I add new components. I Just tried removing the background from shape.wrl and then adding a new background in its place, and the 3D view is then shot.
- I cant reproduce this, can you give me more information on the version of JDK and Java3d that you are using, and exactly what you did.


Export to Java source issue

VRML and Java3D use a similar scene graph (which is a tree structure) so its quite easy to convert between them. However there is an area where they differ, that is the mechanism for reusing nodes in several parts of the tree. In VRML we can name a node with the DEF keyword and then use it at other places in the scenegraph with the USE keyword. In Java3d nodes can be used at several points in the scene by using the Link and SharedGroup nodes however the rules for using these nodes are mode restrictive than the VRML DEF/USE keywords. Where the Link and SharedGroup nodes cannot be used then the nodes have to be cloned, which uses more memory. The easiest way to do this would be to implement this would be to always clone nodes when a USE is found. But this would be wasteful in memory so I am trying to build in the intelligence to use Link and SharedGroup nodes where appropriate, but this will take time to do properly.


Calculation of normals

If the VRML does not contain normals then these are generated in the program. The normal to any face can be easily generated by taking the cross-product of the vectors representing any 2 non-parallel sides of the face. The program does this without any problem. However the Indexed array geometry that I am using in java3d requires a normal per vertex and not a normal per face. So I do this by averaging out all the normals of the faces that meet at the vertex. This works well for curved surfaces such as a sphere. If the shapes require hard edges then the VRML signals this by having a 'crease angle' parameter to specify the angle between the normals for different faces at the same vertex. This is the bit that is complex to implement, it will also going to drastically increase the number of normals and hence the size of arrays to hold them. However there may be an interim solution which would be to say: if crease angle is less than say 0.3 then calculate normals as the program does at present, if crease angle is greater than 0.3 then use the normals generated from the faces without averaging. There are still some complications here because there may be more faces than vertexes so I may have to increase the size of the arrays, but it would be much quicker than fully implementing crease angle.


Support for morph

enhancement - I would like to support the ability to morph between different shapes.


View

enhancement - Multiple views ony 1 3D view can be selected at a time


Bugs in Java3D itself

Drop down menu does not work over the 3D panel

This is because the 3D window is heavyweight (i.e. uses native component) and so is always above lightweight swing components.

The following might possibly be a fix?

JPopupMenu.setDefaultLightWeightPopupEnabled(false);

 

 

Garbage Collection

Look at http://developer.java.sun.com/developer/earlyAccess/java3D/java3d-bugs.html Point no. 16 under "Core Bugs (j3d and vecmath)"

 


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-2017 Martin John Baker - All rights reserved - privacy policy.