Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > 052d79447130ebaf90b2730395954d11 > files > 377

openvrml-doc-0.18.3-1mdv2010.0.i586.rpm

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
               "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>OpenVRML: openvrml::rendering_context Class Reference</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<link rel="icon" href="../vrml-16">
<link rel="start" href="http://openvrml.org/index" title="OpenVRML Home">
<link rel="prev" href="http://openvrml.org/discussion" title="Discussion">
<link rel="contents" href="index" title="Documentation Main Page">
<link rel="index" href="functions" title="OpenVRML Compound Members">
<link rel="appendix" href="conformance" title="Conformance Test Results">
<style type="text/css">
@import url("tabs.css");
@import url("http://openvrml.org/openvrml.css");

table {
  width: 100%;
}

h2 {
  border-bottom-style: solid;
  border-bottom-width: 1px;
}

/*
 * Doxygen as of 1.5.4-20071217 uses the class "navpath" instead of "nav".
 * For now, we'll do both.
 */

div.nav,
div.navpath {
  background-color: transparent;
  text-align: left;
  margin-top: 1em;
  margin-bottom: 1em;
  border-color: black;
  border-left: none;
  border-right: none;
  padding-top: 0.5em;
  padding-bottom: 0.5em;
}

div.nav :link, div.nav :visited,
div.navpath :link, div.navpath :visited {
  border-width: 1px;
  border-style: solid;
  border-color: silver;
  padding: 2px;
}

div.nav :link:hover, div.nav :visited:hover,
div.navpath :link:hover, div.navpath :visited:hover {
  border-style: outset;
  border-color: gray;
}

div.nav :active,
div.navpath :active {
  border-style: inset;
  border-color: gray;
}

.body td {
  background-color: transparent;
}

.el {
  text-decoration: inherit;
  font-weight: inherit
}
.elRef {
  font-weight: inherit
}
.code:link, .code:visited {
  text-decoration: inherit;
  font-weight: inherit;
  color: inherit;
}
.codeRef:link {
  font-weight: normal;
  color: inherit;
}
:visited {
  color: silver;
}
:link:hover {
  color: inherit;
  text-decoration: inherit;
  background-color: transparent;
}

h1 {
  line-height: 1.2em;
}

td.memItemLeft, td.memItemRight,
td.memTemplParams, td.memTemplItemLeft, td.memTemplItemRight,
.memtemplate, .memname td {
  font-family: Consolas, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", LucidaTypewriter, monospace;
}

td.memItemLeft, td.memItemRight, td.mdescLeft, td.mdescRight {
  background-color: rgb(95%, 95%, 95%);
  border-color: rgb(65%, 65%, 65%);
  border-width: 1px;
  font-size: smaller;
}

.memItemLeft {
  margin-top: 0.5em;
  border-top-style: solid;
}
.mdescLeft {
  border-bottom-style: solid;
}
.memItemRight {
  border-top-style: solid;
  margin-top: 0.5em;
}
.mdescRight {
  border-bottom-style: solid;
}

.mdescRight {
  font-style: italic;
}

.mdTable {
  background-color: rgb(95%, 95%, 95%);
}

.memproto td code {
  font-family: inherit;
  font-style: italic;
}

td.pass {
  background-color: rgb(50%, 100%, 50%);
}

td.fail {
  background-color: rgb(100%, 50%, 50%);
}

td.invalid {
  background-color: rgb(75%, 75%, 75%);
}

.memitem {
  padding: 0;
}

.memitem table {
  width: auto;
}

.memproto, .memdoc {
  border-width: 1px;
  border-color: rgb(65%, 65%, 65%);
}

.memproto {
  background-color: rgb(90%, 90%, 90%);
  font-weight: inherit;
  font-size: smaller;
  border-top-style: solid;
  border-left-style: solid;
  border-right-style: solid;
  -webkit-border-top-left-radius: 0.6em;
  -webkit-border-top-right-radius: 0.6em;
  -moz-border-radius-topleft: 0.6em;
  -moz-border-radius-topright: 0.6em;
}

