Kohila / bionicle-community-colorpack

1 stars 0 forks source link

Establish a Structured Naming Convention for Colors #1

Open Kohila opened 1 year ago

Kohila commented 1 year ago

How it currently works:

The current naming convention for colors is, in a word, nonexistent. Different authors adhere to their own personal, bespoke way of naming their colors.

Why this is a problem:

Proposed solution/improvement:

Ultimately, there needs to be some collaborative discussion to set an agreed upon naming convention. Since different authors have their own opinions on how to name colors, there is bound to be disagreement. This issue must be tackled with common end goals in mind.

My proposed end goals are as follows:

Setting this issue as project priority will set a positive precedent early in the process. Many other in-development aspects of the project will naturally fall into place once a structure has been set to dictate how colors are handled.

Additional context:

Add any other context about the problem here.

Kohila commented 1 year ago

Initial proposal

The first step of this issue I believe should be tackled is setting the top-most folders to classify colors into. Using the current top-most color classifications established by BrickLink and Stud.io, as well as certain customization constraints set by Stud.io, I hope that this proposed top-most structure is agreeable to most authors:

While both Glitter and Speckle Colors are given their own category on BrickLink, Stud.io handles them as subcategories of existing color groups if memory serves. If that isn't the case, they should also be given top-most category assignment.

SwampKryakwa commented 1 year ago

Suggest adding subgroup naming conventions for color material. Most common materials are normal plastic (ABS), rubber, polypropylene (the softer plastic most weapon parts are made of) and cloth

Kohila commented 1 year ago

Suggest adding subgroup naming conventions for color material. Most common materials are normal plastic (ABS), rubber, polypropylene (the softer plastic most weapon parts are made of) and cloth

Can definitely get behind this. The next thing I'd like to do is list, examine, and discuss the different ways that authors have been classifying their colors. Some common attributes I've seen used by authors to classify are Material, Opacity/Translucence, Pattern, Unique-to-Element, Luminosity, etc.

violetgynoid commented 1 year ago

One concern I have is verbosity. image Color names that are too long can become unwieldy to work with - but is this a thing we're willing to accept for the sake of standardization?

If we're going for less verbosity, my suggestion is something like [SURFACE FINISH] [COLOR] - like "Fine Purple" or "Semitrans Green". However, if we decide that long-ass names are a thing worth doing, which I am ultimately fine with if it makes finding individual colors easier, maybe something like [MATERIAL PROPERTY] [SURFACE FINISH] [SPECIAL EFFECT] [COLOR] (ex. "ABS Shiny Glowing Red) would be a good idea?

I'm open to just about anything as long as it's easier for most people to understand.

SwampKryakwa commented 1 year ago

There should definitely be shorthand for common varieties

Kohila commented 1 year ago

Been brainstorming a rough draft for this system over the past few days, ultimately decided to abandon the BrickLink/Stud.io base categories for a more sensical approach for custom color development purposes. Would love to hear some initial thoughts on what others think is good/bad about these classifications.

Usage Type

This is an informal classification of colors right at the start. It explicitly splits color definitions into two groups: colors that either CAN or CANNOT abide by further levels of structured classification.

Type Name Description Previously Used Synonyms
Basic (Default) The default usage type. Colors of this type emulate existing or hypothetical real-world LEGO color palette equivalents.
Special A custom usage type. Colors of this type are created to fulfill an artistic, render-only, or specialized purpose. Alternative, Miscellaneous, Render Only, Experimental

Material Type

This is a level of classification that defines possible perceptual color effects achieved through material additives and/or post-processing.

Type Name Description Previously Used Synonyms
Standard (Default) A common material. The colors of this type do not include material additives and have not been post-processed.
Pearl An uncommon material. The colors of this type have pearlescent material color additives.
Metallic An uncommon material. The colors of this type have either reflective particle material color additives or from a drum lacquered post-production finish.
Chrome A special material. The colors of this type are subjected to highly reflective, chromed post-production finishes.
Glitter A special material. The colors of this type include reflective flaked material color additives.
Speckle A special material. The colors of this type include reflective granulated material color additives.
Phosphorescent A special material. The colors of this type include glow-in-the-dark material color additives. Glow in Dark

