Towards stabilization
The past two days have been important in stabilizing the SWIG replacement. I have had to face many issues while testing. Style modules with Python shaders would not “hold” the stroke attributes and some valid modules would not show up at all. By carefully studying which data structures needed to be given by reference rather than value and by making sure that the most important methods were available from the Python interpreter, I was able to correct most problems. Here is an example of a tractor model rendered using the latest revision (the style modules are respectively thickness_fof_depth_discontinuity.py, split_at_highest_2d_curvatures.py and cartoon.py):
I tested all of the original style modules tonight, comparing the results produced by Blender with the one created by the native Freestyle application:
| Style module | Status |
| anisotropic_diffusion.py | WORKS |
| apriori_and_causal_density.py | NOTHING: steerable ViewMap level doesn’t exist |
| apriori_density.py | NOTHING: steerable ViewMap level doesn’t exist |
| backbone_stretcher.py | WORKS |
| blueprint_circles.py | INCOMPLETE: wrong shape (incorrect getPoint support ?) |
| blueprint_ellipses.py | INCOMPLETE: wrong shape (incorrect getPoint support ?) |
| blueprint_squares.py | INCOMPLETE: wrong shape (incorrect getPoint support ?) |
| cartoon.py | WORKS |
| contour.py | WORKS |
| curvature2d.py | WORKS |
| external_contour.py | WORKS |
| external_contour_sketchy.py | NOTHING: GetTimeStampCF is not implemented |
| external_contour_smooth.py | WORKS |
| haloing.py | NOTHING: TypeError: an integer is required |
| ignore_small_occlusions.py | WORKS |
| invisible_lines.py | WORKS |
| japanese_bigbrush.py | WORKS |
| long_anisotropically_dense.py | NOTHING: TypeError: an integer is required |
| multiple_parameterization.py | NOTHING: getFEdge(i1, i2) is not implemented |
| nature.py | WORKS |
| near_lines.py | WORKS |
| occluded_by_specific_object.py | NOTHING: can’t select object with id |
| polygonalize.py | WORKS |
| qi0.py | WORKS |
| qi0_not_external_contour.py | WORKS |
| qi1.py | WORKS |
| qi2.py | WORKS |
| sequentialsplit_sketchy.py | INCOMPLETE ? stroke issue |
| sketchy_multiple_parameterization.py | NOTHING: GetTimeStampCF is not implemented |
| sketchy_topology_broken.py | NOTHING: GetTimeStampCF is not implemented |
| sketchy_topology_preserved.py | NOTHING: GetTimeStampCF is not implemented |
| split_at_highest_2d_curvatures.py | INCOMPLETE ? color/stroke issue |
| split_at_tvertices.py | INCOMPLETE ? color/stroke issue |
| stroke_texture.py | WORKS |
| suggestive.py | NOTHING: no warning either |
| thickness_fof_depth_discontinuity.py | WORKS |
| tipremover.py | WORKS |
| tvertex_remover.py | WORKS |
| uniformpruning_zsort.py | WORKS |
I consider the system stable enough to work on replacing lib3ds now. Hopefully, the job won’t be as tricky as getting SWIG out was. I’ll keep you all updated on that progress soon.


