I don’t know about this “asset” word. I wish people would avoid it. It bothers me truly:wink:
I bookmarked this post. So I can find your stuff. Although I don’t understand why or how C survives outside of some very specific applications!
I kind of have an interest in 3-D math libraries. I’ve seen so many in my career, and they all kind of bother me. I tried to make my own some years ago for a quirky project, and the results were interesting:
I’ve been trying to think how to rebrand it to work with COLLADA-DOM projects if necessary. Or the Daedalus project I am working on for that matter. What I like about it are 2 things: 1) math classes always use their own classes in a closed system. But this 1 file library maps to native C arrays. So “float v” you can use it with that, or any type for that matter, and any size. It can also map to sub arrays inside of 2-D matrix arrays. So it can map to a 3x2 array anywhere inside “float m” and it can map to pointers also if you tell it the sizes, although that’s a little less type safe. The other thing, 2) that I don’t like about vector/matrix libraries is they often use operator overloading, that makes it so “v1+v2” looks like it’s adding two numbers at a glance. You cannot tell by looking the real nature of cost of the code. And you cannot tell scalar operations apart from vector ones, unless you know their types. That’s why for vector/matrix math I prefer proper methods over operators, something that gives the idea that there is for-loop like procedures underway.
(The classes themselves are actually empty. They map to the address, and assume the vector/matrix starts at their address. And with “empty-base-optimization” you can instantiate a class that also has traditional x,y,z members.)
P.S. You know that 1.5 is rarely used for 3-D art applications. I mean it will eventually take hold if COLLADA survives, but right now COLLADA seems stuck in the past, and technically they are separate strains, but you just don’t see many applications or files using 1.5.0. I’m told it’s popular with roboticists. I guess for the IK feature set, but I don’t know. I imagine if using a string reading framework then the differences would not be hard to code around. But strings are the bottom of the barrel from a maintainability point of view. Supporting both versions (and future versions) is quite a headache for COLLADA-DOM, precisely because it’s a such better system than strings. But at the same time you cannot implement the same code twice for every version. You have to tackle the problems with C++'s templates, or in the generator. Ultimately I want to generate configuration files for “synthetic schemas” that will blend 1.4.1 and 1.5.0 and future versions, unless there is a big rift, into a single virtual schema.