Difference between revisions of "STEP-NC WebGL Demo"
From Web3D.org
Vmarchetti (Talk | contribs) |
Vmarchetti (Talk | contribs) |
||
Line 23: | Line 23: | ||
--> | --> | ||
+ | |||
+ | An XSLT script can generate an X3D file from the triangle data in WebGL data. The script used takes two parameters. Using the [[http://xmlsoft.org/XSLT/xsltproc2.html xsltproc]] XSLT command line tool, the invocation looks like: | ||
+ | |||
+ | xsltproc -param "shape" "//shell[@id='id55130']" -param "include-normal" "false()" convert_to_x3d.xsl boxy.xml > boxy_shell.x3d | ||
+ | |||
<xsl:stylesheet version="1.0" | <xsl:stylesheet version="1.0" | ||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
Revision as of 16:20, 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 --> An XSLT script can generate an X3D file from the triangle data in WebGL data. The script used takes two parameters. Using the [[http://xmlsoft.org/XSLT/xsltproc2.html xsltproc]] XSLT command line tool, the invocation looks like: xsltproc -param "shape" "//shell[@id='id55130']" -param "include-normal" "false()" convert_to_x3d.xsl boxy.xml > boxy_shell.x3d <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>