Model loading · interface

IesProfile

A fixture's measured intensity, as a grid over vertical and horizontal angles.

Explained in Importing models.

interface IesProfile
import type { IesProfile } from '@driftengine/assets';

In depth

Candela rather than a normalised curve, because the two answer different questions and only one of them is in the file: the shape of the distribution is what a renderer samples, and the absolute output is what tells a consumer whether this fixture is a reading lamp or a floodlight. Normalising here would throw the second away, and a consumer that wants the shape can divide by maxCandela — which is why it is carried rather than left to be recomputed.

Properties

NameTypeDescription
verticalAnglesreadonlyFloat32ArrayVertical angles in degrees, increasing. 0 is straight down for the common type-C fixture.
More

Not resampled to a regular grid here. A real file is dense where the distribution changes and sparse where it does not, and flattening that is a decision about a texture rather than about a file — iesProfile.ts in the renderer makes it.

horizontalAnglesreadonlyFloat32ArrayHorizontal angles in degrees, increasing. A single 0 means the fixture is axially symmetric.
candelareadonlyFloat32ArrayCandela, horizontal-major: all vertical angles of the first plane, then the second.
maxCandelareadonlynumberThe brightest value in the grid, so a consumer can normalise without walking it again.