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

Jonathan deWerd jjoonathan at gmail.com
Sat Aug 9 10:09:21 CEST 2014


http://wiki.blender.org/index.php/User:Jjoonathan/NURBS_UVEdit

Progress:
* Fixed algorithmic bug causing trim to fail if trim curve intersected vertex. This was a critical bug that prevented all but specially crafted trim curves from being created/imported.
* Added proper N-gon and per-loop normal support to the convert-to-mesh operator (higher quality meshes, supports curves with kinks)
* Added UV editor for trim curves. Visualization functionality is mostly complete; editing functionality is in progress (selections propagate but that's it).
* Fixed bug in .blend read/write code for NurbTrim that prevented undo manager from working and merged it back into my main soc-2014-nurbs branch
* Spent time trying to compile in C90 mode, but I can't seem to do any of 1. persuade clang to emit C90 nitpicky errors (variables declared at beginning of function etc) 2. build in Xcode with gcc 3. build using UNIX makefiles with gcc.

This weekend (i.e. before soft pencils-down):
* Finish edit functionality in UV Editor (add buttons to call add curve, move control points, simplify operators etc)
* Rotation surfaces
* Revive Zak's buggy loft/sweep NURBS surface creation code I recently unearthed in contrib

Next week (i.e. after soft pencils-down, before hard pencils-down):
* Get build working on a linux or windows computer (I think I had one working in December on Windows using VS) so that I can actually see the C90 errors
* Test and bugfix. I suspect there is enough to do on that front to keep me busy all week.




On Aug 2, 2014, at 2:34 AM, Jonathan deWerd <jjoonathan at gmail.com> wrote:
> Progress:
> * Finished trim curve tessellator [1]
> * Finished code to read/write trim curves from a .blend
> * Added loop-select modifier for NURBS control points (selects a U row or V column)
> * Minor UI tweaks (control mesh is thinner and Z-tested, NURBS weight is disambiguated from softbody weight, etc)
> * Wrote code to dump internal NURBS state from Blender into GLSL visualizer to track down a lingering bug (see below)
> 
> This weekend:
> * Track down the trim bug that is causing an explosion of trim polygon edges whenever a straight line runs parallel to an edge of a tessellation poly
> 
> Next week:
> * Rotation surfaces
> * Fix a bunch of style issues and warnings that Sergey brought to my attention
> * Prepare a squashed merge
> 
> [1] Two weeks ago I accidentally reported finishing trim curve tessellator when I meant to report that I had finished the surface tessellator. I later clarified the matter, but to resolve all doubt: this week both are finished. Well, except for the bug I mentioned, which is currently blocking the more complex demos.
> 
> On Jul 26, 2014, at 3:43 AM, 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
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/soc-2014-dev/attachments/20140809/3e9f64fb/attachment.htm 


More information about the Soc-2014-dev mailing list