Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implements texture transforms #1643

Open
Meakk opened this issue Sep 30, 2024 · 2 comments
Open

Implements texture transforms #1643

Meakk opened this issue Sep 30, 2024 · 2 comments
Assignees
Milestone

Comments

@Meakk
Copy link
Contributor

Meakk commented Sep 30, 2024

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, 1
  • rotate(x) -> cos(x), -sin(x), 0, sin(x), cos(x), 0, 0, 0, 1`
  • translate(x, y) -> 1, 0, 0, 0, 1, 0, x, y, 1
  • scale(x, y) -> x, 0, 0, 0, y, 0, 0, 0, 1
@mwestphal mwestphal added this to the 3.1.0 milestone Sep 30, 2024
@Yogesh9000
Copy link
Contributor

Is anyone working on this issue? If not I would like to work on it.

@mwestphal
Copy link
Contributor

you can start looking at it but it may conflicts with my ongoing work: #1609, so you may want to wait for this to be merged before actually implementting this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: To do
Development

No branches or pull requests

3 participants