Difference between revisions of "STEP-NC WebGL Demo"
From Web3D.org
Vmarchetti (Talk | contribs) |
Vmarchetti (Talk | contribs) |
||
| Line 6: | Line 6: | ||
*[https://s3.amazonaws.com/kshell/stepnc_x3d/webgl_demo_checkout/shell55130_tri_nonormal.x3d shell55130_tri_nonormal.x3d] Workpiece rendered through IndexedTriangleSet node, without per-triangle normals included. | *[https://s3.amazonaws.com/kshell/stepnc_x3d/webgl_demo_checkout/shell55130_tri_nonormal.x3d shell55130_tri_nonormal.x3d] Workpiece rendered through IndexedTriangleSet node, without per-triangle normals included. | ||
*[https://s3.amazonaws.com/kshell/stepnc_x3d/webgl_demo_checkout/shell55130_nurbs_transpose.x3d shell55130_nurbs_transpose.x3d] Workpiece rendered through NurbsTrimmedSurface, with parameters transposed for rendering on InstantReality X3d browser. | *[https://s3.amazonaws.com/kshell/stepnc_x3d/webgl_demo_checkout/shell55130_nurbs_transpose.x3d shell55130_nurbs_transpose.x3d] Workpiece rendered through NurbsTrimmedSurface, with parameters transposed for rendering on InstantReality X3d browser. | ||
| + | |||
| + | <pre> | ||
| + | <?xml version="1.0" encoding="utf-8"?> | ||
| + | |||
| + | |||
| + | <!-- | ||
| + | XSL transformation to generate an X3D file from the xml data used for | ||
| + | the STEPTools WebGL demo (http://www.steptools.com/demos) | ||
| + | |||
| + | This transformation takes two parameters | ||
| + | shell : an XPath expression identifying the nodes in the source XML file which contains | ||
| + | geometry to be converted to X3D | ||
| + | |||
| + | include-normal : enter as true() or false() whether normal geometry data taken from | ||
| + | source file should be included in X3D geometry | ||
| + | --> | ||
| + | |||
| + | <xsl:stylesheet version="1.0" | ||
| + | xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | ||
| + | xmlns:str="http://exslt.org/strings" | ||
| + | extension-element-prefixes="str"> | ||
| + | |||
| + | <xsl:output method="xml" encoding="utf-8"/> | ||
| + | |||
| + | |||
| + | <xsl:param name="shape"/> | ||
| + | <xsl:param name="include-normal" select="0"/> | ||
| + | |||
| + | <xsl:template match="/"> | ||
| + | <X3D xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" | ||
| + | xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.2.xsd" | ||
| + | version="3.2" | ||
| + | profile="Interchange"> | ||
| + | <head/> | ||
| + | <Scene> | ||
| + | <Background skyColor="0.2 0.5 0.2"/> | ||
| + | <Shape> | ||
| + | <xsl:apply-templates select="$shape"/> | ||
| + | <Appearance> | ||
| + | <Material containerField="material" diffuseColor="1.000000 1.000000 1.000000"/> | ||
| + | </Appearance> | ||
| + | </Shape> | ||
| + | </Scene> | ||
| + | </X3D> | ||
| + | </xsl:template> | ||
| + | |||
| + | <xsl:template match="shell"> | ||
| + | <IndexedTriangleSet containerField="geometry" solid="FALSE"> | ||
| + | <xsl:attribute name="index"> | ||
| + | <xsl:for-each select="facets/f/@v"> | ||
| + | <xsl:for-each select="str:split(normalize-space(.))"> | ||
| + | <xsl:value-of select="number(./text())+0"/><xsl:text> </xsl:text> | ||
| + | </xsl:for-each> | ||
| + | </xsl:for-each> | ||
| + | </xsl:attribute> | ||
| + | <Coordinate containerField="coord"> | ||
| + | <xsl:attribute name="point"> | ||
| + | <xsl:for-each select="./verts/v/@p"> | ||
| + | <xsl:for-each select="str:split(normalize-space(.))"> | ||
| + | <xsl:value-of select="format-number(number(./text()),'###.####')"/><xsl:text> </xsl:text> | ||
| + | </xsl:for-each> | ||
| + | |||
| + | <xsl:if test="position() < last()"> | ||
| + | <xsl:text>, </xsl:text> | ||
| + | </xsl:if> | ||
| + | </xsl:for-each> | ||
| + | </xsl:attribute> | ||
| + | </Coordinate> | ||
| + | |||
| + | <xsl:if test="$include-normal"> | ||
| + | <Normal containerField="normal"> | ||
| + | <xsl:attribute name="vector"> | ||
| + | <xsl:for-each select="facets/f/@fn"> | ||
| + | <xsl:for-each select="str:split(normalize-space(.))"> | ||
| + | <xsl:value-of select="format-number(number(./text()),'###.####')"/><xsl:text> </xsl:text> | ||
| + | </xsl:for-each> | ||
| + | |||
| + | <xsl:if test="position() < last()"> | ||
| + | <xsl:text>, </xsl:text> | ||
| + | </xsl:if> | ||
| + | </xsl:for-each> | ||
| + | </xsl:attribute> | ||
| + | </Normal> | ||
| + | </xsl:if> | ||
| + | |||
| + | </IndexedTriangleSet> | ||
| + | </xsl:template> | ||
| + | |||
| + | </xsl:stylesheet> | ||
| + | |||
| + | </pre> | ||
Revision as of 08:15, 14 February 2012
- STEPTools Inc (Troy, NY)
- STEPTools WebGL demonstration
- boxy.xml Warning 39 MB XML file.
- STEP-NC file This is a Zip archive of a STEP Part 28 (XML encoding) file.
- shell55130_tri.x3d Workpiece rendered through IndexedTriangleSet node , with per-triangle normals provided
- shell55130_tri_nonormal.x3d Workpiece rendered through IndexedTriangleSet node, without per-triangle normals included.
- shell55130_nurbs_transpose.x3d Workpiece rendered through NurbsTrimmedSurface, with parameters transposed for rendering on InstantReality X3d browser.
<?xml version="1.0" encoding="utf-8"?>
<!--
XSL transformation to generate an X3D file from the xml data used for
the STEPTools WebGL demo (http://www.steptools.com/demos)
This transformation takes two parameters
shell : an XPath expression identifying the nodes in the source XML file which contains
geometry to be converted to X3D
include-normal : enter as true() or false() whether normal geometry data taken from
source file should be included in X3D geometry
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
extension-element-prefixes="str">
<xsl:output method="xml" encoding="utf-8"/>
<xsl:param name="shape"/>
<xsl:param name="include-normal" select="0"/>
<xsl:template match="/">
<X3D xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.2.xsd"
version="3.2"
profile="Interchange">
<head/>
<Scene>
<Background skyColor="0.2 0.5 0.2"/>
<Shape>
<xsl:apply-templates select="$shape"/>
<Appearance>
<Material containerField="material" diffuseColor="1.000000 1.000000 1.000000"/>
</Appearance>
</Shape>
</Scene>
</X3D>
</xsl:template>
<xsl:template match="shell">
<IndexedTriangleSet containerField="geometry" solid="FALSE">
<xsl:attribute name="index">
<xsl:for-each select="facets/f/@v">
<xsl:for-each select="str:split(normalize-space(.))">
<xsl:value-of select="number(./text())+0"/><xsl:text> </xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:attribute>
<Coordinate containerField="coord">
<xsl:attribute name="point">
<xsl:for-each select="./verts/v/@p">
<xsl:for-each select="str:split(normalize-space(.))">
<xsl:value-of select="format-number(number(./text()),'###.####')"/><xsl:text> </xsl:text>
</xsl:for-each>
<xsl:if test="position() < last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:attribute>
</Coordinate>
<xsl:if test="$include-normal">
<Normal containerField="normal">
<xsl:attribute name="vector">
<xsl:for-each select="facets/f/@fn">
<xsl:for-each select="str:split(normalize-space(.))">
<xsl:value-of select="format-number(number(./text()),'###.####')"/><xsl:text> </xsl:text>
</xsl:for-each>
<xsl:if test="position() < last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:attribute>
</Normal>
</xsl:if>
</IndexedTriangleSet>
</xsl:template>
</xsl:stylesheet>