VRML viewer - still maintained?

Is the VRML viewer still maintained, or is that dead? I’ve found some bugs.

(KiCAD, the electronics design program, uses VRML for its 3D models of parts. There are thousands of such models at
"https://github.com/KiCad/kicad-library/tree/master/modules/packages3d". Is the threejs.org VRML viewer a viable base for an online browser for those files?_

Do you mean VRMLLoader? If you find a bug, then please report it at the three.js github project.

BTW: Don’t forget to provide a .wrl file that illustrates the problem. Makes it easier to solve the issue.

1 Like

There’s a new version of X3D v4 coming out next year. We would like a second reference implementation for a VRML viewier on the web (that is, extend THREE.VRMLLoader). What chances are there to get the VRMLLoader upgraded to v4 in the next few months? Please join the x3d-public mailing list @web3d.org to discuss, or discuss here, and I will link the discussion.

VRMLLoader was completely rewritten this year, see:

However, the loader does only support V2 (which is not even entirely implemented since the spec is so comprehensive). So I think it’s unlikely that support for V4 will be added anytime soon. At least not by one of the collaborators.

There are likely some areas that can be enhanced in the VRML Loader, for example, glTF for X3D and Physical Based Rendering (PBR–also from glTF). We’re likely not asking you to become a full profile X3D viewer. For example, we already have a VRML renderer on the web, X_ITE, It would be good to know which X3D profile THREE meets (Interchange, Immersive, …), if this is documented somewheres.

No, it’s not^^. To be clear, three.js does not provide a loader for X3D files. We just focused on VRML. So at least my person is not familiar with X3D profiles.

It looks like these nodes are supported:

					case 'Group':
					case 'Transform':
						build = buildGroupingNode( node );
						break;

					case 'Background':
						build = buildBackgroundNode( node );
						break;

					case 'Shape':
						build = buildShapeNode( node );
						break;

					case 'Appearance':
						build = buildApperanceNode( node );
						break;

					case 'Material':
						build = buildMaterialNode( node );
						break;

					case 'ImageTexture':
						build = buildImageTextureNode( node );
						break;

					case 'TextureTransform':
						build = buildTextureTransformNode( node );
						break;

					case 'IndexedFaceSet':
						build = buildIndexedFaceSetNode( node );
						break;

					case 'IndexedLineSet':
						build = buildIndexedLineSetNode( node );
						break;

					case 'PointSet':
						build = buildPointSetNode( node );
						break;

					case 'Box':
						build = buildBoxNode( node );
						break;

					case 'Cone':
						build = buildConeNode( node );
						break;

					case 'Cylinder':
						build = buildCylinderNode( node );
						break;

					case 'Sphere':
						build = buildSphereNode( node );
						break;

					case 'Color':
					case 'Coordinate':
					case 'Normal':
					case 'TextureCoordinate':
						build = buildGeometricNode( node );
						break;