Re: CSG operations on textured meshes -- something better than CGAL?
Jon Watte <[email protected]> Tue, 13 May 2014 16:41:30 -0700
| Newsgroups | gmane.games.devel.algorithms |
|---|---|
| Message-ID | <CAJgyHGOJoRJdr6qgQNXvcYg=TsdcC=UMTo4qM9Hhxev9z=eJ7A@mail.gmail.com> |
--===============4460117600671011824== Content-Type: multipart/alternative; boundary=001a11c1ec1c6e6d6204f9509a35 --001a11c1ec1c6e6d6204f9509a35 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable > > I don=E2=80=99t believe you will be able to use your existing uv values w= ith the > mesh that results from this csg operation The operations I want to do are rigid and well conditioned and do not stretch or generate new surfaces compared to the input meshes. They may invert the winding of triangles, though (so normal maps would have to be flipped) in the case of a cut-out. I also need to preserve vertex bone weighting, too... something that can preserve UV should be able to preserve that, too. Worst case, I put in a vertex ID value in the UV channel and loop up the other parameters based on that. So... no general purpose parameterized trimesh CSG library available? Sincerely, jw Sincerely, Jon Watte -- "I find that the harder I work, the more luck I seem to have." -- Thomas Jefferson On Thu, May 8, 2014 at 12:28 PM, Chris Green <[email protected]>wrot= e: > I don=E2=80=99t believe you will be able to use your existing uv values = with the > mesh that results from this csg operation =E2=80=93 it has a different to= pology, > and there will be changes in the ratios of the areas of different parts o= f > the model, with really bumpy areas of the mesh being smoothed out, etc. > You=E2=80=99ll even have brand new areas emerge that don=E2=80=99t have c= orresponding areas > on the original model, as holes are filled in, etc. > > > > What might work better is to just do the csg operation and generate a uv > atlas for the resultant mesh. You can then generate a new texture map for > this uv parametization by sampling from the original one, in a similar > manner to the way in which people produce bumpmaps mapping the normals of > highly tessellated models onto low-detail models. > > > > > > > > *From:* Jon Watte [mailto:[email protected]] > *Sent:* Thursday, May 08, 2014 11:08 AM > *To:* Game Development Algorithms > *Subject:* [Algorithms] CSG operations on textured meshes -- something > better than CGAL? > > > > I have a triangle mesh composed of many submeshes with different > textures/materials. This mesh may not be a 2-manifold -- it may have open > edges. Typical game art. > > > > I now want to create a 3mm thick shell of this mesh. As an approximation, > taking each triangle, and extrude it back along the normal of each vertex= , > and union all of those generated chopped pyramids would be an approximati= on > of what I want. If I do literally that, and self-union the result, then > that should resolve the self-intersection problems I'll run into along > narrow sharp creases etc. > > > > I can't find any library to do this, though. CGAL has some fairly robust > functions on NEF polyhedra, but those polyhedra don't seem to allow > parameterization (which is academic speak for texture coordinates that ma= y > have discontinuities across edges.) > > > > So, what are some robust CSG libraries available that work on such > game-style meshes, preserving texture coordinates? > > > > (And actually, I don't have one such mesh; I have > 120 million such > meshes, so a by-hand or even script-the-Max-shell-modifier solution is > unlikely to work. I do have hundreds of Linux servers at my disposal, > though.) > > > > Sincerely, > > Jon Watte > > > -- > "I find that the harder I work, the more luck I seem to have." -- Thomas > Jefferson > > > -------------------------------------------------------------------------= ----- > Is your legacy SCM system holding you back? Join Perforce May 7 to find > out: > • 3 signs your SCM is hindering your productivity > • Requirements for releasing software faster > • Expert tips and advice for migrating your SCM now > http://p.sf.net/sfu/perforce > _______________________________________________ > GDAlgorithms-list mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_name=3Dgdalgorithms-li= st > --001a11c1ec1c6e6d6204f9509a35 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px = 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-l= eft-style:solid;padding-left:1ex"><span style=3D"color:rgb(31,73,125);font-= family:Calibri,sans-serif;font-size:14.399999618530273px">I don=E2=80=99t b= elieve you will be able to use your existing uv values with the mesh that r= esults from this csg operation</span></blockquote> <div><br></div><div>The operations I want to do are rigid and well conditio= ned and do not stretch or generate new surfaces compared to the input meshe= s. They may invert the winding of triangles, though (so normal maps would h= ave to be flipped) in the case of a cut-out.</div> <div>I also need to preserve vertex bone weighting, too... something that c= an preserve UV should be able to preserve that, too. Worst case, I put in a= vertex ID value in the UV channel and loop up the other parameters based o= n that.</div> <div><br></div><div>So... no general purpose parameterized trimesh CSG libr= ary available?=C2=A0</div><div><br></div><div>Sincerely,</div><div><br></di= v><div>jw</div><div><br></div></div><div class=3D"gmail_extra"><br clear=3D= "all"> <div><div dir=3D"ltr"><font face=3D"courier new, monospace"><br><br><br><fo= nt>Sincerely,</font><br><br><font>Jon Watte</font><br><br><br>--<br>"<= span style=3D"color:rgb(0,0,0)">I find that the harder I work, the more luc= k I seem to have." -- Thomas Jefferson</span></font></div> </div> <br><br><div class=3D"gmail_quote">On Thu, May 8, 2014 at 12:28 PM, Chris G= reen <span dir=3D"ltr"><<a href=3D"mailto:[email protected]" targ= et=3D"_blank">[email protected]</a>></span> wrote:<br><blockquote= class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc soli= d;padding-left:1ex"> <div lang=3D"EN-US" link=3D"blue" vlink=3D"purple"> <div> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">I don=E2=80=99t believe y= ou will be able to use your existing uv values with the mesh that results f= rom this csg operation =E2=80=93 it has a different topology, and there will be changes in the ratios of the areas of different parts of the model= , with really bumpy areas of the mesh being smoothed out, etc. You=E2=80=99= ll even have brand new areas emerge that don=E2=80=99t have corresponding a= reas on the original model, as holes are filled in, etc.<u></u><u></u></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></spa= n></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">What might work better is= to just do the csg operation and generate a uv atlas for the resultant mes= h. You can then generate a new texture map for this uv parametization by sampling from the original one, in a similar manner to the way in which= people produce bumpmaps mapping the normals of highly tessellated models o= nto low-detail models. <u></u><u></u></span></p><div class=3D""> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></spa= n></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></spa= n></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></spa= n></p> <p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:"= ;Tahoma","sans-serif"">From:</span></b><span style=3D"font-s= ize:10.0pt;font-family:"Tahoma","sans-serif""> Jon Watt= e [mailto:<a href=3D"mailto:[email protected]" target=3D"_blank">jwatte@gmai= l.com</a>] <br> <b>Sent:</b> Thursday, May 08, 2014 11:08 AM<br> <b>To:</b> Game Development Algorithms<br> <b>Subject:</b> [Algorithms] CSG operations on textured meshes -- something= better than CGAL?<u></u><u></u></span></p> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div><div> <p class=3D"MsoNormal">I have a triangle mesh composed of many submeshes wi= th different textures/materials. This mesh may not be a 2-manifold -- it ma= y have open edges. Typical game art.<u></u><u></u></p><div><div class=3D"h5= "> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal">I now want to create a 3mm thick shell of this mesh.= As an approximation, taking each triangle, and extrude it back along the n= ormal of each vertex, and union all of those generated chopped pyramids wou= ld be an approximation of what I want. If I do literally that, and self-union the result, then that should resolv= e the self-intersection problems I'll run into along narrow sharp creas= es etc.<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal">I can't find any library to do this, though. CGA= L has some fairly robust functions on NEF polyhedra, but those polyhedra do= n't seem to allow parameterization (which is academic speak for texture= coordinates that may have discontinuities across edges.)<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal">So, what are some robust CSG libraries available tha= t work on such game-style meshes, preserving texture coordinates?<u></u><u>= </u></p> </div> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal">(And actually, I don't have one such mesh; I hav= e > 120 million such meshes, so a by-hand or even script-the-Max-shell-m= odifier solution is unlikely to work. I do have hundreds of Linux servers a= t my disposal, though.)<br clear=3D"all"> <u></u><u></u></p> <div> <div> <p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">= <br> <br> Sincerely,<br> <br> Jon Watte<br> <br> <br> --<br> "<span style=3D"color:black">I find that the harder I work, the more l= uck I seem to have." -- Thomas Jefferson</span></span><u></u><u></u></= p> </div> </div> </div> </div></div></div> </div> </div> <br>-----------------------------------------------------------------------= -------<br> Is your legacy SCM system holding you back? Join Perforce May 7 to find out= :<br> &#149; 3 signs your SCM is hindering your productivity<br> &#149; Requirements for releasing software faster<br> &#149; Expert tips and advice for migrating your SCM now<br> <a href=3D"http://p.sf.net/sfu/perforce" target=3D"_blank">http://p.sf.net/= sfu/perforce</a><br>_______________________________________________<br> GDAlgorithms-list mailing list<br> <a href=3D"mailto:[email protected]">GDAlgorithms-lis= [email protected]</a><br> <a href=3D"https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list" = target=3D"_blank">https://lists.sourceforge.net/lists/listinfo/gdalgorithms= -list</a><br> Archives:<br> <a href=3D"http://sourceforge.net/mailarchive/forum.php?forum_name=3Dgdalgo= rithms-list" target=3D"_blank">http://sourceforge.net/mailarchive/forum.php= ?forum_name=3Dgdalgorithms-list</a><br></blockquote></div><br></div> --001a11c1ec1c6e6d6204f9509a35-- --===============4460117600671011824== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs --===============4460117600671011824== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ GDAlgorithms-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list Archives: http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list --===============4460117600671011824==--