Skip to content

SkinMeshDataProperties

Inheritance 1 descendant

Class Documentation

Edit documentation

The skinned mesh of a character skin, and how each of its submeshes is shaded. Every character skin embeds one, so champions, map units and TFT companions all use it.

Material per submesh. The client picks a material for each submesh of the mesh. The first rule that matches wins:

# Condition The submesh draws with
1 A materialOverride entry names the submesh and sets Material the entry's material
2 A materialOverride entry names the submesh and does not set Material LIT_UBER, built from the entry's textures
3 Material is set Material
4 None of the above LIT_UBER, built from this object's textures

LIT_UBER is the engine's built-in shader for skinned meshes (SkinnedMesh/LIT_UBER_VS and LIT_UBER_PS). It is not a StaticMaterialDef: it takes its textures from the texture fields of this class, and which of them are set selects its shader variant. A submesh that resolves to a material (rules 1 and 3) does not use LIT_UBER; the material's own samplers shade it.

In shipped data about one skin in five sets Material, and about two in three override entries set textures only.

Properties

0x8881ee77

Pointer<0x80f31f46> = null
16.9
Edit documentation

Four extra constants for LIT_UBER. The client sets them on the LIT_UBER material of every submesh that has no Material (rules 2 and 4):

Field of the linked object LIT_UBER constant Value when unset
0xed8edf74 albedoNewMin 0.1
0xdba24ad6 albedoNewMax 1
RimOffset rimOffset 0.2
0xe9552339 modelHeight 275

A materialOverride entry that sets its own 0x8881ee77 uses that object for its submesh instead. When neither is set, the client uses the values in the last column.

0xc2357dbf

Vec3 = [90, 0, 0]
Removed in 16.20 16.16
Edit documentation

Direction of the mesh's rim light, as three rotation angles in degrees. The client rotates the vector (0, 0, -1) by these angles and passes the result as the RIM_LIGHT_DIR shader constant.

0xde85a7d3

F32 = 0
Removed in 16.20 16.16
Edit documentation

Contrast of the mesh's rim light. The client passes it as the RIM_LIGHT_CONTRAST shader constant.

0xf37c6128

Bool = true
Removed in 16.20 16.16
Edit documentation

Turns the mesh's rim light on or off. The client passes it as the w component of the RIM_LIGHT_COLOR shader constant: 1 when true, 0 when false.

EmitterSubmeshAvatarToHide

String = ""
Edit documentation

A list of submesh names in the same format as initialSubmeshToHide. The client turns it into a submesh set when it builds the mesh.

EnablePicking

Bool = true
Edit documentation

When false, the client discards the triangle data of the mesh's collision object after it builds it. A ray test against the triangles of this mesh then never hits. The per-bone bounding spheres of the collision object are still built.

ForceDrawLast

Bool = false
Edit documentation

A flag the mesh instance exposes to the renderer. The code that reads it is not yet identified.

InitialSubmeshAvatarToHide

String = ""
Edit documentation

A list of submesh names in the same format as initialSubmeshToHide. The client turns it into a submesh set when the mesh instance is created.

Material

Link<IMaterialDef> = "0x0"
Edit documentation

The StaticMaterialDef for every submesh that no materialOverride entry names (rule 3). When it is unset, those submeshes draw with LIT_UBER and this object's textures.

OutlineCategorySubmeshes

List2<CharacterOutlineSubmeshes> = []
16.10
Edit documentation

Submeshes that draw a second time with an outline material. For each entry whose category is set, the client finds the submeshes named in Submeshes (same list format as initialSubmeshToHide). When those submeshes draw, the client draws them again with the entry's materialOverride or, if that is unset, with the Material of the entry's category.

ReducedBoneSkinning

Bool = false
Edit documentation

When true, each vertex keeps only its two largest bone weights instead of four. The two weights are scaled so that they add up to 1, and the other two are set to zero. This is done when the .skn is loaded.

RimLightColor

Vec3 = [1, 1, 1]
Removed in 16.20 16.16
Add documentation

No documentation available yet. Click "Add documentation" to contribute!

RoughnessMetallicAoTexture

File = "0x0"
Type history (2 revisions)
  • 13.15 - 16.16 String
  • since 16.17 File
Edit documentation

Packed roughness, metallic and ambient-occlusion map for LIT_UBER. Setting it selects the metallic-roughness variant (FEATURE_ROUGHNESS_METALLIC) and changes the shading model from SkinnedStandardShadingModel to SkinnedPbrShadingModel. This texture is the only thing that selects between the two for LIT_UBER.

SocketDefinitions

List2<SocketDefinitionBase> = []
16.15
Edit documentation

The skin's sockets: named points on the skeleton that a lookup by bone name can find when no joint has that name.

boundingCylinderHeight

F32 = 150
Edit documentation

Height, in world units, of the bounding cylinder stored with boundingCylinderRadius.

boundingCylinderRadius

F32 = 50
Edit documentation

Radius, in world units, of the bounding cylinder the client stores on the mesh's collision object, together with boundingCylinderHeight.

boundingSphereRadius

Option<F32> = null
Edit documentation

Radius, in world units, of a bounding sphere stored on the mesh's collision object. When it is unset, the stored radius marks the sphere as absent.

brushAlphaOverride

F32 = 0.25
Edit documentation

Stored with the built mesh. The code that reads it is not yet identified.

castShadows

Bool = true
Edit documentation

When false, the client skips the mesh in its skinned-mesh shadow pass, including the draw with the SkinnedMesh/SHADOW_MAP shaders, so the unit casts no shadow.

emissiveTexture

File = "0x0"
Type history (2 revisions)
  • 13.15 - 16.16 String
  • since 16.17 File
Edit documentation

Passed to LIT_UBER together with the other textures. How the shader uses it is not yet identified.

fresnel

F32 = 0
Edit documentation

Strength of the fresnel term of LIT_UBER. The shader receives 0.1 + 4.9 * fresnel in the w component of vFresnel and FRESNEL, with fresnelColor in x, y and z.

fresnelColor

Color = [0, 0, 0, 255]
Edit documentation

Colour of the fresnel term of LIT_UBER. The red, green and blue channels go to the x, y and z components of vFresnel and FRESNEL, from 0 to 1. The alpha channel is not used.

glossTexture

File = "0x0"
Type history (2 revisions)
  • 13.15 - 16.16 String
  • since 16.17 File
Edit documentation

Gloss map for LIT_UBER's reflective variant (REFLECTIVE). On the high-quality path, LIT_UBER binds this texture as its gloss map and reflectionMap as its reflection map. On the other path neither is bound. Shipped values are gloss maps (_tx_gm.tex).

Examples:
  • assets/characters/amumu/skins/skin16/amumu_skin16_tx_gm.tex

initialSubmeshMouseOversToHide

String = ""
Edit documentation

A list of submesh names in the same format as initialSubmeshToHide. The client turns it into a submesh set when the mesh instance is created.

initialSubmeshShadowsToHide

String = ""
Edit documentation

Submeshes that do not cast shadows, as a list in the same format as initialSubmeshToHide. The client builds the unit's shadow submesh set from everything not in this list.

initialSubmeshToHide

String = ""
Edit documentation

Submeshes that are hidden when the mesh instance is created. The value is a list of submesh names separated by spaces, commas, | or :, matched without case. A name that matches no submesh is ignored.

Examples:
  • Recall

materialController

Pointer<SkinnedMeshDataMaterialController> = null
Edit documentation

An object that changes the materials of this mesh per unit. When it is set, the client gives the controller a copy of the submesh materials of each unit that uses the mesh when the mesh is set up, and again on updates when the controller asks for them.

materialOverride

List<SkinMeshDataProperties_MaterialOverride> = []
Edit documentation

Per-submesh exceptions to Material and to this object's textures. Each entry names one submesh in submesh:

  • An entry that sets Material shades its submesh with that material (rule 1).
  • An entry without Material shades its submesh with LIT_UBER, built from the entry's own texture, glossTexture, RoughnessMetallicAoTexture and normalMapTexture (rule 2).

Entries come before the top-level Material, so a texture-only entry keeps its submesh on LIT_UBER even when Material is set.

normalMapTexture

File = "0x0"
Type history (2 revisions)
  • 13.15 - 16.16 String
  • since 16.17 File
Edit documentation

Normal map for LIT_UBER. Setting it selects the shader's tangent-frame variant (FEATURE_TANGENT).

overrideBoundingBox

Option<Vec3> = null
Edit documentation

Size of the mesh's bounding box on the x, y and z axes, in world units. When it is unset, the client uses the size of the bounds in the .skn.

reflectionFresnel

F32 = 1
Edit documentation

Fresnel strength of LIT_UBER's reflective variant (REFLECTIVE). The shader receives 0.1 + 4.9 * reflectionFresnel in the x component of vReflection.

reflectionFresnelColor

Color = [255, 255, 255, 255]
Edit documentation

Colour of the reflection fresnel of LIT_UBER's reflective variant. The red, green and blue channels go to vReflectionFColor, from 0 to 1, with w set to 1. The alpha channel is not used.

reflectionMap

File = "0x0"
Type history (2 revisions)
  • 13.15 - 16.16 String
  • since 16.17 File
Edit documentation

Reflection map for LIT_UBER's reflective variant, bound together with glossTexture on the high-quality path only. Shipped values are cube maps (_cubemap.dds).

Examples:
  • assets/characters/blitzcrank/skins/base/blitzcrank_base_cubemap.dds

reflectionOpacityDirect

F32 = 0
Edit documentation

Reflection opacity for LIT_UBER's reflective variant, passed in the y component of vReflection. How the shader uses it was not checked.

reflectionOpacityGlancing

F32 = 1
Edit documentation

Reflection opacity for LIT_UBER's reflective variant, passed in the z component of vReflection. How the shader uses it was not checked.

rigPoseModifierData

List<BaseRigPoseModifierData> = []
Edit documentation

Rig pose modifiers for the skeleton: springs, dynamics chains and other changes to the pose after the animation. The client adds each entry to the mesh instance when it sets the instance up for a character skin.

selfIllumination

F32 = 0
Edit documentation

Self-illumination level of the mesh. When a submesh is drawn, the client writes this value to the SELF_ILLUMINATION shader constant (as x, y and z). The client can replace it at run time with an override value for the draw.

simpleSkin

String = ""
Edit documentation

Path of the skinned mesh (.skn). The client builds the mesh from this file together with skeleton. If the file does not load, the mesh is not built.

The built mesh, with its materials and submesh lists, is kept in a cache. For a character the cache key is this path plus the character name and skin number, compared without case, so every unit of the same character and skin shares one copy.

Examples:
  • ASSETS/Characters/KhaZix/Skins/Skin11/Khazix_Skin11.skn

skeleton

String = ""
Edit documentation

Path of the skeleton (.skl) the mesh is skinned to. The client loads it when it builds the mesh. If the skeleton does not load, the mesh is not built, and a character skin that uses this object does not load.

Examples:
  • ASSETS/Characters/KhaZix/Skins/Skin11/Khazix_Skin11.skl

skinScale

F32 = 1
Edit documentation

Uniform scale factor for the mesh. The client sets it as the scale of the mesh instance on all three axes, and multiplies the size of the mesh's local bounding box by it.

submeshRenderOrder

String = ""
Edit documentation

Draw order of the submeshes, as a list of submesh names in the same format as initialSubmeshToHide. The client first draws every submesh that is not in the list, in the order of the .skn. Then it draws the listed submeshes, in the order of the list. When it is unset, all submeshes draw in the order of the .skn.

texture

File = "0x0"
Type history (2 revisions)
  • 13.15 - 16.16 String
  • since 16.17 File
Edit documentation

Base colour texture for LIT_UBER. Shipped values are the skin's colour maps (_tx_cm.tex).

Examples:
  • assets/characters/aatrox/skins/skin26/aatrox_skin26_tx_cm.tex

usesSkinVO

Bool = false
Edit documentation

Selects the name the client uses for the unit's audio. When true, it uses the unit's skin name. When false, it uses the character record's charAudioNameOverride if that is set, and the character name if not.

Referenced by 6 classes · 6 properties