Difference between revisions of "OXP howto texture"

From Elite Wiki
(Added note to the Note)
(Ideas: Added link)
 
(29 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[File:Untextured Odyssey.png|thumb|right|200px|Maaarcooose's finished model of the Odyssey, prior to texturing]]
 
[[File:Untextured Odyssey.png|thumb|right|200px|Maaarcooose's finished model of the Odyssey, prior to texturing]]
 
[[File:U31 odyssey.png|thumb|right|200px|Textured Odyssey]]
 
[[File:U31 odyssey.png|thumb|right|200px|Textured Odyssey]]
Note that possibilities have increased immensely since this was written in 2006. See [http://aegidian.org/bb/viewtopic.php?f=2&t=19881 A Description of the Improved Lighting and Materials System] (2018-21) for details.
+
Note that possibilities have increased immensely since this was written in 2006. See [https://bb.oolite.space/viewtopic.php?f=2&t=19881 A Description of the Improved Lighting and Materials System] (2018-21) for details.
 
__TOC__
 
__TOC__
  
 
<div style="clear:both"></div>
 
<div style="clear:both"></div>
 
{{OXPNote|This page was last properly edited in 2006, before the introduction of shaders and well before [[User:Another commander|Another commander]]'s work on Oolite introducing specular & gloss maps, the new Oren-Nayar diffuse light model, high-definition graphic resolution ''etc''. The links are more up-to-date.}}
 
{{OXPNote|This page was last properly edited in 2006, before the introduction of shaders and well before [[User:Another commander|Another commander]]'s work on Oolite introducing specular & gloss maps, the new Oren-Nayar diffuse light model, high-definition graphic resolution ''etc''. The links are more up-to-date.}}
 +
 +
 +
== Simple introduction ==
 +
A simpler way into this might be experimenting with the [[Ship Respray OXP]] - or just adding a [[Decal]] to your ship.
 +
 +
 +
== Terminology ==
 +
A '''normal texture''' specifies a single property of the model’s material at each point – specifically, its diffuse colour, or albedo. '''Specular maps''', '''glow maps''' (''eg'' for the engine exhaust glows) and other effect maps are auxiliary textures specifying additional material properties. Extra detail can be added into the '''alpha layer/channel''' (eg for the city night lights for planets in Oolite v.1.90: the illumination map should get embedded in the alpha channel of the planet's diffuse map).
 +
 +
See [[Shaders in Oolite]] for explanations of vertex shaders, fragment shaders and uniforms.
  
  
Line 12: Line 22:
 
Open a good [[List of software|graphic editing application]], something a bit more elaborate than MS-paint.
 
Open a good [[List of software|graphic editing application]], something a bit more elaborate than MS-paint.
  
  Tip: [http://www.aegidian.org/bb/viewtopic.php?p=258574#p258574 Gsagostinho (2017)]: I think I am addicted to Wings3D, learned how to use it in just a few days after banging my head against Blender's wall for years.
+
  Tip: [https://bb.oolite.space/viewtopic.php?p=258574#p258574 Gsagostinho (2017)]: I think I am addicted to Wings3D, learned how to use it in just a few days after banging my head against Blender's wall for years.
  
 
=== Custom texture native models ===
 
=== Custom texture native models ===
Line 62: Line 72:
 
* Rename the texture references in the mtl-file from *.bmp to *.png)
 
* Rename the texture references in the mtl-file from *.bmp to *.png)
 
* Open texturefiles and save as *.png.
 
* Open texturefiles and save as *.png.
* [[Oolite Converters|Convert]] the obj+mtl files to *.dat format via Obj2DatTexNorm.py.
+
* [[Oolite converters|Convert]] the obj+mtl files to *.dat format via Obj2DatTexNorm.py.
  
 
== Important comment from a_c ==
 
== Important comment from a_c ==
 +
[[File:Gal-Tech-Arachnid-Mark1.png|thumb|right|320px|Arachnid Mark 1 (custom shaders disabled, used Oolite shaders)]]
 +
[[File:Serpent Class Cruiser 2.png|thumb|right|320px|Serpent Class Cruiser]]
 
  Some lighting and material tips here:
 
  Some lighting and material tips here:
 
   
 
   
Line 77: Line 89:
 
   
 
   
 
  '''Dielectrics''':
 
  '''Dielectrics''':
  - Specular: Very low. Usually around (0.04, 0.04, 0.04). Dielcetrics never have tinted specular, unless you are trying to create impossible materials. Things like water have even less specular. For example, the specular value used for the ocean specular reflections in the Lave is Earth OXP is 0.02. Some materials may have slightly different specular values, but normally they are low and materials with specular at around 0.4-0.5 are extremely rare to non-existent. If you are unsure what value to use for your material and you know it is a dielectric, use 0.04.
+
  - Specular: Very low. Usually around (0.04, 0.04, 0.04). Dielectrics never have tinted specular, unless you are trying to create impossible materials. Things like water have even less specular. For example, the specular value used for the ocean specular reflections in the Lave is Earth OXP is 0.02. Some materials may have slightly different specular values, but normally they are low and materials with specular at around 0.4-0.5 are extremely rare to non-existent. If you are unsure what value to use for your material and you know it is a dielectric, use 0.04.
 
  - Gloss: Depends. Normally on the artist and the appearance they want to achieve. Plastic for example usually has high gloss values but it is not a rule, just a guideline.
 
  - Gloss: Depends. Normally on the artist and the appearance they want to achieve. Plastic for example usually has high gloss values but it is not a rule, just a guideline.
 
  - Diffuse: Whatever color your material is. Important - DO NOT include lighting information in a diffuse map - it will look totally off when viewed from the wrong angles. Just put the color of the material there and let the shaders decide on how the lighting will look.
 
  - Diffuse: Whatever color your material is. Important - DO NOT include lighting information in a diffuse map - it will look totally off when viewed from the wrong angles. Just put the color of the material there and let the shaders decide on how the lighting will look.
Line 89: Line 101:
 
  6. Gloss is where an artist has completely free reign. While the other properties are more or less governed by physics, gloss is whatever you want it to be. That is your chance to be truly creative.
 
  6. Gloss is where an artist has completely free reign. While the other properties are more or less governed by physics, gloss is whatever you want it to be. That is your chance to be truly creative.
 
   
 
   
[http://www.aegidian.org/bb/viewtopic.php?p=271594#p271594 Some lighting and material tips] ([[User:Another_commander|Another_commander]] 2020)
+
*[https://bb.oolite.space/viewtopic.php?p=271594#p271594 Some lighting and material tips] ([[User:Another_commander|Another_commander]] 2020)
 
+
*[https://bb.oolite.space/viewtopic.php?f=2&t=21259 Planet illumination user defined colors] ([[User:Another_commander|Another_commander]] 2022)
  
 
== Internal Links ==
 
== Internal Links ==
Line 96: Line 108:
 
*[[OXP howto]]
 
*[[OXP howto]]
 
*[[OXP howto model]]
 
*[[OXP howto model]]
 +
 +
=== Texture/Shaders related ===
 +
*[[Shaders in Oolite]] (2010)
 +
*[[Shaders in Oolite: uniforms]] (2007, updated in 2012 & 2016)
 +
*[https://bb.oolite.space/viewtopic.php?f=2&t=19881 A Description of the Improved Lighting and Materials System] (2018)
 +
*[https://bb.oolite.space/viewtopic.php?p=265300#p265300 Filmic Tonemapping] (2018)
 +
*[[Materials in Oolite]] (2013)
 +
 
=== Other texture tutorials ===
 
=== Other texture tutorials ===
 
*[[Smivs'_texture_tutorial]] (2010)
 
*[[Smivs'_texture_tutorial]] (2010)
 
*[[Texturing tips and tricks by Theta Seven]] (2017 - a follow-up to Smivs' tutorial)
 
*[[Texturing tips and tricks by Theta Seven]] (2017 - a follow-up to Smivs' tutorial)
 +
*[https://bb.oolite.space/viewtopic.php?f=4&t=11627 Understanding visual effects] (Smiv's cut and paste of tips, 2012) - achieving Griffification without shaders (See [[Dertien]]'s OXPs for other examples)
 +
*[http://zgroovy.blogspot.com/p/notes.html Dertien's tutorial] (2012) includes tips on how to use the .dat converters.
 +
*Shipbuilder's 2013 tutorial using his [[Arachnid Mark 1]] as a model:
 +
:: His tutorial document can be downloaded in pdf format here https://app.box.com/s/adl2gw654juwlkamyeol
 +
::The accompanying resource packs can be downloaded here https://app.box.com/s/njsbp935aseegsegh18l
 +
*[https://bb.oolite.space/viewtopic.php?f=2&t=6054 SimonB's Tutorial] (2009) UV map, diffuse map, effects map, normal map.
 
*[[F C Textures]]: howto texture by Flying Circus (2006: pre-shaders; mirror planing a texture using Wings3D & Gimp)
 
*[[F C Textures]]: howto texture by Flying Circus (2006: pre-shaders; mirror planing a texture using Wings3D & Gimp)
 +
 +
*[https://bb.oolite.space/viewtopic.php?p=257563#p257563 Query & answer ''re'' the use of transparent texture files] (2017)
 +
 +
=== Planet textures ===
 +
*Planets can now (v.1.90) have differently coloured atmospheres & city nightlights! See [https://bb.oolite.space/viewtopic.php?f=2&t=21259 here].
 +
*[[Blender Planet Textures]] (2016 but with more recent links)
 +
*[https://drive.google.com/drive/folders/0B_OS-FIJTVDXY1BUZjkxSndDZUU?resourcekey=0-HSmNsvehVEmx-D9wELbH2Q Lave Texture Creation] (2014 how-to essay in Russian by Stranger)
 +
*[https://bb.oolite.space/viewtopic.php?f=2&t=18638&start=15 Libnoise] (2017) A portable, open-source, coherent noise-generating library for C++ (Windows, Gentoo Linux)
 +
*[https://bb.oolite.space/viewtopic.php?p=95355#p95355 Griff's Planet shader example] (2009) - based on planet Earth.
 +
*[https://forum.kerbalspaceprogram.com/index.php?/topic/165285-planetary-texturing-guide-repository/#comment-3167423 Planet texturing guide repository (KSP)] (2023)
 +
 +
[[File:Trade-Factor-Animation.gif |thumb|right|Ideas: Griff's SpecGloss Sidewinder showing deterioration due to lack of maintenance]]
 +
[[File:Smivs'-cobra3-alternate-damaged.png|thumb|right|Ideas: Smiv's "damaged Cobra" texture]]
 +
=== Ideas ===
 +
*[https://bb.oolite.space/viewtopic.php?f=4&t=21170 Griff's SpecGloss Sidewinder] shows the effects of changing [[Maintenance]] levels (2022)
 +
:See his comment [https://bb.oolite.space/viewtopic.php?p=295645#p295645 here] on how he did it (2024)
 +
*Smivs created a [[Smivs' ShipSet|damaged ship set]] which worked with the older versions of his [[BattleDamage|Battle Damage OXP]]. (2012)
 +
*Griff's [https://bb.oolite.space/viewtopic.php?p=206321#p206321 experimental damaged textures] (2013)
 +
 
=== Other help ===
 
=== Other help ===
* [[Materials_in_Oolite]] - further information about textures in Oolite.
+
*[[Oolite converters]] (links to helper scripts ''etc'')
*[[Oolite Converters]] (links to helper scripts ''etc'')
 
  
 
== External Links ==
 
== External Links ==
 +
=== Wings 3D ===
 
*[http://www.wings3d.com/ Wings3D official home]
 
*[http://www.wings3d.com/ Wings3D official home]
 
*[http://www.wings3d.com/paulthepuzzles/aardvarks.html Tuts and tips Wings3D (2008), by Aardvark]
 
*[http://www.wings3d.com/paulthepuzzles/aardvarks.html Tuts and tips Wings3D (2008), by Aardvark]
 
*[https://www.youtube.com/user/MrDertien/videos YouTube classes in Wings3D] (2013-4) by [[Dertien]]
 
*[https://www.youtube.com/user/MrDertien/videos YouTube classes in Wings3D] (2013-4) by [[Dertien]]
*[http://aegidian.org/bb/viewtopic.php?p=69600#69600 Textures in GIMP] (2009) by SimonB
 
  
*[http://aegidian.org/bb/viewtopic.php?f=4&t=5580 Skinner's Den] 11 pages of texturing tips
+
=== Blender ===
*[http://aegidian.org/bb/viewtopic.php?p=264830#p264830 Putting it all together] (2018) by [[User:Phkb|Phkb]]
+
*[https://bb.oolite.space/viewtopic.php?f=4&t=10041 Blender 3d Modeling Tutorials] (2011-22), originally by [[User:Staer9|Staer9]], includes texturing
*[http://aegidian.org/bb/viewtopic.php?p=271594#p271594 Lighting & Materials tips] for the newer versions of Oolite (2020) by [[User:Another_commander|Another_commander]]
+
*[https://bb.oolite.space/viewtopic.php?f=4&t=13144 XYZ coordinates Blender to Oolite] (2012)
 +
*[https://bb.oolite.space/viewtopic.php?f=4&t=18159 Textures in .dat-files / blender] (2016)
 +
 
 +
=== GIMP ===
 +
*[https://bb.oolite.space/viewtopic.php?p=69600#69600 Textures in GIMP] (2009) by SimonB
 +
 
 +
=== General ===
 +
*[[Modifying a Texture]] from 2009
 +
*[https://bb.oolite.space/viewtopic.php?f=4&t=11627 Understanding visual effects] a 2012 compilation including a discussion on specular mapping
 +
*[https://bb.oolite.space/viewtopic.php?f=4&t=5580 Skinner's Den] 11 pages of texturing tips (2009-date)
 +
*[https://bb.oolite.space/viewtopic.php?p=264830#p264830 Putting it all together] (2018) by [[User:Phkb|Phkb]]
 +
*[https://bb.oolite.space/viewtopic.php?p=271594#p271594 Lighting & Materials tips] for the newer versions of Oolite (2020) by [[User:Another_commander|Another_commander]]
 +
*[https://bb.oolite.space/viewtopic.php?p=295581#p295581 Suppressing the sun's shadows] (2024) by [[User:Another_commander|Another_commander]]
 +
 
 +
=== Free textures ===
 +
Eric Mayas has thousands of free textures here: https://soundimage.org/images-home-page/ (SciFi, metal, stone, vegetation ''etc''.)
 +
 
 +
=== Models needing texturing ===
 +
There are a number of half finished models which just need texturing which can be found here: [[Brilliant but broken...]] - see specifically Gsagostinho's station experiments, but there are also a number of ships.
 +
 
 +
There are also many untextured models here: https://www.solcommand.com/ including stations, ships, greebles, floating gas giant cities ''etc''.
 +
 
 +
The other thing which would be great would be more moons (there are rather few of them) and more planets (ideally with city lights added in - note that currently on the AppleMac that phkb's [[Tianve]] city lights don't work but a_c's [[Lave is Earth 8k]] do.)!
  
 
[[Category:Oolite]] [[Category:Factual]] [[Category:Oolite scripting]]
 
[[Category:Oolite]] [[Category:Factual]] [[Category:Oolite scripting]]

Latest revision as of 09:32, 17 April 2024

Maaarcooose's finished model of the Odyssey, prior to texturing
Textured Odyssey

Note that possibilities have increased immensely since this was written in 2006. See A Description of the Improved Lighting and Materials System (2018-21) for details.


Simple introduction

A simpler way into this might be experimenting with the Ship Respray OXP - or just adding a Decal to your ship.


Terminology

A normal texture specifies a single property of the model’s material at each point – specifically, its diffuse colour, or albedo. Specular maps, glow maps (eg for the engine exhaust glows) and other effect maps are auxiliary textures specifying additional material properties. Extra detail can be added into the alpha layer/channel (eg for the city night lights for planets in Oolite v.1.90: the illumination map should get embedded in the alpha channel of the planet's diffuse map).

See Shaders in Oolite for explanations of vertex shaders, fragment shaders and uniforms.


Step 1

Open a good graphic editing application, something a bit more elaborate than MS-paint.

Tip: Gsagostinho (2017): I think I am addicted to Wings3D, learned how to use it in just a few days after banging my head against Blender's wall for years.

Custom texture native models

You can create custom textures for any Oolite native entities, the steps to follow are:

  • Edit the chosen native texture to your own liking.
  • Duplicate the chosen Xnative_ship.dat model, and alter the file name. Open the copy in a text editor, and change all referances from Xnative_ship.png to the name of your custom_texture.png.
  • Create a custom shipdata.plist, with a like_ship entry which refers to the original, and place your components into the appropriate folders, making a complete, funcional OXP.


Textures from a wings3D model

After you have created a model, you need to apply an UV-Map, this defines the way your future texture-file will be stretched accross your model. Use hard edges to mark where to 'cut' the textures.

There are two ways Wings-3D will extract an UV-Map:

(1) Fold: like a papermodel, the model is folded out to the flat plane of the texture. Can be usefull for small details, but may be difficult to line up correctly.

(2) Projection: the less complicated approach, will project (average normal) the sections unto the texture canvas.

Move around the sections untill you are satisfied. Then create a texturemap from the UV-Map, do not forget to set 'draw all lines' in the options. Repeat this for all UV's the model uses. Close the UV-window and rename the texture file in the 'outliner'. Export the file. (note: win-wings does not support PNG-format, use BMP)

You may want to look at Daniel Walker's texture guide.

Beginners and non-2D-artists may prefer to begin here, instead.

Step 2

Now edit the file in your graphic software.

When you are satisfied with your results, save and go back to wings3D. Most probably you have saved under a new filename, so 'import-image' it. Now drag the edited texture to it's corresponding UV-Map. Your texture should now appear on the model (place some light sources first). Check if all the various parts line up correctly.

Edit the texture some more if you are not impressed with your results, save under the same name and in wings3D select 'refresh' image in the outliner.

Export model

Before you export, make sure the texture images are 'internal'. Export in *.dat-format.

win-wings users:

  • Export in *.obj + *.mtl.
  • Rename the texture references in the mtl-file from *.bmp to *.png)
  • Open texturefiles and save as *.png.
  • Convert the obj+mtl files to *.dat format via Obj2DatTexNorm.py.

Important comment from a_c

Arachnid Mark 1 (custom shaders disabled, used Oolite shaders)
Serpent Class Cruiser
Some lighting and material tips here:

1. Decide what your ship should look like early on. Decide on the type of materials you need for each single part of it. Don't just go with it thinking that you just need to "dress it up" with a texture. If you do, it will most likely end up looking like the texture is a piece of color paper wrapped around a model.

2. Materials are divided into two major categories: metals and dielectrics (i.e. non-metals). Here are some basic guidelines for each:

Metals:
- Specular: Usually white or some shade of gray, values usually in the range of 0.65 - 0.75. Metals can have tinted specular too, e.g. gold, copper. You define this tint in the specular map or with specular_color.
- Gloss: Up to the artist. Experiment until you see something you like.
- Diffuse: Pure metals always have black diffuse color.

Dielectrics:
- Specular: Very low. Usually around (0.04, 0.04, 0.04). Dielectrics never have tinted specular, unless you are trying to create impossible materials. Things like water have even less specular. For example, the specular value used for the ocean specular reflections in the Lave is Earth OXP is 0.02. Some materials may have slightly different specular values, but normally they are low and materials with specular at around 0.4-0.5 are extremely rare to non-existent. If you are unsure what value to use for your material and you know it is a dielectric, use 0.04.
- Gloss: Depends. Normally on the artist and the appearance they want to achieve. Plastic for example usually has high gloss values but it is not a rule, just a guideline.
- Diffuse: Whatever color your material is. Important - DO NOT include lighting information in a diffuse map - it will look totally off when viewed from the wrong angles. Just put the color of the material there and let the shaders decide on how the lighting will look.

3. The type of material you want to use is not what your object of interest is made of, but what it is on the surface that will reflect the light. Practical example: If your ship is made of titanium and has a coat of paint all over it, the material you want to try to reproduce is paint (which is dielectric) and not titanium.

4. Re normal maps - Try to make details that have a purpose on them. The Arachnid above has a normal map with lots of details, but they are just fluff without purpose. Griff's ships have details on the normal map that seem to outline objects that "do something". The Serpent class above also.

5. Generally speaking, you will get much better results if you use spec and gloss maps rather than numeric values for spec and gloss in the material definition. The reason is that you can describe much better the variations of materials over your surface. You can also describe variations within the same material (e.g. a shiny ship that has a part of a wing that's rusty or dusty - this can be achieved only by texture).

6. Gloss is where an artist has completely free reign. While the other properties are more or less governed by physics, gloss is whatever you want it to be. That is your chance to be truly creative.

Internal Links

Texture/Shaders related

Other texture tutorials

His tutorial document can be downloaded in pdf format here https://app.box.com/s/adl2gw654juwlkamyeol
The accompanying resource packs can be downloaded here https://app.box.com/s/njsbp935aseegsegh18l
  • SimonB's Tutorial (2009) UV map, diffuse map, effects map, normal map.
  • F C Textures: howto texture by Flying Circus (2006: pre-shaders; mirror planing a texture using Wings3D & Gimp)

Planet textures

Ideas: Griff's SpecGloss Sidewinder showing deterioration due to lack of maintenance
Ideas: Smiv's "damaged Cobra" texture

Ideas

See his comment here on how he did it (2024)

Other help

External Links

Wings 3D

Blender

GIMP

General

Free textures

Eric Mayas has thousands of free textures here: https://soundimage.org/images-home-page/ (SciFi, metal, stone, vegetation etc.)

Models needing texturing

There are a number of half finished models which just need texturing which can be found here: Brilliant but broken... - see specifically Gsagostinho's station experiments, but there are also a number of ships.

There are also many untextured models here: https://www.solcommand.com/ including stations, ships, greebles, floating gas giant cities etc.

The other thing which would be great would be more moons (there are rather few of them) and more planets (ideally with city lights added in - note that currently on the AppleMac that phkb's Tianve city lights don't work but a_c's Lave is Earth 8k do.)!