Opacity/Refractive Type

This is a level of classification that defines the way that light does or does not pass through the material of an element. These definitions are based on how much light passes through the element, as well as how light behaves and refracts as it does so.

NOTE: This attribute type only applies to colors of color category types that don't implicitly have set opacity/refractive values. The color categories that have these attribute types are: Transparent, Satin, Glitter, and Milky. Type Name Description Previously Used Synonyms
Opaque (Default) A common opacity/refractive type. A color of this type has no light passthrough and no light refraction.
Translucent A rare opacity/refractive type. A color of this type has moderate light passthrough and moderate light refraction. Fluorescent
Transparent An uncommon opacity/refractive type. A color of this type has high light passthrough and minimal light refraction.

Finish Type

This is a level of classification that defines the way that light does or does not interact with the surface of an element.

As opposed to the previous types that prefix the final color name, this type and any follow subtype are appended to the final color name as a suffix.

Type Name Description Previously Used Synonyms
Generic (Default) A finish with no commonality. The colors of this material do not emulate the visual properties of any explicit real-world material. (Ideally, all color definitions should be sorted into one of the three other finish types.)
Gloss A common finish. The colors of this material have a smooth, reflective surface. These colors typically correspond to LEGO elements made of the following plastics: ABS, CA, PA, POM, PC, MABS, SAN, and TP. Fine
Semi-Gloss A common finish. The colors of this material have a smooth, semi-reflective surface. These colors typically correspond to LEGO elements made of the following plastics: PP, HIPS, PET, LDPE, and HDPE. Smooth, Soft
Matte An uncommon finish. The colors of this material have a rougher, non-reflective surface. These colors typically correspond to LEGO elements made of the following plastics: MTPO, TPU, SEBS, and textiles.

Optional Types

These are types that exist independently of the actual color definition and are used to describe interactions between multiple colors and/or atypical color behavior for certain elements.

When categorizing a color that is made up of multiple different defined colors, the primary color should ideally be the "main" color of the element. This is often the color that makes up the majority of the element at/around the injection gate witness mark.

Blend Types

Type Name Description Previously Used Synonyms
Marbled A blend type where two different colors are combined to create a sharp gradient. Common Marbled types are: To Top, To Sides. Gradient
Patterned A blend type where two different colors are combined to create a pattern. Common Pattern types are: Poisoned and Infected.

Element Types

Type Name Description Previously Used Synonyms
{COMMON_ELEMENT_NAME} The name of the element where a specific color definition behaves differently than it does with the rest of the LEGO parts library.

Redefining the BrickLink/Stud.io Default Category System

Ultimately, this method of color categorization upends and redefines the base categories that BrickLink and Stud.io use for naming/sorting colors. For the sake of clarity, the BrickLink/Stud.io color categories would have the following equivalencies under this system: BrickLink / Stud.io Color Category BCC Color Classification Equivalent
Solid Colors Basic > Standard > Opaque > ...
Transparent Colors Basic > Standard > Transparent > ...
Chrome Colors Basic > Chrome > ...
Pearl Colors Basic > Pearl > ...
Satin Colors Basic > Pearl > Translucent > ...
Metallic Colors Basic > Metallic > ...
Milky Colors Either Basic > Standard > Translucent > ... or Basic > Phosphorescent > ...
Glitter Colors Basic > Glitter > ...
Speckle Colors Basic > Speckle > ...

BCC File Structure Visual Representation

Following this proposal and excluding potential folders/subfolders that would likely remain empty, the file structure of color definitions for this project would be as follows:

├── basic/
|   ├── standard/
|   |   ├── opaque/
|   |   |   ├── gloss/
|   |   |   ├── semigloss/
|   |   |   └── matte/
|   |   ├── translucent/
|   |   |   ├── gloss/
|   |   |   ├── semigloss/
|   |   |   └── matte/
|   |   └── transparent/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   ├── pearl/
|   |   ├── opaque/
|   |   |   ├── gloss/
|   |   |   ├── semigloss/
|   |   |   └── matte/
|   |   └── translucent/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   ├── metallic/
|   |   └── opaque/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   ├── chrome/
|   |   └── opaque/
|   |       └── gloss/
|   ├── glitter/
|   |   └── transparent/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   ├── speckle/
|   |   └── opaque/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   └── phosphorescent/
|       ├── opaque/
|       |   ├── gloss/
|       |   ├── semigloss/
|       |   └── matte/
|       ├── translucent/
|       |   ├── gloss/
|       |   ├── semigloss/
|       |   └── matte/
|       └── transparent/
|           ├── gloss/
|           ├── semigloss/
|           └── matte/
└── special/
    └── ...
