Spline Vertex converter is very slow to parse

Hi developers!

I am working on my first full character and I ran into issue where my project takes significant time to load (15 minutes). And the problematic part is the “Spline Vertex (blinecalcvertex in SIF structure)” converter which I use a lot as a method to connect various outlines/regions between different parts of the body (say head<->neck<->body). And as you know I like to use additional conversions to ease the animation process so the project gets a bit complicated.

Take this simple spring animation as example: Rings.sif (1007.5 KB)
It has 9 rings. Each ring is influenced by rotation of all the previous ones which means that the “RING9” will have a hell a lot of conversions. This project without “Spline Vertex” converter takes 10 seconds to load which is understandable (a lot of conversions to parse). But if you add two outlines (FILL->FRONT/BACK) that are connected to previously parsed rings using Spline Vertex converter the loading time will increase to 40 seconds (4 times!). My CPU is Intel i5 650 which is old by current standards, but I do feel like there’s something wrong in the code.

All splines of “RINGS1-9” layers are exported, so I believe it means that they are already parsed by the time some other parameter is referencing to it. So 10 seconds is needed to parse all conversions of “RINGS1-9” layers but why does Spline Vertex converters of layers “FILL->FRONT/BACK” need so much time to parse it again escapes me.

Overall, I have two questions:

  1. Why does “Spline Vertex” converter needs to re-parse each of the spline when it’s already done? Or am I missing something and “located in defs (exported)” doesn’t mean “parsed”?
  2. Can loading time of the Spline Vertex converter be optimized? For example, by copying/referencing already exported structure instead of parsing it again. Of course if my first guess is correct.