For the most common case of an object that's symmetric about the vertical axis, it produces a height map for the object of rotation. For example, it will convert a filled circle to a spherical height map, a filled isosceles triangle to a conical height map, and a filled rectangle to a cylindrical height map.

Texture Object Rounder converts objects to height maps by making the horizontal cross-sections circular. For the effect to work correctly, horizontal lines through each object should not pass through indentations or holes, such as those in a heart shape or a torus.

The controls are:

Height Map Scale: Scales the height map. When set to 1.0, the height map will appear circular when the Texture Height Scale is 255. For wide objects this may result in the height map's heights overflowing. To remedy this problem, decrease this control's value, and correspondingly increase Texture Height Scale.

Produce 24-Bit Height Map: When enabled, the height map will have 24-bits of precision. When disabled, the height map will be an 8-bit grayscale image.

Show Shading (Disable before exiting): Specifies the height map should be shown as shaded. To preserve the height map for later use, this option must be disabled before exiting. All the controls that follow are used only to control shading, and have no effect on the rounded height map produced.

Ambient Light Intensity: Increases or decreases the intensity of the Ambient Light. Ambient light affects every pixel identically, independent of the gradient.

Directional Light Direction: Sets the direction of the Directional Light. The Directional Light's effect on a pixel is determined by light's direction and the texture's gradient at the pixel. (The control's outer ring currently has no function.)

Directional Light Intensity: Increases or decreases the intensity of the Directional Light. The directional light contributes both diffuse and specular (reflected) light.

Specularity: Determines the shininess of the surface. Increasing this value decreases the diffuse lighting and increases the specular lighting.

The initial version is imperfect. The height maps produced are sometimes quite ridgy when shaded. The ridges result from errors in computing the outer silhouette of the object. To produce a smooth height map, the object's edge must be determined with subpixel accuracy. This is accomplished by using the alpha values of the edge pixels. My current algorithm isn't as accurate as I would like. I have some ideas to improve it, but they're somewhat complex. I decided to release the current version, as is. I hope to provide a better version in not too long. The Texture Smoother may help smooth the ridges.

The objects to be rounded are normally produced using the Shape and Line/Curve tools. For example, you can draw a shape with the Line/Curve tool, duplicate the layer, horizontally reflect the layer, merge the layers, then fill with the Paint Bucket. Fill with care so that all the interior pixels are filled. A well-antialised edge is necessary for a smooth texture.

Share this post

Link to post

Share on other sites

As additional explanation, I added: "For the most common case of an object that's symmetric about the vertical axis, it produces a height map for the object of rotation. For example, it will convert a filled circle to a spherical height map, and a filled rectangle to a cylindrical height map."

Share this post

Link to post

Share on other sites

This is amazing. I think you can do a 3D-ish chess piece on this and many more! If you could combine shapes that it supports.

Thank you! The Texture Merger should help in combining shapes. The usual method is to use the Maximum merge mode. Make sure to set the Merged Height Alpha Source to Composite Alpha, so both height maps are visible.