The last three weeks were mainly spent for bug fixes and consolidation of the Freestyle renderer.
- A bug in stroke rendering with round/square caps was fixed. A freeze of the program was caused by a stroke having two vertices that reside (exactly or almost) at the same position in the 3D space.
- The Parameter Editor mode was improved so that it accepts quote symbols within the names of scene render layers and linesets.
- Incorrect vertex normals in the case of smooth surfaces were fixed. Many thanks to Stéphane for his careful code review and bug report!
- Compilation errors with CMake on Linux were fixed by a patch from Écrivain through the BA Freestyle thread. Thanks!
In addition, the Freestyle Python API has been slightly extended by wrappers of the following Operators class methods in the C++ layer:
- getViewEdgeFromIndex(index): Returns a ViewEdge object in the current set of ViewEdges (0 <= index < Operators.getViewEdgesSize()).
- getChainFromIndex(index): Returns a Chain object in the current set of Chains (0 <= index < Operators.getChainsSize()).
- getStrokeFromIndex(index): Returns a Stroke object in the current set of Strokes (0 <= index < Operators.getStrokesSize()).
When you want to iterate over all objects in the current set of ViewEdges, Chains, or Strokes (for instance, in order to find the minimum and maximum Z depths, or sum up the lengths of all strokes), these API functions give a procedural programming way of accessing the objects, instead of relying on implicit side-effects of declarative rules (such as predicates and shaders).