https://brlcad.org/w/index.php?title=Implicit_to_NURBS_conversion&feed=atom&action=historyImplicit to NURBS conversion - Revision history2024-03-28T18:08:44ZRevision history for this page on the wikiMediaWiki 1.32.2https://brlcad.org/w/index.php?title=Implicit_to_NURBS_conversion&diff=2671&oldid=prevSean: CSG to NURBS conversion moved to Implicit to NURBS conversion: CSG is an operator, not a type2011-03-24T13:49:35Z<p><a href="/wiki/CSG_to_NURBS_conversion" class="mw-redirect" title="CSG to NURBS conversion">CSG to NURBS conversion</a> moved to <a href="/wiki/Implicit_to_NURBS_conversion" title="Implicit to NURBS conversion">Implicit to NURBS conversion</a>: CSG is an operator, not a type</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #222; text-align: center;">Revision as of 13:49, 24 March 2011</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>Seanhttps://brlcad.org/w/index.php?title=Implicit_to_NURBS_conversion&diff=2665&oldid=prevSean: refs2011-03-24T13:37:47Z<p>refs</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Revision as of 13:37, 24 March 2011</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l5" >Line 5:</td>
<td colspan="2" class="diff-lineno">Line 5:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>This GSoC task would be to take the current CSG implicit primitive to BREP conversion routines, complete any missing features (like the ability to represent shapes at locations other than the origin) and make the results robust (valid CSG primitives would generate valid BREPs). The test will be take our example CSG models, convert the CSG primitives to BREPs while preserving the same tree structure, and test to confirm that the raytrace does not change. If it does not, that means the conversion logic has faithfully represented the original data as NURBS data.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>This GSoC task would be to take the current CSG implicit primitive to BREP conversion routines, complete any missing features (like the ability to represent shapes at locations other than the origin) and make the results robust (valid CSG primitives would generate valid BREPs). The test will be take our example CSG models, convert the CSG primitives to BREPs while preserving the same tree structure, and test to confirm that the raytrace does not change. If it does not, that means the conversion logic has faithfully represented the original data as NURBS data.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Requirements<del class="diffchange diffchange-inline">:</del></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">=References=</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* src/librt/primitives/** (each primitive is in a separate subdir, see rt_*_brep() functions)</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">=</ins>Requirements<ins class="diffchange diffchange-inline">=</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Familiarity with C/C++</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Familiarity with C/C++</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*(optional) Solid mathematical background (in case NURBS related issues appear)</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*(optional) Solid mathematical background (in case NURBS related issues appear)</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">Difficulty: low</del></div></td><td colspan="2"> </td></tr>
</table>Seanhttps://brlcad.org/w/index.php?title=Implicit_to_NURBS_conversion&diff=2567&oldid=prevStarseeker: finish up CSG->Brep2011-03-11T17:09:58Z<p>finish up CSG->Brep</p>
<p><b>New page</b></p><div>The majority of geometric primitives implemented in BRL-CAD are implicit primitives - that is, they are descriptions of volumes and not surfaces enclosing volumes. (A concrete example would be storing a sphere as a center and a radius, rather than a collection of triangles that describe the surface of the sphere). This representation is extremely compact and good for guaranteeing solidity, but has distinct disadvantages when it comes to interactive shaded displays and conversion to other formats.<br />
<br />
There has been a lot of work done in BRL-CAD to support representing implicit primitives as NURBS boundary representations. This increases the range of options available for conversion, and sets up possibilities for other features (like 3D shaded displays). We currently have basic implementations for most of our primitives as NURBS, but only located at the mathematical origin and not fully robust (for example, the pipe primitive only works with certain parameter settings, and should work for all pipes).<br />
<br />
This GSoC task would be to take the current CSG implicit primitive to BREP conversion routines, complete any missing features (like the ability to represent shapes at locations other than the origin) and make the results robust (valid CSG primitives would generate valid BREPs). The test will be take our example CSG models, convert the CSG primitives to BREPs while preserving the same tree structure, and test to confirm that the raytrace does not change. If it does not, that means the conversion logic has faithfully represented the original data as NURBS data.<br />
<br />
Requirements:<br />
<br />
*Familiarity with C/C++<br />
*(optional) Solid mathematical background (in case NURBS related issues appear)<br />
<br />
Difficulty: low</div>Starseeker