SwampKryakwa commented 1 year ago

Right away I suggest the metallic be separated from the rest. This type of material is not the same as the rest, as it is actually a coating around the part. It can't be translucent, rubberish and other such stuff by it's nature

SwampKryakwa commented 1 year ago

Glitter and speckle also aren't separate color groups, but rather Translucent and Solid with glitter respectively

SwampKryakwa commented 1 year ago

Oh, and Chrome goes in the same bin with Metallic actually

Kohila commented 1 year ago

Correct me if I'm wrong, but what I'm understanding as the root of your feedback is that I should rethink the proposal to combine "color additives" and "post-processing" color attributes into a single "Material" Type? How would you prefer them to be structured?

SwampKryakwa commented 1 year ago

I would make "additive" a parameter color could have, and make post-processing it's own category of colors, maybe separate from colors made by mixing stuff into the plastic itself entirely

Kohila commented 1 year ago

Glitter and speckle also aren't separate color groups, but rather Translucent and Solid with glitter respectively

I don't agree with this claim. I have physical samples from both of these color types in hand and the difference between them is not a matter of material opacity. The additives for Glitter are much more like traditional glitter, while the additives for Speckle elements are more splotchy in nature. In all honesty, part of me wants to cut into a Speckled element just to make sure the effect wasn't achieved through a type of drum lacquering, lol.

All your other points are fair though. Here are the actionable items I've derived from your feedback and possible end solutions:

I propose the following solutions to these actionable items:

Here is an example of how I'm interpreting these changes as applied to the BCC folder structure:

├── basic/
|   ├── standard/
|   |   ├── opaque/
|   |   |   ├── gloss/
|   |   |   ├── semigloss/
|   |   |   ├── matte/
|   |   |   ├── chrome/
|   |   |   └── metallic/
|   |   ├── translucent/
|   |   |   ├── gloss/
|   |   |   ├── semigloss/
|   |   |   └── matte/
|   |   └── transparent/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   ├── pearl/
|   |   ├── opaque/
|   |   |   ├── gloss/
|   |   |   ├── semigloss/
|   |   |   └── matte/
|   |   └── translucent/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   ├── glitter/
|   |   └── transparent/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   ├── speckle/
|   |   └── opaque/
|   |       ├── gloss/
|   |       ├── semigloss/
|   |       └── matte/
|   └── phosphorescent/
|       ├── opaque/
|       |   ├── gloss/
|       |   ├── semigloss/
|       |   └── matte/
|       ├── translucent/
|       |   ├── gloss/
|       |   ├── semigloss/
|       |   └── matte/
|       └── transparent/
|           ├── gloss/
|           ├── semigloss/
|           └── matte/
└── special/
    └── ...
SwampKryakwa commented 1 year ago

I still don't agree with glitter being it's own category. Whole glitter pallet is literally trans-colors, but with glitters. That's what is the point of those colors - the normal translucent lineup, but with some glitters mixed in

I would also argue that's what Opal (means same thing as Satin, but it's the name Lego introduced and I'm way more used to it) colors are, rather than being "translucent pearl" colors. Unlike with Pearl ones, all Opal colors are characterized by being, once again, Translucent colors of different varieties ("Transparent Blue Opal", "Transparent Green Opal"), even suggested by official naming.

I would suggest making it a "glittering" parameter.

Also, I really don't get what the "translucent"/"transparent" separation means.

Finally, I just realized that there is a factor of Fluorescence not being accounted. There are multiple Lego colors, both translucent and not, that feature this effect

Going bit deeper, I just remembered there is a whole thing with Lego having some colors being just inks, and that's something that can also include Chrome and Metallic.

And just thinking about this whole thing made me to realize there could be a better way. I suggest a different approach, one that thinks more from the perspective of what color can be fundamentally broken down into.

