Post

Normal

Overview

Normal defines a set of 3D surface-normal vectors that apply either to a sibling Coordinate or CoordinateDouble node, or else to a parent ElevationGrid node. Normal values are perpendicular directions that are used per-polygon or per-vertex when computing lighting and shading.

The Normal node belongs to the Rendering component and requires at least level 2, its default container field is normal. It is available since VRML 2.0 and from X3D version 3.0 or higher.

Hierarchy

1
2
3
4
+ X3DNode
  + X3DGeometricPropertyNode
    + X3DNormalNode
      + Normal

Fields

SFNode [in, out] metadata NULL [X3DMetadataObject]

Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node.

Hint

MFVec3f [in, out] vector [ ] [-1,1]

Set of unit-length normal vectors, corresponding to indexed polygons or vertices.

Warning

  • Unit length means a magnitude of 1.0, so normal values of (0,0,0) are invalid.

Advice

Hints

  • Normal values are typically only calculated or applied once, during initial loading of model geometry.
  • Custom Normal values can produce special effects.
  • If no child Normal node is provided, the X3D browser shall automatically generate normals, using creaseAngle to determine smoothed shading across shared vertices.
  • Computation of normal values is performed quite quickly on modern 3D graphics hardware, often with no perceptible delay.
  • Normal vectors perpendicular to 3D surface

Warning

  • Adding normal values to a model might significantly increase file size. Testing can help determine proper tradeoffs between file size, network transmission delays and initial rendering speed.

See Also

This post is licensed under CC BY 4.0 by the author.