In astronomy, color is quite complicated. You can't just take many of the famous Hubble photos at face value, because they're false-color. This isn't because astronomers are trying to trick you - it's because using different filters and processing can bring out details so they can be more clearly observed.
Planetary nebulae emit light because of the central star ionizes the gas around it. In this case, there are only a few different colors a planetary nebula can take on, because there are just a few emission-lines visible. Hydrogen, for example, is visible as the H-alpha line which corresponds to a reddish color, and doubly ionized oxygen is a greenish-teal. Although I know the exact wavelengths of these lines, I am not sure of the exact RGB colors of them, the relative proportions (i.e. brightnesses) and how those combine. So while I want to say that my nebulae are natural-color, I can only say that I try my best to make them so.
Actually, the surface brightnesses of planetary nebulae are typically so low that they'd probably be completely invisible to the naked eye. So I am taking a little bit of a creative liberty here by increasing my models' surface brightnesses so they're quite vibrant, kind of like long-exposure photographs of them.
Defining color in sprite models.
With sprite models there are several ways to apply color to a white sprite texture:
1. Coloring the sprite texture itself. I suppose this works, but I've never used this method before, because the other two methods are far more versatile, in my opinion.
2. Coloring individual point sprites. To do this, I first added "color0 f3" to the vertex definition, like so:
Code: Select all
vertexdesc
position f3
pointsize f1
color0 f3
end_vertexdesc
then, the last three digits of each vertex (in this case, it's "1 1 1") will correspond to the R, G, and B color components of each vertex.
Code: Select all
0.786743 -3.15409 0.999953 1.2 1 1 1
3. Coloring the material definition. At the beginning of the CMOD, each material is defined, and you can add a color like this:
Code: Select all
material
diffuse 1 1 1
opacity 0.09
texture0 "27px.png"
blend normal
end_material
where again, "1 1 1" corresponds to the R, G, and B color component of the sprites. This is much more efficient if all the sprites are the same color. You don't have to define a color for each point, and then your CMOD will look something like this.
Vertex definition
Code: Select all
vertexdesc
position f3
pointsize f1
end_vertexdesc
Point definition
Code: Select all
0.786743 -3.15409 0.999953 1.2
Admittedly, I have used the second method to color many of my nebulae, even if all the points of the material were the same color. This is quite inefficient, because you are defining the same color for every point which can increase the file space by a lot. Therefore, I will be fixing my models so that they use the third method when applicable.
Best,
LukeCEL