[Soc-2014-dev] Weekly Report #10: NURBS Modernization

Dalai Felinto dfelinto at gmail.com
Sat Jul 26 15:41:11 CEST 2014


> I use MOI as my main nurbs to mesh converter and it uses ngons a lot not for holes but surfaces.

I think ngons is a generic term, not necessarily always referring to
the same data structure. (SketchUp ngons handles holes very nicely
too).

What I mean is, the ngons implementation in Blender doesn't support
holes. Blender's ngons is a Radial Edge implementation, so although it
could support holes, it was never fully implemented.

Cheers,
Dalai
--
blendernetwork.org/dalai-felinto
www.dalaifelinto.com


2014-07-26 10:31 GMT-03:00 David Fenner <d4vidfenner at gmail.com>:
> Moi is the best nurbs to poly converter i have ever found. Fast, robust,
> flexible, clean... Definitely somewhere to aim to.
>
> El jul 26, 2014 9:27 a.m., "claas kuhnen" <info at ckbrd.de> escribió:
>
>> I use MOI as my main nurbs to mesh converter and it uses ngons a lot not
>> for holes but surfaces.
>>
>> Claas
>>
>> On Jul 26, 2014 8:51 AM, "Dalai Felinto" <dfelinto at gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> > * Does anyone know of good example code for making a BMesh out of
>>> > n-gons? N-gons would make the meshes produced by Alt+C *much* cleaner.
>>>
>>> Be aware that N-gons don't support holes (at the moment), so you may
>>> get buggy meshes during this conversion. But as Sergey said, you don't
>>> need to convert the nurbs to ngons.
>>>
>>> Cheers,
>>> Dalai
>>> --
>>> blendernetwork.org/dalai-felinto
>>> www.dalaifelinto.com
>>>
>>>
>>> 2014-07-26 8:39 GMT-03:00 Sergey Sharybin <sergey.vfx at gmail.com>:
>>> > Hi,
>>> >
>>> > It's cool to hear you're doing progress, but what about committing the
>>> > stuff
>>> > to Git? Last commit was done on Monday and in the report you claim
>>> > having
>>> > progress since that. Commit the stuff even if it's not production
>>> > ready.
>>> > I've asked about this several times already.
>>> >
>>> > Before you go to importing or making improvements to curve->mesh
>>> > conversion
>>> > i'll demand wrapping existing code up, making so it's used in blende
>>> > (and
>>> > commit everything!)r and preparing demo files for this.
>>> >
>>> > As for ngon examples, you just need to fill in mpoly and mloop arrays
>>> > actually. MOD_boolean_util.c has examples (it operates with
>>> > DerivedMesh, but
>>> > it's almost the same as you need for curve->mesh conversion).
>>> >
>>> > Also, what are the plans for the next week?
>>> >
>>> >
>>> > On Sat, Jul 26, 2014 at 1:43 PM, Jonathan deWerd <jjoonathan at gmail.com>
>>> > wrote:
>>> >>
>>> >> This week was largely eaten up by a task that I thought would be a
>>> >> quick
>>> >> copy/paste job but turned into a morass of debugging math code.
>>> >> Fortunately
>>> >> that part is done -- and the result is much prettier smooth curves:
>>> >>
>>> >> http://wiki.blender.org/index.php/User:Jjoonathan/New_NURBS_Eval
>>> >>
>>> >> Progress This Week:
>>> >> * Finished the new evaluation code. Key features:
>>> >> * Computes any number of partial derivatives analytically
>>> >> * Immediate application 1: compute normals analytically = it looks
>>> >> smooth
>>> >> again :)
>>> >> * No nasty lighting artifacts near trim edges
>>> >> * No seams where curves touch/loop due to calculating normals at
>>> >> polygon
>>> >> corners
>>> >> * Immediate application 2: handle (literal) edge cases of eval points
>>> >> lying on knots correctly
>>> >> * Immediate application 3: uses 1/2 as many divisions, so possibly
>>> >> it's
>>> >> faster, although I didn't check
>>> >> * Future application: computing error bounds
>>> >> * Performed extensive verification of the new eval code
>>> >> * Mesh points coincide with Rhino surfaces
>>> >> * All 1st, 2nd (partial) derivatives agree with Mathematica's NURBS
>>> >> implementation (direction, amplitude correct).
>>> >> * Made progress on the trim curve tessellator.
>>> >> * NOTE: last week I mistakingly said that I had finished the trim
>>> >> curve
>>> >> tessellator when I actually meant to say that I had finished the
>>> >> surface
>>> >> tessellator.
>>> >> * Refactored the import code so that it can make detatched curves
>>> >> * Adjusted memory management & blenloader
>>> >> * The trim curve tessellator isn't a sticking point, I only got around
>>> >> to
>>> >> working on it again today. The eval code was the sticking point.
>>> >>
>>> >> Things that were done that don't officially constitute progress:
>>> >> * Spent Thursday finishing rotation surface & interpolation surface
>>> >> chapters in P&T
>>> >>
>>> >> Things that must be done before I can import the sample .3dm files:
>>> >> * Finish the trim curve tessellator
>>> >> * Rotation surfaces
>>> >>
>>> >> Things I could use help on:
>>> >> * Does anyone know of good example code for making a BMesh out of
>>> >> n-gons?
>>> >> N-gons would make the meshes produced by Alt+C *much* cleaner.
>>> >>
>>> >>
>>> >>
>>> >> On Jul 19, 2014, at 1:28 PM, claas kuhnen <info at ckbrd.de> wrote:
>>> >>
>>> >> So agree I am very excited about this
>>> >>
>>> >> On Jul 19, 2014 1:27 PM, "Sergey Sharybin" <sergey.vfx at gmail.com>
>>> >> wrote:
>>> >>>
>>> >>> Seems to be rather nice progress. Would be cool if all the bits are
>>> >>> committed and some .blend in shared which demonstrates the stuff.
>>> >>>
>>> >>>
>>> >>> On Sat, Jul 19, 2014 at 4:31 PM, Jonathan deWerd
>>> >>> <jjoonathan at gmail.com>
>>> >>> wrote:
>>> >>>>
>>> >>>> Progress:
>>> >>>> * Finished code to tessellate trim curves!
>>> >>>>         see:
>>> >>>> http://wiki.blender.org/index.php/User:Jjoonathan/NURBS_In_Blender
>>> >>>> * Rewrote knot code to match the conventions in the math literature,
>>> >>>> tested for compatibility by comparing meshes
>>> >>>> * Worked on adapting a better NURBS evaluation algorithm that can
>>> >>>> produce first and second derivatives (for normals and error bounds,
>>> >>>> respectively).
>>> >>>>         it's still buggy.
>>> >>>> * Worked further on the NurbEdge interface to handle imported trim
>>> >>>> curves
>>> >>>>         still working on code to match endpoints that are separated
>>> >>>> in
>>> >>>> UV space but coincide in R3 due to either wrapping in UV space
>>> >>>> (cyclic
>>> >>>> NURBS) or coving
>>> >>>>
>>> >>>> Todo:
>>> >>>> * Finish tracking down the NaN-producing bugs in the new surface
>>> >>>> evaluator
>>> >>>>         From there, should be easy to implement good normals
>>> >>>> * Finish NurbEdge so that it at least handles wrapping in UV space.
>>> >>>> This
>>> >>>> will allow importing of most .3dm files.
>>> >>>> * Implement revolution surfaces.
>>> >>>>         Demo Claas's hairdryer model!
>>> >>>>
>>> >>>> On Jul 12, 2014, at 11:14 AM, Jonathan deWerd <jjoonathan at gmail.com>
>>> >>>> wrote:
>>> >>>>
>>> >>>> > (Apologies if this is a duplicate email. I see a copy of this
>>> >>>> > email in
>>> >>>> > gmail's "sent" folder but I don't see one in my inbox, so I'm
>>> >>>> > sending
>>> >>>> > again.)
>>> >>>> >
>>> >>>> > Progress:
>>> >>>> > * Finished the code that traverses BReps from 3dm files and cuts
>>> >>>> > them
>>> >>>> > into surfaces
>>> >>>> > * 2D Trim curves import as Nurb objects that are appended to a
>>> >>>> > NurbList in their parent surface
>>> >>>> >       Just curves currently, I still have to get multi-part loops
>>> >>>> > working
>>> >>>> >       Also they don't seem to be preserved by DNA even after
>>> >>>> > calling
>>> >>>> > makesdna...
>>> >>>> > * Moved surf_gridmesh into bf_blenkernel, promoted curve.c to
>>> >>>> > curve.cpp (for future OpenNurbs use), fixed a few small bugs that
>>> >>>> > caused,
>>> >>>> > moved the GLUT debug code into blender/tests, convinced CMake to
>>> >>>> > build and
>>> >>>> > link it
>>> >>>> > * Wrote, debugged the method that builds the displist from the
>>> >>>> > gridmesh
>>> >>>> > * Timed it, see pretty graph a few emails back
>>> >>>> > * Started writing NurbEdge structure to handle in general the
>>> >>>> > sewing
>>> >>>> > of trim edges and cyclic edges (e.g. so that spheres don't have
>>> >>>> > seams)
>>> >>>> >
>>> >>>> > Next up:
>>> >>>> > * I still need to finish the code that tessellates the trim
>>> >>>> > curves. I
>>> >>>> > didn't get much time to work on it today, so I'm planning to work
>>> >>>> > on it
>>> >>>> > tomorrow as well.
>>> >>>> > * Get trim curves to load/save from .blend files by figuring out
>>> >>>> > what
>>> >>>> > I'm doing wrong with makesdna
>>> >>>> > * Finish NurbEdge interface for defining edges to sew, get it in
>>> >>>> > DNA
>>> >>>> > as well
>>> >>>> > * Use NurbEdge to implement revolution surfaces
>>> >>>> >
>>> >>>>
>>> >>>> _______________________________________________
>>> >>>> Soc-2014-dev mailing list
>>> >>>> Soc-2014-dev at blender.org
>>> >>>> http://lists.blender.org/mailman/listinfo/soc-2014-dev
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> With best regards, Sergey Sharybin
>>> >>>
>>> >>> _______________________________________________
>>> >>> Soc-2014-dev mailing list
>>> >>> Soc-2014-dev at blender.org
>>> >>> http://lists.blender.org/mailman/listinfo/soc-2014-dev
>>> >>>
>>> >> _______________________________________________
>>> >> Soc-2014-dev mailing list
>>> >> Soc-2014-dev at blender.org
>>> >> http://lists.blender.org/mailman/listinfo/soc-2014-dev
>>> >>
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> Soc-2014-dev mailing list
>>> >> Soc-2014-dev at blender.org
>>> >> http://lists.blender.org/mailman/listinfo/soc-2014-dev
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > With best regards, Sergey Sharybin
>>> >
>>> > _______________________________________________
>>> > Soc-2014-dev mailing list
>>> > Soc-2014-dev at blender.org
>>> > http://lists.blender.org/mailman/listinfo/soc-2014-dev
>>> >
>>> _______________________________________________
>>> Soc-2014-dev mailing list
>>> Soc-2014-dev at blender.org
>>> http://lists.blender.org/mailman/listinfo/soc-2014-dev
>>
>>
>> _______________________________________________
>> Soc-2014-dev mailing list
>> Soc-2014-dev at blender.org
>> http://lists.blender.org/mailman/listinfo/soc-2014-dev
>>
>
> _______________________________________________
> Soc-2014-dev mailing list
> Soc-2014-dev at blender.org
> http://lists.blender.org/mailman/listinfo/soc-2014-dev
>


More information about the Soc-2014-dev mailing list