node package manager


quick-normal-map experimental


Takes a 2D heightmap stored in an ndarray and generates a matching normal map.

Uses a method that is fast, but less accurate - I believe this approach works best :)


normal(heightmap, [options])

Generates a normal map.

  • heightmap should be a 2D ndarray, where each value corresponds to the height at that point.

  • options.output is an optional 3D ndarray to output to. If not supplied, one will be created. It's essentially the same size as the heightmap but with an added dimension for X/Y/Z rotation values. So the shape of this ndarray should be equivalent to:

    [heightmap.shape[0], heightmap.shape[1], 3]
  • options.xzscale The scale of the horizontal planes. Defaults to 1.

  • options.yscale The scale of the vertical plane. Defaults to 1.

  • options.wrap a boolean for whether the heightmap is tiling and the normal map should wrap around the edges. Defaults to true.