├── dyed material/
|   ├── translucency/
|   ├── gloss/
|   ├── metallicity/
|   ├── fluorescence/
|   ├── phosphorescence/
|   └── speckling/
├── ink/
|   ├── gloss/
|   ├── metallicity/
|   └── pattern/
└── special/
    └── ...

Instead of trying to fit system into a bit arbitrary sections colorpacks, bricklink and lego have been using, I suggest this approach based on what each color ultimately is. First, of course, it could be either some material pre-made with some kind of dye mixed in - plastics, rubbers, etc. To us, it doesn't really matters what that material is, but rather what it's properties are. These are how transparent and how glossy it is. Then, there are all the other parameters, ones dye brings in - metallicity (pearls), fluorescence (neons), phosphorescence (glow in darks) and specklings (either glitter or "opal"), really rarely also can make translucent material semi-translucent Second, there is ink. Ink is coated over part and can either cover it's entirety or be just a print on a minifig. Latter aren't much of our concern, mostly because it's not something part packs do, but prior are represented by Speckled, Chrome and Metallic groups. Finally, there are special colors which can be whatever stuff author comes up with.

Coming back to categories, they would fit into this system in such way: BrickLink / Stud.io Color Category BCC Color Classification Equivalent
Solid Material > Opaque Glossy (non-metallic non-fluorescent non-phosphorescent non-speckled)
Rubber Material > Opaque Dull
Trans- Material > Translucent Glossy*
Rubber Trans- Material > Translucent Dull
Neon Trans- Material > Translucent Glossy* Fluorescent
Pearl Material > Opaque Glossy*
Glitter Material > Translucent Glossy* Glittered
Satin Material > Translucent Glossy* Opal
Non-GiD Milky Material > Semitranslucent
Glow in Dark Material > Semitranslucent Phosphorescent
Ink Ink > ...
Chrome Ink > Gloss Metallic (non-patterned)
Metallic Ink > Dull Metallic
Speckled Ink > Speckled ...
Luminous Special > Emissive

If color set has star next to Gloss property, it is Glossy in Studio, but in reality depends on base material and can be dull

Kohila commented 1 year ago

Honestly having a hard time making sense of most of your feedback, and I don't see the benefit for the feedback I do understand. :S

At the very least, I do agree with you that "Satin" colors do not equate to being "Translucent Pearl" colors and are a different type of additive entirely; extremely similar to Glitter, but way more ultra-fine.

So, I've made a new "Opal" Material Type and added it to the new documentation.

SwampKryakwa commented 1 year ago

Why did you not add Neon/Fluorescent? It gives color unique bright look, as well as makes it glow under UV light. I think it is a category worth adding also

Kohila commented 1 year ago

Because Neon/Fluorescence does not exist independently of the other Material Types; the existing Neon/Fluorescent colors have been used with Solid, Glitter, and Opal Materials.

In my opinion, Neon/Fluorescence is where we start hitting the question of "how far down the rabbit hole do we go?" when establishing Types. It's very possible to continue drilling down into color sort methodologies: "Light" and "Dark" could logically be established as "Vibrance Types", "Sky", "Sand", and "Earth" colors could logically be established as "Tone Types", etc. Ultimately, it starts splitting hairs and adding unnecessary nesting/complexity.

Neon/Fluorescence is one of those cases. Aside from their vibrance, colors of this type are visually indistinguishable from other "Solid" colors without the use of a UV light. So in the interest of colorpack ease of use, "Neon Orange" and "Orange" would be considered two separate "leaf-level" color definitions.

To be completely honest, I almost want to use this as an argument to dissolve the "Phosphorescent" Type too, lol.

SwampKryakwa commented 1 year ago

I still don't quite see the reason to go about it that way

Idk about the general crowd, but to me it's very clear when a material is fluorescent or not. It is a pretty distinct property found in Lego colors, and if something like phosphorescence is granted a designation, I don't get why fluorescence doesn't deserve it

If you are going to dissolve the phosphorescent type, I would agree that fluorescence can be dropped. Otherwise, it seems just wrong. Especially with how omnipresent Neon colors are, even crawling into non-translucent field, while Glow in Dark has only three colors