<table bgColor="#ffffff" border="0" width="100%"> <tbody> <tr> <td align="right"> <a href="index.html"><img title="MaterialModulator prototype demonstration" alt="MaterialModulator prototype demonstration" border="0" hspace="0" src="MaterialModulator.png" height="112" align="middle"/></a> </td> <td align="left"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td> <td align="left"> <a href="index.html"><img title="ViewFrustum prototype demonstration" alt="ViewFrustum prototype demonstration" border="0" hspace="0" src="ViewFrustumObliqueView.png" width="253" height="112" align="middle"/></a> </td> </tr> </tbody> </table> <p> Prototypes let authors define a new X3D node made up of other X3D nodes, extending the language for any scenes in new and interesting ways. </p> <p> X3D extensibility includes a tremendous capability: authors can create prototype declarations and instances to define new X3D nodes. This is a powerful feature that puts the full power of this graphics language in the hands of Web authors. Prototype templates are themselves built using <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#ProtoDeclare" target="X3dTooltips" title="X3D Tooltip">ProtoDeclare</a> definitions or corresponding <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#ExternProtoDeclare" target="X3dTooltips" title="X3D Tooltip">ExternProtoDeclare</a> references. ProtoDeclare field definitions are found in the <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#ProtoInterface" target="X3dTooltips" title="X3D Tooltip">ProtoInterface</a> tag, which can include multiple <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#field" target="X3dTooltips" title="X3D Tooltip">field</a> declarations that define a name, initial value (if appropriate), <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#accessType" target="X3dTooltips" title="X3D Tooltip">accessType</a> (inputOnly, outputOnly, initializeOnly and inputOutput) and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#type" target="X3dTooltips" title="X3D Tooltip">type</a> for each field. The <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#IS" target="X3dTooltips" title="X3D Tooltip">IS</a> and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#connect" target="X3dTooltips" title="X3D Tooltip">connect</a> statements allow an internal field inside the ProtoBody to directly relay values and events via the exposed ProtoInterface field. </p> <p> The node type of each ProtoDeclare is defined by the first node inside the <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#ProtoBody" target="X3dTooltips" title="X3D Tooltip">ProtoBody</a> declaration. Copies of a new node are created by name with <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#ProtoInstance" target="X3dTooltips" title="X3D Tooltip">ProtoInstance</a> nodes. Default values for ProtoInstance fields can be overridden with <a href="https://www.web3d.org/x3d/content/X3dTooltips.html#fieldValue" target="X3dTooltips" title="X3D Tooltip">fieldValue</a> initializations. A ProtoInstance node can replace any other node in the scene graph having the same node type. </p> <p> The supporting <a href="https://x3dGraphics.com/slidesets/X3dForWebAuthors/Chapter14Prototypes.pdf" target="X3dChapterSlideset">Chapter&nbsp;14 slideset</a> and course videos (<a href="https://www.movesinstitute.org/Video/Courses/X3dForWebAuthors/X3dForWebAuthorsVideo.html#14" target="X3dChapterVideos">NPS</a>, <a href="https://www.youtube.com/playlist?list=PLuSIsM-86simQ4u2XxKZS7PU381BfFjIk" target="X3dChapterYouTubeVideos">YouTube</a>) for <i>X3D for Web Authors</i> are available online via <a href="https://x3dGraphics.com" target="_blank">X3dGraphics.com</a>. </p> <p> Also available: <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a> for <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#InlinesPrototypes" target="_blank">Inline Scenes and Prototype Templates</a> and <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#urls" target="_blank">URL&nbsp;Links</a>. </p>