<pre>&gt;The Blender Render API could have  GetSpheres(), GetNurbs(), <br>&gt;GetCCSubSurf(), GetCurve(), (etc.), and a GetTheRest().  The <br>&gt;translator will have a function that Blender calls, say, <br>&gt;StartRenderExport(). That function then calls each of the above API 
<br>&gt;functions it can use to pull in the scene data.<br><br>This is probably not the best way of doing this, for several reasons.<br><br>The issue here really is about accessing data in the most appropriate <br>manner for A. the object type at hand, and B. the renderer at hand.
<br><br>In Neqsus, for instance, I use a notion of &quot;object adapters&quot; (using the very handy PyProtocols)<br>that inspects the type of each object in the scene in turn, and then casts <br>(or in python vernacular, &quot;adapts&quot;) the object to a new object that supports 
<br>exporting of that particular data type.<br><br>The current Python API provides a fairly good template of what to do, at a high level.<br>When exporting data to renderman, I fetch all the objects in the scene first (and they&#39;re 
<br>provided as Bpy Objects. Object.getData() fetches the &quot;object-type-specific&quot; data (beit a curve,<br>a subdiv surface, NURBS object, etc.) and I can then use that to create the export data that I need.<br><br>
Now the itchy part comes in with mesh objects. With the current suite of modifiers, I have to disable the subdiv modifier <br>temporarily to get the base subdivision hull (NOT the subdivided data as blender sees it.) This is an example
<br>of where the Render API can help. By allowing an export plugin to set a series of flags, the Render API can handle the job of<br>turning that subdivision modifier off, or BETTER YET, simply sending the base hull, rather than the subdivided data on the
<br>getMeshData() call(hypothetical name, no nitpicking!).<br><br>Other things that leap to mind is how to deal with things like Metaballs, in the case of a Renderman renderer that has no <br>RiBlobby support. While, YES, the RiIgnoreError flag can be used when working with a renderer that doesn&#39;t support blobbies...
<br>This really isn&#39;t a workable option for creating the scene as it&#39;s been modelled. We want to see the whole scene.<br>The Render API can have a flag that&#39;s set for Metaballs that either exports metaball/RiBlobby data to the 
<br>renderer as actual RiBlobbies OR...actually fetch the blender-created mesh as a mesh data type (which the exporter will then correctly <br>interpret as a mesh and you can then choose to subdivide or not).<br><br>Bobby Parker
<br>ShortWave<br><br><br><br></pre>