(ZH-CN) LANPR 2019 初步计划链1

(EN) LANPR 2019 Plans链2



(ZH-CN) 2017SummerDevLogs / 2017夏天开发记录链4

(EN) Proposal: Blender NPR Line Rendering Improvement链5

(EN) Conclusion: Blender NPR Line Rendering Improvement链6

(ZH-CN) LANPR下一步的计划链7

(EN) LANPR Next Steps链8





www.wellobserve.com/NPR/2019/index.md 链1

www.wellobserve.com/NPR/2019/index_en.md 链2

www.wellobserve.com/NPR/about.md 链3

www.wellobserve.com/NPR/DevLogs/index.md 链4

www.wellobserve.com/NPR/2018Summer/Proposal.md 链5

www.wellobserve.com/NPR/2018Summer/Conclusion.md 链6

www.wellobserve.com/NPR/nextsteps_zh.md 链7

www.wellobserve.com/NPR/nextsteps_en.md 链8

https://1drv.ms/f/s!AkHWjiagaDuPqC4DP6p9WrdoRRzq 链9

新闻 / News / 2019

LANPR User Interface Thoughts.

Current State

In UI aspect, currently LANPR has some major draw backs:

  • Render is too complicated to set up, even for a very simple scene.
  • Lack of proper arrangement for so many options.
  • No presents.
  • Poorly integrated with Blender's internal UI structure. Need to switch back and forth to get parameters right.
  • Only have a very primitive composition support.
  • ...


Detailed Discussion



GSoC 2018 开发日志

GSoC Week9 Status

Hello everyone, here's my week 9 report!

Things have done

  1. Suprisingly with Darkdefender's Smooth Contour implementation (Here: http://www.labri.fr/perso/pbenard/publications/contours/), the result become a lot more better because the algorithm solves the front/back facing inconsistency problem using a geometry approach, it uses a modifier to achieve such function, the only problem is that geometry process is slower than expected, and it require subdivision. We are trying to optimize this in the future.
  2. Plan to use Ramer Doglas Prucker algorithm to simplify the vector curve. Here's a simple discription of this algorithm: http://karthaus.nl/rdp/ As for chainning, The only faster method is to use the same acceleration structure for occlusion test and intersection calculation, but even more memory is required in this method, as it will store more point linkers.
    • SVG export can then be achieved after this vector data is present.
    • User will be able to adjust how much simplification they want for the curve.
    • Vector programs such as Inkscape can reduce the amount of points and create bezier curve from them.
  3. Fixing the places that got pointed out during the code review.
  4. Fixed depth offset algorithm, but sometimes still look weird in viewport.

Next week

  1. Continue fixing errors in code review.
  2. Implememt vector chainning and reducing.

GSoC Week8 Status

Hello everyone, here's my week 8 report!

Things have done

  1. Multithread line occlusion test is OK. Now software calculation runs even faster than before. See 59d878a.
  2. Found out that overlapping edges will result in strange occlusion result, thus removing edge split modifier works better. For some models that already have split the edges, an option can be added to enable some pre-process the mesh before all the calculations start. (not added yet) See ca4144a.
  3. Object/material/collection-based line selection functions are added as planed, now user can select desired line types based on these three qualifiers, and preview the result in both DPIX and Software modes. This is a little bit like the one in Freestyle, but there are some difference in design to make it easier to use and to understand, it also includes some features that Freestyle don't have. See 54172dc. Also see this document for detail: Here
  4. Improved user interface, using the new grouping API (or something like that...), different arguments are now categorized and reused in different algorithm choices. Also improved intersection calculation display, allowing user to cleary understand the state. See 07b7fae.
  5. Try to fix F12 but no luck. (:'/ why..)
  6. Reported that gcc tool chain have some problems compiling the code, already fixed.

Next week

  1. Figure out a way to export vector data as svg. Users have feedback that shows the need of vector data for other composition software to work with.
    • This includes line chainning and image space reducing, which can then be exported as a fluent curve (or multi-segment straight lines).
  2. Make DPIX's data texture size into a auto-decide or user selectable one, now it is hard coded 2048*2048.

GSoC Week7 Status

Hello everyone, here's my week 7 report!

(Is wiki stable now? If so I can move the post there. Anywhay here's the link to my own host: http://www.wellobserve.com/#!NPR/2018Summer/logs/Week7.md)

Things have done

  1. Software rendering now working! (Still have some bugs, and it does not produce the exact same result as my standalone program. Need inspection)
  2. Intersection line calculation is also OK. the calculation result can then be displayed using DPIX realtime method.
  3. Removed old line style data in struct SceneLANPR. DPIX now uses the first line layer for style reference.
  4. Added support structure for object/material/collection-based line selection, function not implenented yet. (artists demand this)
  5. Dealed with many small bugs in software rendering, mainly:
    • Depth value incorrect due to inconsistent log->linear process 0065c90(now ok)
    • Earcut triangulate produce strange result. b612938(now use default BEAUTY method, seems ok)
    • normal matrix error a63777b(now fixed)

Actually I could consider all the basic functions in LANPR (both CPU and GPU side) are working now. What I need to do next should be making it more compatible with existing render pipeline, and of course doucument most of the main usages.

GSoC Week6 Status


I can't seem to find my page I created for week5 report on the new wiki (My account still works though). Maybe there have been an issue with it, so for now I just linked the report to my own website. If there's anything I'm missing please let me know.

The link to this report: http://www.wellobserve.com/#!NPR/2018Summer/logs/Week6.md

Things have done

  1. As planned, I spent most of time moving all calculation code for software rendering into lanpr (and made it compile). This also include code for object intersection and multithread occlusion test. Basically there're only display/drawing code left which I will rewite based on line layer system. See
  2. Changed Line composition ui for the new line layer system. LANPR's line layer design has some difference with freestyle.
  3. Disabled freestyle compile option but preserved freestyle edge/face mark data and it's api so we can still mark things and LANPR could also use the information. We don't need to re-write the whole thing. (the naming of "LineStyle"/"LineLayer" is a bit messy, I'll probably fix it this weekend.)
  4. .Used "uncrustify" to clean up the .c and .h files, now the content look a lot better. Thanks ideasman42 for suggesting this.
  5. Updated my coding Q&A page with some stupid questions. Check it here.

See these: