TINMAN 3D / REALTIME TERRAIN
Software Development Kit - User Manual

struct MaterialKey in Tinman.Terrain.Util

A MaterialKey defines the parameters that define the mapping from color values to material weights.

struct MaterialKey implements IComparable<MaterialKey>
  IEquatable<MaterialKey>

Remarks

For each material ID, a MaterialKey is defined in the containing MaterialKeys object. For a given color, material weights are computed for each key and the weighted materials are then combined into a material token.

The weight w for a material key is computed as follows:

  1. The relative color distance dst is computed between the material key color (see Color) and the input color. The Distance_RGB_RGB method is used as metric.
  2. The distance dst is divided by the configured distance range (see Distance), which reduces the range of the material key.
  3. The distance dst is clamped using the configured clamp amount (see Clamp): dst = max(0, Clamp - dst) / Clamp. This cuts off small material weights while retaining the full weight range.
  4. The distance dst is scaled by the configured weight (see Weight, yielding the final material weight. This affects how strong the material will be realized in relation to the other material keys.

Configuration

Config

The configurator object for this type.

public static property Config { get }
type IConfigurator<MaterialKey>
value [not-null] The configurator object.

Public / Constants

Invalid

The invalid (i.e. non-existent) material key.

public static readonly field Invalid
type MaterialKey

See also:

IsInvalid

Public / Attributes

Clamp

The relative clamp amount of this material.

public readonly field Clamp
type float64

Remarks:

A clamp amount less than one will cut off small material weights. A clamp amount greater than one will add small material weights.

Color

The color key of the material.

public readonly field Color
type int64

Distance

The color distance range of this material.

public readonly field Distance
type float64

Remarks:

The material has full weight where the color distance is zero. The weight drops to zero when this distance value is reached.

Influence

The overall influence of this material key.

public property Influence { get }
type float64
value [>=0] The relative influence.

IsInvalid

Is this material key invalid?

public property IsInvalid { get }
type bool
value true if this material key is invalid, false if it is valid.

See also:

Invalid

Material

The material ID in the range [0..255] or -1 if this material key is invalid (see IsInvalid).

public readonly field Material
type int32

Weight

The relative weight of this material.

public readonly field Weight
type float64

Public / Constructors

MaterialKey

Creates a new instance of MaterialKey.

public constructor MaterialKey (int32 material, int64 color, float64 distance = 1, float64 weight = 1, float64 clamp = 1)
params material [-1..255] The material ID or -1 for an invalid material key.
  color The color key of the material.
  distance [>=0] The color distance range of this material. Defaults to 1.
  weight [>=0] The relative weight of this material. Defaults to 1.
  clamp [>=0] The relative clamp amount of this material. Defaults to 1.

Public / Methods

CompareTo

public method CompareTo (MaterialKey other)
type int32
params other

ComputeWeight

Computes the material weight for the given color.

public method ComputeWeight (int64 color)
type int32
params color The color value.
returns [>=0] The material weight, as a 14.15 fixed point number.

Equals

public method Equals (MaterialKey other)
type bool
params other