I appreciate all the time you’ve spent on this. What I am doing, I understand is atypical and may not make much sense without complete context. I am trying to do some artistic rendering. I have a few materials that are based on the style of particular artists and doing a projection like this is critical to getting the look right and having them be usable in a 3D environment.
Hopefully this will clear things up. Imagine you do a Screen Space Aligned UV projection on a sphere. You get a perfectly flat projection on a 3D object. However, the UVs are bound to the screen (camera). If you dolly the camera, the texture seems to scale on the object. If you truck, tilt, pan, whatever the camera, the texture appears to slide across the surface.
If you take that same sphere and do a planar UV projection, it will not slide or scale on the object. If you are looking straight down the projection vector you see is a reasonably flat projection with a little stretching on polygons that have a higher incidence angle with projection vector. Doing a planar projection along the camera vector gives a reasonably similar result to a screen aligned UV projection, for my purposes, and eliminates the sliding and scaling texture issues of screen space projection.
So the result I am looking to achieve is a planar UV projection that is always faces the camera. The texture I am projecting is a fine pattern and in the experimenting I’ve been doing the last few days, it seems to look much better if I can “lock” it to the surface and eliminate the sliding that happens with a screen space projection.
Here’s where the ceiling of my math knowledge and understanding of the tools comes in. I get the concept of various spaces, and I get transform matrices in so much as what identity is and how they produce a transform on an object. Going from 2x2 screen space to 3x3 world or local to 2x2 UV, I haven’t been able to wrap my head around, other than rotating the UVs to a cardinal axis in the material so I can eliminate one axis and produce a UV coordinate. InvertTransform3x3Matrix is not documented and though I guess it should be self explanatory, I don’t really know what it does. I did mess around with it trying to figure it out a couple days ago, but I don’t know what to use for a W coordinate for the screen space UVs, what the basis vectors for my space are supposed to look like, by that I mean I assume my space isn’t just local, it has to be relative to the camera in some way, or how to go from whatever the result is to a 2D coordinate I can plug into a texture.