Open RichardTea opened 2 years ago
I think that change is not wanted for GDTF and MVR.
Mirroring is often used for Truss Construction from various CAD Plattforms.
For the other operations. Have in mind that GDTF is not only targeting lighting devices, where for sure you don't need this operation. But we also support other object types with GDTF. One example that I wan't to point out is a tree. When you want to use multiple tree in a 3D scene, you can use only one mesh of the tree and than apply scaling and shear to make each instance of the tree look different.
Skew and Shear is explicitly prohibited by most 3D modelling and rendering engines. May even be all of them.
Including glTF, Vectorworks, Godot, Unity, Unreal Engine and more. I'm not actually aware of any that allow it.
If those transforms are permitted then Vectorworks cannot ever implement GDTF fully.
We will not prohibit Skew & Shear even though no one is using it right now. We see a future use that needs to be further defined.
Nothing CAN support these types of 3D transform. Khronos prohibit them for a reason - and they know more about 3D than any of us ever will (other than Epic!)
A hierarchy that includes Skew and Shear transforms is not possible for a lighting engine to illuminate or cast light in any meaningful way, as it has no physical meaning.
Can you please provide a specific example of where a 3D skew or shear transform is necessary, desirable or even possible to meaningfully render? Note that 3D skew/shear has nothing to do with projector/camera lenses and keystoning.
Skew and shear transforms cannot be decomposed to the usual translation, rotation and scale, so cannot be shown by most CAD applications.
I would also recommend prohibiting Mirror in both GDTF and MVR transforms as these often cause rendering issues, especially when texturing, and many 3D UIs (including the GDTF Builder) do not permit a user to mirror objects at all, so cannot show a user that it is mirrored.
An object that has been mirrored on should have the mirroring part of the transform baked into the mesh at export, to ensure all importers and renderers display and edit it correctly.