Error message

  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6656 of /home/drbiz/public/2013.realism.com/includes/common.inc).
  • Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in drupal_get_feeds() (line 394 of /home/drbiz/public/2013.realism.com/includes/common.inc).

Proposed X3D Profile: Static Model

In the marketplace of file formats for 3D content, X3D has a tremendous advantage over all other formats by nature of its ISO Standardization, openness, and compatibility over 20 years. There are other formats that meet one or more of these features, including OBJ and FBX; however, X3D has not been a dominant or even significant player in the marketplace. I believe that this is a result of not meeting the demands of 3D content production as practiced by professionals in primarily the entertainment industry and availability in software tools, especially Maya and now Blender.

X3D certainly meets the needs of long-term (archive) storage and retrivability. I believe that there are several significant reasons that X3D does not meet the needs of the marketplace. The reasons are:

  1. The simple versions (profiles) of the format do contain all of the features currently used by 3D content creators.
  2. The versions (profiles) of the format that do contain all of the features also include a lot of items not needed and/or are difficult to handle.

To rectify this mismatch between market demand and features, I am proposing two new profiles with the potential for others in the future. These are directly matched to marketplace needs and can easily be converted to/from existing and accepted formats such as FBX, OBJ, STEP, glTF, and others. The formats are all model-only based and do not include user interactions, environmentals effects, or imperative operations.

The distinction between the profiles is whether the models are static or animated. At this time the profiles are based strictly on V3.3 nodes; through some obvious extensions can be added. The remainder of this post will deal with the static model profile using X3D V3.3 nodes.

The purpose of this profile is to hold models that are not internally animated. The model as a whole may move, but its component pieces do not. This structure was designed to be an output of digital content creation tools such as Blender, Maya, AutoCad, etc. It does not include structures that are found (collectively) in any of those tools as an output format. It is a superset (in terms of structure support) of OBJ and FBX for static models.

Advantages

As this is a (proposed) X3D format (profile), it is open and has a proven archivable structure. All features are well documented and available for everyone. There are existing conversions between various file formats involving static models - Fraunhofer’s aopt converts from X3D to many standard formats. Khronos has conversion libraries between glTF and FBX/OBJ. It is straight-forward to construct similar libraries between this static model profile and other market formats. Being a static structure, none of the dynamic X3D features that may be incompatible with the other market formats are used, so this represents a simple structure for use by all.

Issues

This format is limited to what is available in X3D V3.3. There is no allowance for physically based rendering (PBR) as that is not handled by X3D. The structure of animated models and the process for creating them differs between market practice and X3D definitions. Future work will be needed to resolve those differences. These structures are also static. While this covers many uses of 3D models, it is not all of them. The animated model profile will handle those.

X3D Nodes in Static Model Format

The following nodes are in this proposed format. No attempt has been made to force all nodes at a specific level of a component into this profile. Some of these nodes may contain fields that are not appropriate or otherwise included. Those fields would be ignored during conversion.

A listing of X3D V3.3 nodes that comprise the proposed Static Model; profile.
Node Component
CADAssembly CAD
CADFace CAD
CADLayer CAD
CADPart CAD
IndexedQuadSet CAD
QuadSet CAD
X3DProductStructureChildNode CAD
MetadataBoolean Core
MetadataDouble Core
MetadataFloat Core
MetadataInteger Core
MetadataSet Core
MetadataString Core
WorldInfo Core
GeoCoordinate Geodata
GeoElevationGrid Geodata
GeoLocation Geodata
GeoMetadata Geodata
GeoOrigin Geodata
GeoTransform Geodata
IndexedFaceSet Geometry3D
Group Group
Transform Group
X3DGroupingNode Group
X3DUrlObject Networking
Contour2D NURBS
ContourPolyline2D NURBS
NurbsCurve NURBS
NurbsCurve2D NURBS
NurbsPatchSurface NURBS
NurbsSet NURBS
NurbsSweptSurface NURBS
NurbsSwungSurface NURBS
NurbsTextureCoordinate NURBS
NurbsTrimmedSurface NURBS
X3DNurbsControlCurveNode NURBS
X3DNurbsSurfaceGeometryNode NURBS
X3DParametricGeometryNode NURBS
Color Rendering
ColorRGBA Rendering
Coordinate Rendering
IndexedLineSet Rendering
IndexedTriangleFanSet Rendering
IndexedTriangleSet Rendering
IndexedTriangleStripSet Rendering
LineSet Rendering
Normal Rendering
PointSet Rendering
TriangleFanSet Rendering
TriangleSet Rendering
TriangleStripSet Rendering
X3DColorNode Rendering
X3DComposedGeometryNode Rendering
X3DCoordinateNode Rendering
X3DGeometricPropertyNode Rendering
X3DGeometryNode Rendering
X3DNormalNode Rendering
ComposedShader Shaders
FloatVertexAttribute Shaders
Matrix3VertexAttribute Shaders
Matrix4VertexAttribute Shaders
PackagedShader Shaders
ProgramShader Shaders
ShaderPart Shaders
ShaderProgram Shaders
X3DProgrammableShaderObject Shaders
X3DShaderNode Shaders
X3DVertexAttributeNode Shaders
Appearance Shape
Material Shape
Shape Shape
TwoSidedMaterial Shape
X3DAppearanceChildNode Shape
X3DAppearanceNode Shape
X3DMaterialNode Shape
X3DShapeNode Shape
ComposedTexture3D Texture3D
ImageTexture3D Texture3D
PixelTexture3D Texture3D
TextureCoordinate3D Texture3D
TextureCoordinate4D Texture3D
TextureTransform3D Texture3D
X3DTexture3DNode Texture3D
ImageTexture Texturing
MovieTexture Texturing
PixelTexture Texturing
TextureCoordinate Texturing
TextureTransform Texturing
X3DTexture2DNode Texturing
X3DTextureCoordinateNode Texturing
X3DTextureNode Texturing
X3DTextureTransformNode Texturing
BoundaryEnhancementVolumeStyle Volume
CartoonVolumeStyle Volume
ComposedVolumeStyle Volume
EdgeEnhancementVolumeStyle Volume
OpacityMapVolumeStyle Volume
ProjectionVolumeStyle Volume
ShadedVolumeStyle Volume
SilhouetteEnhancementVolumeStyle Volume
ToneMappedVolumeStyle Volume
VolumeData Volume
X3DVolumeDataNode Volume
X3DVolumeRenderStyleNode Volume