Sorry it took so long to reply- I forgot I'd posted this topic.
Just out of interest, I would think SetPositionArray and SetRotationArray is using SetMatrixArray with the other attributes stripped out, that is just setting what you need, which would be the quickest way.
To be more specific about my problem, the project is a large-scale 6DOF space shooter. It's fully data-oriented, and I've my own class for representing transformations. Each minimesh is used to render all mesh instances of a single type. So my transforms are passed to Truevision via SetPositionArray & SetRotationArray, or just SetMatrixArray (I'm not using scale yet).
I need to be able to get the up/right/forward vectors of the rotation for each object, of which there are be tens of thousands, possibly several times per frame. Converting from Euler to matrix every time wasn't gonna cut it, so I adapted a quaternion class, and used that in my transforms in lieu of an Euler vector. In theory, this would allow me to store rotations compactly, while letting me retrieve the up/right/forward vectors quickly, and it'd also eliminate any trig function calls when passing my transforms to Truevision (via SetMatrixArray).
In practice, Truevision must infer the Euler rotation from each matrix when you call SetMatrixArray, as per that quote from Sylvian. Makes sense, but it kind of screws me over. Euler angles are totally worthless for this project. Truevision's insistence on making them available all the times must be what's causing the massive performance hit.
If you need to manipulate minimeshes per each frame, which it seems that you might be, do the manipulation in the shader to keep the fps up.
I do need to change the transform of all minimesh instances each frame. Can you please explain what exactly you mean here? I'm new to real-time graphics.
Also is there an engine out there available to indie developers which is faster at minimesh rendering than TV3D? Which ship would you jump to?
There's no such engine that I know of. I'd have to start learning raw DirectX.