ImportSettings support for Groups

Issue #5 resolved
James Marr created an issue

It would be extremely useful if the ImportSettings node was capable of accepting the output of a Group node, and could use the * wildcard to be filled in with the group name.

The primary use for this in our project would be for forcing images into sprite sheets according to how they were grouped by the Group node.

For example, imagine I have a folder Characters, with sub folders Hero, Enemy, Dog. I would like to have a Group node with the rule Characters//, which would group together the assets in each sub folder. I would then like to connect the output of that Group node to an ImportSettings node, which would set the sprite tag to the group name captured by .

Without this enhanced functionality, our workflow is much more difficult. W would have to individually configure a node hierarchy for each Hero, Enemy, and Dog subfolder. Any changes we wanted to make to our pipeline, would have to be individually applied to each subfolder. Any new subfolders would have to meticulously duplicate one of the existing hierarchies.

Comments (16)

  1. Sam Narain

    @Tyrannicus100BC those are indeed strong use cases, and I think they even should deserve their own "nodes", purely for visual aid. Can you help @homae out by sketching out an example graph of how these graphs should work in ideal circumstances?

  2. James Marr reporter

    Sure, here is an attached image, proposing a new "Group Sprite Tag" node. This node would accept the output from a group node, and force sprite packing tags according to the group name.

    I also showed what the current alternative is, where there are many individual loading/importer nodes for each sub folder. Graph.png

  3. Hiroki Omae

    I like to solve this issue somehow whether by - extending ABGT to let you create custom node to do anything with input/output - Somehow let ImportSetting to configure per Group.

    My concern is there is not much configuration you want to modify per incomfing group name other than Packing Tag. So rather than extending ImportSettings, I could just add "Tag Sprite", or, let you extend ABGT so that you write such task quickly.

  4. Sam Narain

    I like to solve this issue somehow whether by - extending ABGT to let you create custom node to do anything with input/output - Somehow let ImportSetting to configure per Group.

    That would a perfect start. This allows also some more flexibility in the tool.

    So rather than extending ImportSettings, I could just add "Tag Sprite", or, let you extend ABGT so that you write such task quickly.

    How about the ability of extending ABGT and have a Tag Sprite as an example which demonstrates how you can apply customization?

  5. Hiroki Omae

    Hi, I have been working on this a while for 1.2, and here is some quick progress.

    C3-NGazUcAAC593.jpg

    You will be able to extend ABGT and define your node - pass assets around.

  6. Hiroki Omae

    importsetting.png

    Implemented Sprite Packing Tag configuration in ImportSetting (landed to dev branch). This should do the Group Sprite Tag requested in this issue.

  7. James Marr reporter

    I'm really excited to check this out!

    [I previously said I was getting compilation errors. It was user error and it is working as expected for me now]

  8. Hiroki Omae

    James, thank you for checking out. I hope it works as you expect :) Let me know if you have any issues or feedbacks.

  9. James Marr reporter

    This is working exactly as I had imagined. It's great! Thanks!

    So to give you context, we have a shipping game which uses tons of asset bundles. We currently do all of our bundling and spritesheeting by hand and it's a pain. As a research project, I'm trying to use ABGT to radically simplify our process. My perspective is usually going to be "how can I automate what is currently a manual process using ABGT".

    The next thing I'm realizing, is that when we do sprite sheet assignment, we put things on to different spritesheets based on whether they have an alpha channel. This is because if we don't put them onto different named spritesheets, then Unity automatically appends a "(0)" or "(1)", which looks a lot like a mismatch of other import settings that should be fixed (like mip maps, or sprite vs texture). We'll have a single folder that has a mix of assets with and without alpha channels. We usually append "-Transparent" vs "-Opaque" to our spritesheet names based on whether they have an alpha channel. That way, if we ever see a "(0)", we know we have a mismatch on some other import setting that we should fix.

    In ABGT, the Filter node allows me to select just TextureImporters, but I can't filter further filter them based on those import settings. What would be your recommendation for filtering out images with or without an alpha channel?

    (Here is what my text project sprite sheets currently look like. BG's and Frame's have a mix of alpha and opaque textures: Screen Shot 2017-02-17 at 4.51.06 PM.png

  10. Hiroki Omae

    James, thank you for the additional context. In 1.2 I have extended Filter node so that you can write your own custom filter condition. With custom filter you can write filter by texture's alpha channel configuration.

    I have wrote a quick example Filter to do this and here is a quick example screenshot.

    customfilter.png

    You can just drop this file in your project and it should just work. (don't forget to grab newest ABGT! ;) )

    https://gist.github.com/hiroki-o/6574e93836d298ec79a07d92a18a120c

    Please let me know if this solves your issue.

  11. Log in to comment