User Tools

Site Tools


gamedev:skinproperties

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gamedev:skinproperties [2012/12/01 17:57]
dragonlord
gamedev:skinproperties [2017/07/29 00:05] (current)
dragonlord [Examples]
Line 3: Line 3:
 </​WRAP>​ </​WRAP>​
  
-The Drag[en]gine game engine uses a very open and flexible way to handle skins for models. Instead of defining hard coded material properties that can not be changed ​anymore ​the principle of dynamic texture properties ​is used. A texture property defines one property of a material the texture composes of. A texture property is identified by a unique name which defines what corresponding material property is altered. The names are not defined by the game engine itself. They can be chosen arbitrarily as long as the various modules ( Graphic, Audio and Physics ) and the Artists ​attribute the same meaning to the same names. For this purpose a **[[texturepropertylist|list of texture properties]]** is maintained here providing texture property names and their intended use. Modules and Artists ​should stick to this **[[texturepropertylist|list of texture properties]]** for existing property names but can of course introduce new ones to enhance the engine.+The Drag[en]gine game engine uses a very open and flexible way to handle skins for models. Instead of defining hard coded material properties that can not be changed ​any more the principle of //**Dynamic Texture Properties**// ​is used. A texture property defines one property of a material the texture composes of. A texture property is identified by a unique name which defines what corresponding material property is altered. The names are not defined by the game engine itself. They can be chosen arbitrarily as long as the various modules (Graphic, Audio and Physics) and artists ​attribute the same meaning to the same names. For this purpose a **[[texturepropertylist|list of texture properties]]** is maintained here providing texture property names and their intended use. Modules and artists ​should stick to this **[[texturepropertylist|list of texture properties]]** for existing property names but can of course introduce new ones to enhance the engine
 + 
 +The default skin texture format is XML based and can be edited by hand or generated. It is easier though to use the **[[gamedev:​deigde:​editors:​skin|Skin Editor (*.deskin)]]** to edit these resources. This editor provides also a visual preview of the edited skin and also provides support to test **[[gamedev:​renderables|Dynamic Skin]]** functionality before using the skin in-game.
  
 Properties can define a material property in various ways. Properties can define a material property in various ways.
Line 15: Line 17:
 Defines the property using an image. The UV coordinates stored in a mesh are used to index into the image. The range of UV coordinates is matched to the size of the texture with uv=(0,0) being the upper left corner and uv=(1,1) the lower right corner. The format of the image can be 8-bit gray scale ( often called intensity images ), 32-bit RGB ( 3-color image ) or 32-bit RGBA ( 3-color image with alpha channel ). In memory the image is arranged in the same way in row order from left to right and top to bottom without any padding. Specifying a static color for an image is allowed but not the other way around. Defines the property using an image. The UV coordinates stored in a mesh are used to index into the image. The range of UV coordinates is matched to the size of the texture with uv=(0,0) being the upper left corner and uv=(1,1) the lower right corner. The format of the image can be 8-bit gray scale ( often called intensity images ), 32-bit RGB ( 3-color image ) or 32-bit RGBA ( 3-color image with alpha channel ). In memory the image is arranged in the same way in row order from left to right and top to bottom without any padding. Specifying a static color for an image is allowed but not the other way around.
  
-====== ​Renderable ​====== +====== ​Video ====== 
-Using static colors or images a texture is static and has the same look all the timeUsing renderables though you can change individual texture properties on the fly during a game. For this specify ​name for the texture property. The name is not required ​to be unique ​and allows therefore to use a renderable content for more than one texture property simultaneouslyOnce specified ​the user can add renderable ​to a component ​and fill it with appropriate values. Specifying a renderable name overrules all other definitions.+Defines ​the property using an videoThe UV coordinates stored in mesh are used to index into the video images. The range of UV coordinates ​is matched ​to the size of the video with uv=(0,0) being the upper left corner ​and uv=(1,1) the lower right cornerThe format of the video can be 8-bit gray scale, 24-bit RGB or 32-bit RGBA. A video is automatically played back using play speed relative ​to the update calls done to the world object containing ​a component with a video texture property. In contrary to videos used over renderables the control over static videos is limited. Specifying a static color for an video is allowed but not the other way around.
  
-====== ​Sources ​====== +====== ​Constructed ​====== 
-All types mentioned above produce ​static textureThese textures ​are the fastest ones and require the least memory as the individual parts of the texture can be reusedSometimes though complex and dynamic ​textures are requiredFor this a source ​can be specifiedA source ​is the root of a tree defining ​the production process of a texture. ​This method ​is very flexible but also not that fast. If you need highly dynamic textures have a look first at renderables ​and use self painted images of video frames insteadWith the growing artistic content of games it is good idea to avoid costly textures. Specifying ​source ​overrules ​image and static ​color but not renderables.+Constructed type allows to build images for properties using CAD like interfaceThe graphic module creates the final images for use with textures ​from the constructed image at runtime. This allows to create modifications ​of existing textures or assembling complex textures from shared images without ​the need to go through a full art production pipelineFurthermore constructed ​textures are useful to create 3 dimensional images. 
 +======= Renderables ======= 
 +In addition each texture property ​can be assigned a renderable nameUsing static colors or images a texture ​is static and has the same look all the time. Using renderables though you can change individual ​texture ​properties on the fly during a gameThe renderable name is not required to be unique ​and allows therefore to use a renderable content for more than one texture property simultaneouslyOnce specified ​the user can add renderable ​to a component and fill it with appropriate values. A renderable ​overrules ​the static property as soon as the renderable name is not empty and a component contains a dynamic skin with a renderable of the same name. You can thus use a renderable to dynamically alter a texture property or let it be static ​if not used. This gives a lot of flexibility even if you don't know if a component is actually going to provide dynamic content or not.
  
-A source can be either a producer or a combiner. A producer omits a value or an image and resides in the leafs of the tree. Combiners reside at the nodes and take one or more sources combining them into a new value or image. Furthermore sources can be static or dynamic. Most sources are static and produce the same content every time they are invoked. Dynamic sources have controllers that can be manipulated during run time using the Skin State of a Component. Dynamic sources should only be used if there is no other way since they tend to eat quite some time since the textures have to be updated each time a controller changes. 
  
 ======= Transforms ======= ======= Transforms =======
 Each property can have a transfrom assigned. Transform are used to manipulate the incoming texture coordinates before they are used for texturing. Transforms are similar to sources in that they are also organized in a tree shape. The advantage of transforms is that they are very fast and produce textures looking dynamic although they are not. Whenever possible use first a transform to animate a texture and resort to renderables or even sources only if there is no other way. Each property can have a transfrom assigned. Transform are used to manipulate the incoming texture coordinates before they are used for texturing. Transforms are similar to sources in that they are also organized in a tree shape. The advantage of transforms is that they are very fast and produce textures looking dynamic although they are not. Whenever possible use first a transform to animate a texture and resort to renderables or even sources only if there is no other way.
 +
 +====== Examples ======
 +<WRAP group>
 +<WRAP half column box centeralign>​
 +{{ youtube>​hsr2sBcAjck?​600x480 |Special Effects Video Texture}}
 +Using a Video Source to create a Special Effects texture.
 +</​WRAP>​
 +
 +<WRAP half column box centeralign>​
 +{{ youtube>​npBzQorenrg?​600x480 |Constructed Texture}}
 +Using a Constructed Source to create a texture on the fly.
 +</​WRAP>​
 +</​WRAP>​
 +
gamedev/skinproperties.1354384645.txt.gz · Last modified: 2012/12/01 17:57 by dragonlord