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

Add flip/mirror option to GridMap #5883

Open
matt-testing opened this issue Dec 1, 2022 · 7 comments
Open

Add flip/mirror option to GridMap #5883

matt-testing opened this issue Dec 1, 2022 · 7 comments
Labels

Comments

@matt-testing
Copy link

matt-testing commented Dec 1, 2022

Describe the project you are working on

3d sidecroller (arguably 2.5d) using gridmap to build levels composed of 3d tiles, used analogously to a 2d tilemap.

Describe the problem or limitation you are having in your project

To create something as simple as a tileable 2d box, a mesh library of 9 unique models is necessary. For more complex tilesets (i.e. including interior corners, holes, slopes) the number of models quickly becomes hard to parse in the gridmap tile selection panel, making 'drawing' complex shapes unintuitive. Having the option to mirror while 'drawing' the gridmap drastically reduces the number of necessary unique models to achieve similar results to 2d tilemaps.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

sensical

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

Add mirroring options to the gridmap UI in conjunction with the current rotation options.
Implementation was previously prototyped by @Varicus and @Xenoamor back in 2019, code examples, prototypes, and discussion are in the link below.

godotengine/godot#31340 (comment)

If this enhancement will not be used often, can it be worked around with a few lines of script?

It would probably be used with more frequency than the current 'rotate' options, since rotated tiles will show seams in ways that mirrored tiles will not.

Is there a reason why this should be core and not an add-on in the asset library?

It should be a core function of Gridmap alongside tile rotation

@Mickeon
Copy link

Mickeon commented Dec 1, 2022

I was about to say "Uhm, actually, this is a duplicate of #5158" but this is GridMap. I feel like this feature would suit GridMap even more than TileMap.

@KoBeWi KoBeWi added the topic:3d label Dec 1, 2022
@Calinou
Copy link
Member

Calinou commented Dec 1, 2022

One issue with mirrored tiles is that the texture pattern will be flipped. This is sometimes what you want, but not always.

@matt-testing
Copy link
Author

@Calinou can you clarify why you feel that is an "issue?" I can't think of a use case for the ability to mirror a 3d model without also mirroring its UV information, the end result being that UV mapping is still correctly aligned with the model.

@Calinou
Copy link
Member

Calinou commented Dec 2, 2022

@Calinou can you clarify why you feel that is an "issue?" I can't think of a use case for the ability to mirror a 3d model without also mirroring its UV information, the end result being that UV mapping is still correctly aligned with the model.

If you have a tile with a cobblestone texture for instance, you may not want the cobblestone texture to appear flipped on flipped variants of the same tile. That is, if you're using tile flipping to reduce the number of unique variations you need to create manually.

This is not a problem in 100% of cases, but it's a potential issue to keep in mind.

@matt-testing
Copy link
Author

It seems like World Triplanar Mapping would be the solution for models whose texture map is desired to display independent of mesh rotation/scale. I would expect mirrored meshlib objects with Triplanar mapping to not mirror the texture, in this proposal's implementation.

@Megalomaniak
Copy link

I would expect mirrored meshlib objects with Triplanar mapping to not mirror the texture, in this proposal's implementation.

Indeed.

Not directly related to this but I'd also like to be able to have child nodes for/per tiles when creating GridMaps. Could be useful for having Position 3D nodes as spawn points for procedural generation and/or pseudo randomly picked and placed objects. Could also then include such a child of the tile for a floor mesh that could be placed at the location of that Position3D node without taking the rest of it's transform into account.

In fairness though there's already a kind of a way of achieving all of that.

@matt-testing
Copy link
Author

matt-testing commented Dec 8, 2022

This proposal is more about enhancing the current functionality of gridmaps, however there is a larger discussion to be had about how gridmap could be used as the basis for a more general-purpose level design tool. You might be interested in the discussion here: #3518 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants