Implements texture transforms
It's already possible to specify custom textures in both F3D and libf3d --texture-XXX options.
Some file formats are expecting textures to be Y-flipped like GLTF for example (Flipping the texture is already done in the GLTF importer, but not the reader).
It could be useful to allow the user to transform the texture coordinates to do take that into account.
VTK supports texture coordinates transform, by setting a specific key on the actor, like the code below:
double mat[] = { 1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1 };
actor->GetPropertyKeys()->Set(vtkProp::GeneralTextureTransform(), mat, 16);
VTK expects a 4x4 matrix, but in our case we only support 2D texture coordinates, so we should expose the option as a 3x3 matrix.
Suggested F3D option is --textures-transform, suggested libf3d option is model.textures_transform.
Ideally, the option should be a new type transform2d_t defined in types.h storing 9 float values, and parsing methods should support things like:
flipY->1, 0, 0, 0, -1, 0, 0, 0, 1rotate(x)->cos(x), -sin(x), 0, sin(x), cos(x), 0, 0, 0, 1translate(x, y)->1, 0, 0, 0, 1, 0, x, y, 1scale(x, y)->x, 0, 0, 0, y, 0, 0, 0, 1
Is anyone working on this issue? If not I would like to work on it.
you can start looking at it but it may conflicts with my ongoing work: https://github.com/f3d-app/f3d/pull/1609, so you may want to wait for this to be merged before actually implementting this.
@Yogesh9000 any news on this ?
No feedback from @Yogesh9000 , unassigning for now.
I'm going to start looking into this
Sure, just assigned to you!
Hi @samoncrief
Do you need help moving forward ?
Hi @samoncrief
Do you need help moving forward ?
Not at this time, I got absolutely swamped at work this past week and had little spare time
No worries! Thanks for the feedback.