TripleA Logo TripleA Forum
    • TripleA Website
    • Categories
    • Recent
    • Popular
    • Users
    • Groups
    • Tags
    • Register
    • Login

    Dyeing/Colorizing Unit Images

    Scheduled Pinned Locked Moved Feature Requests & Ideas
    68 Posts 10 Posters 31.7k Views 9 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C Offline
      Cernel Moderators Lobby Moderators @redrum
      last edited by Cernel

      @redrum Sorry for leaving your proposal aside, but I still surely suggest not offering the brightness option. That is something that should be fixed on the image itself only, if wanted. Fixing, or anyways changing, it on the program's display instead of on the source would really make little sense (in my mind), and if a mapmaker can manage to do it via TripleA, it should be smart enough to do it via an image editor, and vice versa. This option is also going to be confusing, as, in the moment you see in a map a unit with a brightness level you don't like, you'll have also to wonder if that comes from the image itself or from the settings.

      On top of that, I see that you have added this element: "It also ignores any pixels that are close to black (brightness < 10%) as especially if increasing brightness these get faded and make images look less sharp.".

      That feels really patchy and definitely arbitrary, and also inconsistent, in the moment the opposite doesn't happen if you lower the brightness (I know that doesn't really matter). Rather, if you really want to avoid that phenomenon on a consistent basis, I suggest you have the contrast increasing of the same amount for any absolute variations of brightness. Meaning that if you increase the brightness by 25, then the contrast gets increased by 25 too (on the same scale). On the other hand, if you decrease the brightness by 25, the contrast would get increased (not decreased) by 25.

      With this said, now that, at least with that patch you are adding, I start understanding what you are getting at (I see you don't really want to make the objects generally brighter, like if they are glowing), I guess I have the right answer for that, if you can do it. This answer is the "gamma": just use the "gamma", instead of the "brightness" (and, of course, getting rid of that 10% always black thing, as well), in what you are doing, and you'll probably see results very much in line with what I guess you want.

      If you are not sure about what the gamma is, you can open an image with GIMP and follow these instructions, for testing:
      https://docs.gimp.org/2.10/de/gimp-tool-levels.html
      (the gamma is the upper middle slider, when you have the channel on "value", after opening Colours/Levels)

      Also, regarding the brightness or whatever, please make clear if we are dealing with a percentage or a 0-255 scale. Maybe you have said it somewhere I overlooked, but point is everything must be very clear to the maker (just saying it eventually when this will be documented in pos2; haven't checked if it already is).

      I, of course, agree applying only hue and saturation for colourizing via colour code, but that doesn't seem right as a process, as you are inputting something having a number of information implied, and using only some of those information. This means that there are a (big) number of such values giving the exact same result, in term of hue and saturation. However, since the ownerships colours are defined that way, I see a reason for it, but I would rather have a boolean option for simply setting the units at the hue and saturation defined for the ownership colour of the same player.

      Also, anyways, if you are not going to remove that option too (as I suggest), can you please confirm me that inputting a color code value will give exactly the same result as setting the HSB with hue and saturation only at the values implied by that colour code, right?

      Also, in any cases, can you please clarify whether the results of these options are going to work alike to complete colourization or alike to Hue-Saturation changes (in GIMP term, are we doing Colours/Colourize or Colours/Hue-Saturation (for example, the first one would colourize a factory, the second one wouldn't (as I said, I suggest the second one)))? Practically, are these options going to add saturation (colour) to an image like the factory or not?

      1 Reply Last reply Reply Quote 0
      • HeppsH Offline
        Hepps Lobby Moderators @redrum
        last edited by

        @redrum I'm inclined to say option 1

        "A joyous heart sours with the burden of expectation"
        Hepster

        1 Reply Last reply Reply Quote 0
        • F Offline
          ff03k64
          last edited by

          I vote for option 0. I don't now anything so whatever you do is fine with me!

          1 Reply Last reply Reply Quote 0
          • C Offline
            Cernel Moderators Lobby Moderators @redrum
            last edited by

            @redrum If option 1 gets rid of that thing of using the colour code to specify hue and saturation only, then I prefer that one. Can the matter be detailed? I assume that all the pixels of the image will be set at the defined hue. What will happen, instead, for each pixel with the saturation and the brightness (I assume the brightness just changes the value), relatively to their starting values? Maybe it should be rather called "HSV", instead?

            1 Reply Last reply Reply Quote 0
            • LaFayetteL Offline
              LaFayette Admin
              last edited by

              I'd advocate for option 1.

              Looking at an existing maps.properties files, there are already RGB codes:

              #Color settings for the map
              #values must be a 6 digit hex number
              color.British=8B4513
              color.Americans=488214
              color.Russians=36648B
              color.French=0000EE
              color.Austrians=FFB00F
              color.Ottomans=CD0000
              color.Germans=999999
              color.Italians=006400
              color.Neutral=dd5500
              color.Impassable=D2B48C
              
              #default unit scale
              #value must be one of the menu options
              units.scale=0.8333
              
              #does the map have relief images
              map.hasRelief=true
              

              Keeping RGB for unit colors would stay consistent.

              Second, I find it hard to work with HS unless you're using a color picker. For example, a HS of 180,30 or HS of 240,100, I could not tell you what those colors are.

              Third, IMO RGB is intrinsically simpler. HSB is comma delimited vs a value that can be parsed directly in java compared to being split. The range of values of HSB depend on the position, while RGB is consistent hex codes, each 0-F, while HSB is 0-360 or 0-100.

              I personally think humans deal better with RGB. Notably it's the de-facto standard on the web. HSB OTOH is really good for image editting, I've used it there. Having the control to only change saturation or brightness is powerful as you can make colors more 'intense' by adjusting a single slider rather than increasing RGB values while maintaining a specific ratio

              redrumR C 2 Replies Last reply Reply Quote 4
              • redrumR Offline
                redrum Admin @LaFayette
                last edited by

                @LaFayette I think you meant option #2 🙂

                TripleA Developer with a Passion for AI: https://forums.triplea-game.org/topic/105/ai-development-discussion-and-feedback

                prastleP 1 Reply Last reply Reply Quote 1
                • C Offline
                  Cernel Moderators Lobby Moderators @LaFayette
                  last edited by

                  @LaFayette said in Dyeing/Colorizing Unit Images:

                  I'd advocate for option 1.

                  RGB is option 2 (except that it is just taking hue and saturation out of RGB info).

                  1 Reply Last reply Reply Quote 1
                  • prastleP Offline
                    prastle Lobby Moderators Admin @redrum
                    last edited by

                    @redrum Anything that allows tweaking for my colour blindness I am willing to learn 😉

                    If we open a quarrel between past and present, we shall find that we have lost the future! Sir Winston Churchill

                    1 Reply Last reply Reply Quote 0
                    • PantherP Offline
                      Panther Admin Moderators Lobby Moderators
                      last edited by

                      @redrum I vote for the RGB option.

                      Don't always trust TripleA when it comes to rules questions. Know the rules before you start … and better check what TripleA has done.

                      1 Reply Last reply Reply Quote 0
                      • redrumR Offline
                        redrum Admin
                        last edited by

                        I've decided to move forward with Option #2, thanks for everyone's feedback. I think this is easier for players to use since they already need to understand color codes when changing territory ownership colors.

                        TripleA Developer with a Passion for AI: https://forums.triplea-game.org/topic/105/ai-development-discussion-and-feedback

                        C 1 Reply Last reply Reply Quote 2
                        • C Offline
                          Cernel Moderators Lobby Moderators @redrum
                          last edited by Cernel

                          @redrum So, how does the saturation work?
                          If you define a RGB value, that value has a specific saturation value implied.
                          Are all pixels in the units images, then, set to that same saturation value (like I assume it happens for the hue)? If not, how does it work?

                          I think that, at this point, the most important item would be having a way of changing the hue without effecting the saturation, of the images (meaning each pixel in them keeps its original saturation value, only the hue changing).

                          LaFayetteL 1 Reply Last reply Reply Quote 0
                          • LaFayetteL Offline
                            LaFayette Admin @Cernel
                            last edited by

                            @Cernel I'd note that the HSB version would specify 'saturation' as well and would not be just a hue shift. Having both brightness and saturation be additional parameters would be nice, in this way a person could have a hue-only shift if desired and/or increase saturation explicitly. I think though we're getting to an over-engineering level. Adjusting unit color will still need manual work to make sure that it looks good, a hue only shift may not guarantee that the results will always look good. I don't think offhand it's that easy for the code to adjust 'hue' only.

                            1 Reply Last reply Reply Quote 0
                            • redrumR Offline
                              redrum Admin
                              last edited by

                              Properties Description

                              # Unit color settings (apply effects similar to colorize functions of image editing tools)
                              #units.color.<player> applies the given color's hue and saturation to the player's units
                              #units.color.Russians=00BBBB
                              #units.color.brightness.<player> allows the brightness (-100 to 100) to be adjusted when above unit color is set 
                              #units.color.brightness.Russians=25
                              #units.color.flip.<player> flips the player's units horizontally
                              #units.color.flip.Russians=true
                              #units.color.ignore provides a comma delimited list of units that aren't impacted by the above units.color properties
                              #units.color.ignore=factory,fighter
                              

                              POS2 PR: https://github.com/triplea-maps/the_pact_of_steel/pull/33

                              TripleA Developer with a Passion for AI: https://forums.triplea-game.org/topic/105/ai-development-discussion-and-feedback

                              C 1 Reply Last reply Reply Quote 1
                              • C Offline
                                Cernel Moderators Lobby Moderators @redrum
                                last edited by Cernel

                                @redrum Strange that you have to set the other thing to be able to use the brightness option.

                                Even without any intentions of having anything flipping the units vertically, I believe the name should specify that the flipping is horizontal. Also probably not color. So like: units.transform.flip.horizontal.

                                LaFayetteL 1 Reply Last reply Reply Quote 2
                                • LaFayetteL Offline
                                  LaFayette Admin @Cernel
                                  last edited by

                                  @Cernel said in Dyeing/Colorizing Unit Images:

                                  Even without any intentions of having anything flipping the units vertically, I believe the name should specify that the flipping is horizontal. Also probably not color. So like: units.transform.flip.horizontal.

                                  I strongly agree with you Cernel on color adjustment and image rotation not necessarily being related. These properties once defined are probably going to stick around for a very long time.

                                  I'd also agree brightness and color would also be ideally decoupled, for now it's difficult on the backend. If there is a reason to need the feature, it could be a nice enhancement to see added later.

                                  With regards to coupling, I've also been wondering if the 'ignore' of coloring and image flipping should be decoupled. Is it always the case that any unit where we want to ignore coloring, we will also always want to ignore image flipping? In other words, should a map maker be allowed to say "flip this image, but do not color it".

                                  The cost of enabling that is likely duplication, ie:

                                  units.color.ignore=factory,fighter
                                  units.color.flip.ignore=factory,fighter
                                  

                                  But the above would allow for something like the following where, for example, 'fighters' are colored but not rotated:

                                  units.color.ignore=factory
                                  units.color.flip.ignore=factory,fighter
                                  

                                  For property names, I'd recommend keeping them singular and prefixing with "unit.image", as a suggestion:

                                  unit.image.color.<Player>=FF00FF
                                  unit.image.brightness.<Player>=100
                                  unit.image.rotation.flip.horizontal={true|false}
                                  

                                  Or:

                                  unit.image.color.<Player>=FF00FF
                                  unit.image.brightness.<Player>=100
                                  unit.image.rotation.flip={horizontal|none}
                                  
                                  C 2 Replies Last reply Reply Quote 2
                                  • C Offline
                                    Cernel Moderators Lobby Moderators @LaFayette
                                    last edited by

                                    @LaFayette Ah, right. It's important that the ignore thing will not effect the flipping; the two matters are really not related, and I can see you should not be normally wanting of not flipping the units you don't want to colourize. That's probably an even bigger reason than my purely self-consistent considerations.

                                    1 Reply Last reply Reply Quote 0
                                    • C Offline
                                      Cernel Moderators Lobby Moderators @LaFayette
                                      last edited by

                                      @LaFayette said in Dyeing/Colorizing Unit Images:

                                      With regards to coupling, I've also been wondering if the 'ignore' of coloring and image flipping should be decoupled. Is it always the case that any unit where we want to ignore coloring, we will also always want to ignore image flipping? In other words, should a map maker be allowed to say "flip this image, but do not color it".

                                      The cost of enabling that is likely duplication, ie:

                                      units.color.ignore=factory,fighter
                                      units.color.flip.ignore=factory,fighter
                                      

                                      But the above would allow for something like the following where, for example, 'fighters' are colored but not rotated:

                                      units.color.ignore=factory
                                      units.color.flip.ignore=factory,fighter
                                      

                                      I believe that ignoring units for colourization should not effect flipping.
                                      I would not have an option for ignoring units for flipping.

                                      redrumR 1 Reply Last reply Reply Quote 0
                                      • redrumR Offline
                                        redrum Admin @Cernel
                                        last edited by redrum

                                        I've renamed the properties to use "units.transform" instead of "units.color" prefix:

                                        units.transform.color.Germans=FF0000
                                        units.transform.flip.Germans=true
                                        units.transform.color.Russians=00BBBB
                                        units.transform.brightness.Russians=25
                                        units.transform.color.British=00FF00
                                        units.transform.ignore=factory,fighter
                                        

                                        @Cernel The ignore needs to apply to flip as well as generally the units you ignore will either be things like factory which appear exactly the same for all nations (not flipped like the rest) or will be damaged BB or AA radar which you'll already manually colorize/flip if you want them to be ignored (wouldn't want to flip them back). I don't think there is really a use in TripleA to be flipping images and not coloring them which is why they share a single ignore unit list. Remember this isn't meant to be an image editing program just give users and map makers the common functions that they would need if creating a shared unit set.

                                        TripleA Developer with a Passion for AI: https://forums.triplea-game.org/topic/105/ai-development-discussion-and-feedback

                                        C 3 Replies Last reply Reply Quote 1
                                        • C Offline
                                          Cernel Moderators Lobby Moderators @redrum
                                          last edited by

                                          @redrum Personally, if I would make an Axis vs Allies game, with Axis all facing a side and Allies all facing another side, and I would have something like a capturable emplacement or bunker (a combat infrastructure), I would have that unit too being one the flipped version of the other alliance, like all other units, while, as long as they don't move and always belong to the territory owner, I would leave them generically colourized the same way for everyone. For consistency, I would go the same way with factories, even if they would be non combat infrastructures, but I see that currently in assets the factories are all always the same, no matter where the other units appear to be facing. However, I believe having no colourization is not related to being a non combat units (as if you have mobile factories that can go in allied territories, you need to tell them apart), but to always belonging to the territory owner where the units is, which means being an infrastructure, and currently infrastructures can be combat units too, while this was not the case when Classic and Revised were made.

                                          redrumR 1 Reply Last reply Reply Quote 0
                                          • C Offline
                                            Cernel Moderators Lobby Moderators @redrum
                                            last edited by Cernel

                                            @redrum said in Dyeing/Colorizing Unit Images:

                                            @Cernel The ignore needs to apply to flip as well as generally the units you ignore will either be things like factory which appear exactly the same for all nations (not flipped like the rest) or will be damaged BB or AA radar which you'll already manually colorize/flip if you want them to be ignored (wouldn't want to flip them back).

                                            I really would go the same way with such things. If I'm colourizing a unit, I would colourize the same way also his damaged or tech versions (that is why I would not colourize units that have any sub-versions of the same being not monocolour, even if the basic unit is). Besides, elements that are beyond this scheme should rather really be icons that the program overlays.

                                            On this matter, it should be decided if calling "battleship" will call "battleship_hit" and "battleship_r" too, as well as if calling "aaGun" will call "aaGun_r", "rockets" and "rockets_r" too, as well as if calling "fighter" will call "fighter_lr" and "fighter_jp" and "fighter_lr_jp" too etc.. I think all those cases if you are calling the basic unit, all the related damaged or tech variants should be called too. So, for example, if I exclude "bomber", then "bomber_lr", "bomber_hb" and "bomber_lr_hb" should be excluded the same way, as well.

                                            1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 2 / 4
                                            • First post
                                              Last post
                                            Copyright © 2016-2018 TripleA-Devs | Powered by NodeBB Forums