Hi all,

Java images are defined such that (0, 0) references the top left most pixel of the image. In JavaFX, the texture coordinate system for 3D objects is defined with its U axis increasing from left to right and the V axis increasing from top to bottom. Hence a texture coordinate of (0, 0) references pixel (0, 0), which is the top left corner of the texture, and a texture coordinate of (1, 1) references the bottom right corner of the texture. This system matches the layout of the image, which is stored such that the top-most row of pixels ends up in memory in row 0. It also matches with the default 3D coordinate system used in JavaFX where the X axis increases from left to right and the Y axis increases from top to bottom.

We understand that this V-down coordinate system maybe confusing or hard to work with for some 3D content developers when using models that are defined with Y-up. We could add a V-up option (as a boolean property of Shape3D). If set, we would flip the texture coordinates when rendering, such that: V' = 1 - V.

However it is very late in this release to consider any more changes, so our plan is to add this option in a post FX 8 release if it turns out to be needed. Please let us know right away if there is a compelling need for V-up support in the FX 8 release.

- Kevin and Chien

Reply via email to