.memdoc {
  background-color: rgb(95%, 95%, 95%);
  padding: 2px 5px;
  border-style: solid;
  -webkit-border-bottom-left-radius: 0.6em;
  -webkit-border-bottom-right-radius: 0.6em;
  -moz-border-radius-bottomleft: 0.6em;
  -moz-border-radius-bottomright: 0.6em;
}

.memname {
  font-weight: inherit;
}

div.tabs {
  background-image: url("tab_b-openvrml.png");
}

div.tabs span {
  background-image: url("tab_l-openvrml.png");
}

div.tabs a {
  background-image: url("tab_r-openvrml.png");
  border-bottom: 1px solid #a5a5a5;
}

div.tabs a:link, div.tabs a:visited, div.tabs a:active, div.tabs a:hover {
  color: black;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

.note {
  border: 1px solid rgb(65%, 65%, 65%);
  background-color: rgb(95%, 95%, 95%);
  margin-left: 10%;
  margin-right: 10%;
}
</style>
</head>
<body>
<table class="sitenav">
  <tr>
    <th><a href="http://openvrml.org/index" title="Home">Home</a></th>
    <th><a href="http://openvrml.org/download" title="Download">Download</a></th>
    <th><a href="http://openvrml.org/screenshots/index" title="Screen shots">Screen shots</a></th>
    <th><a href="http://openvrml.org/discussion" title="Mailing lists and IRC">Discussion</a></th>
    <th>Documentation</th>
  </tr>
</table>
<div class="body">
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceopenvrml.html">openvrml</a>::<a class="el" href="classopenvrml_1_1rendering__context.html">rendering_context</a>
  </div>
</div>
<div class="contents">
<h1>openvrml::rendering_context Class Reference</h1><!-- doxytag: class="openvrml::rendering_context" -->Information needed during a render traversal.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;openvrml/rendering_context.h&gt;</code>
<p>

<p>
<a href="classopenvrml_1_1rendering__context-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1rendering__context.html#759cef7af54a49dc261b5f7da4e6030e">rendering_context</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructs an empty render context.  <a href="#759cef7af54a49dc261b5f7da4e6030e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1rendering__context.html#8f91df376c6f88453cd229ab104918e9">rendering_context</a> (<a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">bounding_volume::intersection</a> <a class="el" href="classopenvrml_1_1rendering__context.html#52850039c3e1a6e38bff9d6379aa95f3">cull_flag</a>, <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;<a class="el" href="classopenvrml_1_1rendering__context.html#101b7688e752bdb7f501be9bbc20eb62">modelview</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructs and initializes a render context.  <a href="#8f91df376c6f88453cd229ab104918e9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1rendering__context.html#659dd9b823169cc1ef0b1ccc058d2593">matrix</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a reference to the modelview matrix.  <a href="#659dd9b823169cc1ef0b1ccc058d2593"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1rendering__context.html#a79b2d140f85270e4dca17b69beb95f6">matrix</a> (<a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;<a class="el" href="classopenvrml_1_1rendering__context.html#101b7688e752bdb7f501be9bbc20eb62">modelview</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the modelview matrix.  <a href="#a79b2d140f85270e4dca17b69beb95f6"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">bounding_volume::intersection</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1rendering__context.html#52850039c3e1a6e38bff9d6379aa95f3">cull_flag</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Track the results of intersecting <a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a> bounds with the view volume.  <a href="#52850039c3e1a6e38bff9d6379aa95f3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1rendering__context.html#f859bb0176f346dfe330076e988db664">draw_bounding_spheres</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw the bounding volumes or not.  <a href="#f859bb0176f346dfe330076e988db664"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1rendering__context.html#101b7688e752bdb7f501be9bbc20eb62">modelview</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Information needed during a render traversal. 
<p>
The members could be arguments to the <code>node::render</code> method; but there may be many arguments and adding an argument requires changing nearly every file in the core.<p>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>This is a concrete base class that is passed by value, not by reference. The idea is to pass everything exactly as if it were a normal argument to the render function. This has some consequences...</dd></dl>
First off, the members should be primitives or pointers. There shouldn't be anything that requires a lot of work to copy. Calling <code>node::render</code> should be cheap. Secondly, while adding a new member to this class is less work than adding a new argument to every <code>node::render</code> call, it still requires a recompile of nearly the whole core. That's because pass-by-value needs to know the exact size of what's being passed. Thirdly, you can't subclass this class. It's concrete. If you pass a subclass it will just get truncated.<p>
Why do it this way? Because it makes writing the <code>node::render</code> method easier. We don't have to maintain a stack of states, we just use the call stack instead. That means no heap allocation and deallocation, which is very cool. Also, we don't have to pop the stack at the end of the method. Alternatively, I could have used the "initialization is resource acquisition" pattern, but I felt this was cleaner.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Christopher K. St. John</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd>node::render <p>
<a class="el" href="classopenvrml_1_1browser.html#b9e6dd463b20bc2549c40f6060a26e24" title="Draw this browser into the specified viewer.">browser::render</a> </dd></dl>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="759cef7af54a49dc261b5f7da4e6030e"></a><!-- doxytag: member="openvrml::rendering_context::rendering_context" ref="759cef7af54a49dc261b5f7da4e6030e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">openvrml::rendering_context::rendering_context           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructs an empty render context. 
<p>
An empty context should not be passed to VrmlNode::render. This constructor is useful only for debugging and experimentation. 
</div>
</div><p>
<a class="anchor" name="8f91df376c6f88453cd229ab104918e9"></a><!-- doxytag: member="openvrml::rendering_context::rendering_context" ref="8f91df376c6f88453cd229ab104918e9" args="(bounding_volume::intersection cull_flag, mat4f &amp;modelview)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">openvrml::rendering_context::rendering_context           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">bounding_volume::intersection</a>&nbsp;</td>
          <td class="paramname"> <em>cull_flag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>modelview</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructs and initializes a render context. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cull_flag</em>&nbsp;</td><td>the cull flag argument will normally be <code><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3b5043a582b7b2c17c9689fe51f26e1b6" title="Indicates that the tested volume intersects with the target volume.">bounding_volume::partial</a></code>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>modelview</em>&nbsp;</td><td>The modelview matrix. The transform can be affine, but the rendering code may take advantage of an orthogonal transform if one is passed in.</td></tr>
  </table>
</dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1rendering__context.html#52850039c3e1a6e38bff9d6379aa95f3" title="Track the results of intersecting node bounds with the view volume.">cull_flag</a> </dd></dl>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="659dd9b823169cc1ef0b1ccc058d2593"></a><!-- doxytag: member="openvrml::rendering_context::matrix" ref="659dd9b823169cc1ef0b1ccc058d2593" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structopenvrml_1_1mat4f.html">openvrml::mat4f</a> &amp; openvrml::rendering_context::matrix           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns a reference to the modelview matrix. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the modelview matrix. </dd></dl>

</div>
</div><p>
<a class="anchor" name="a79b2d140f85270e4dca17b69beb95f6"></a><!-- doxytag: member="openvrml::rendering_context::matrix" ref="a79b2d140f85270e4dca17b69beb95f6" args="(mat4f &amp;modelview)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::rendering_context::matrix           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>modelview</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the modelview matrix. 
<p>
A <a class="el" href="classopenvrml_1_1rendering__context.html" title="Information needed during a render traversal.">rendering_context</a> retains a pointer to the passed matrix; it does not make a copy. All memory management is up to the caller. In practice, the passed-in array will generally be a local variable in the <code>node::render</code> method.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>modelview</em>&nbsp;</td><td>the modelview matrix. Must be at least affine, although the render code may optimize for orthogonal transforms. </td></tr>
  </table>
</dl>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="101b7688e752bdb7f501be9bbc20eb62"></a><!-- doxytag: member="openvrml::rendering_context::modelview" ref="101b7688e752bdb7f501be9bbc20eb62" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structopenvrml_1_1mat4f.html">openvrml::mat4f</a> * <a class="el" href="classopenvrml_1_1rendering__context.html#101b7688e752bdb7f501be9bbc20eb62">openvrml::rendering_context::modelview</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The current modelview matrix. 
</div>
</div><p>
<a class="anchor" name="52850039c3e1a6e38bff9d6379aa95f3"></a><!-- doxytag: member="openvrml::rendering_context::cull_flag" ref="52850039c3e1a6e38bff9d6379aa95f3" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">openvrml::bounding_volume::intersection</a> <a class="el" href="classopenvrml_1_1rendering__context.html#52850039c3e1a6e38bff9d6379aa95f3">openvrml::rendering_context::cull_flag</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Track the results of intersecting <a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a> bounds with the view volume. 
<p>
Setting to <code><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce39c80ee2ecd82d3db6b70162fd87c8f08" title="Indicates that the tested volume is entirely inside the target volume.">bounding_volume::inside</a></code> means that all the last tested bounding volume was completely inside the view volume, so all the contained bounding volumes must also be inside and we can skip further testing. <code><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3b5043a582b7b2c17c9689fe51f26e1b6" title="Indicates that the tested volume intersects with the target volume.">bounding_volume::partial</a></code> means that the last test indicated that the bounding volume intersected the view volume, so some of the children may be visible and we must continue testing. <code><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3b0e1c4e170a8bdffb64c186e47a0f934" title="Indicates that the tested volume is entirely outside the target volume.">bounding_volume::outside</a></code> means the last test indicated the bounding volume was completely outside the view volume. However, there's normally no reason to call set with <code><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3b0e1c4e170a8bdffb64c186e47a0f934" title="Indicates that the tested volume is entirely outside the target volume.">bounding_volume::outside</a></code>, since the render method returns immediately. But who knows; it might be useful some day, so it's an allowed value.<p>
Setting the cull flag to <code><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce39c80ee2ecd82d3db6b70162fd87c8f08" title="Indicates that the tested volume is entirely inside the target volume.">bounding_volume::inside</a></code> in the <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> at the top of the traversal has the effect of disabling the culling tests. The behavior is undefined if the flag is not one of the allowed values.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">openvrml::browser</a> <p>
<a class="el" href="classopenvrml_1_1bounding__volume.html" title="A bounding volume.">openvrml::bounding_volume</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="f859bb0176f346dfe330076e988db664"></a><!-- doxytag: member="openvrml::rendering_context::draw_bounding_spheres" ref="f859bb0176f346dfe330076e988db664" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classopenvrml_1_1rendering__context.html#f859bb0176f346dfe330076e988db664">openvrml::rendering_context::draw_bounding_spheres</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Draw the bounding volumes or not. 
<p>
If true, then the renderer may draw the bounding volumes for each primitive. Or maybe not, so you shouldn't depend on this behavior. It does look kinda cool though. 
</div>
</div><p>
</div>
</div>
<address class="footer"><span class="images"><a href="http://web3d.org/x3d/"><img src="x3d-white-on-black.png" width="43" height="32" border="0" alt="X3D"></a><a href="http://opengl.org"><img src="OGL_sm_wht.png" width="68" height="32" border="0" alt="OpenGL"></a><a href="http://sourceforge.net/projects/openvrml"><img src="http://sourceforge.net/sflogo.php?group_id=7151&amp;type=11" width="120" height="30" border="0" alt="SourceForge.net"></a></span><a href="https://sourceforge.net/apps/trac/openvrml/newticket">Report error</a><br>Generated Thu Aug 13 02:49:21 2009 by Doxygen 1.5.8</address>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">_uacct = "UA-446379-2"; urchinTracker();</script>
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://sourceforge.net/apps/piwik/openvrml/" : "http://sourceforge.net/apps/piwik/openvrml/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
piwik_action_name = '';
piwik_idsite = 1;
piwik_url = pkBaseURL + "piwik.php";
piwik_log(piwik_action_name, piwik_idsite, piwik_url);
</script>
<object><noscript><p><img src="http://sourceforge.net/apps/piwik/openvrml/piwik.php?idsite=1" alt="piwik"/></p></noscript></object>
<!-- End Piwik Tag -->
</body>
</html>