## Name

![Icon](/res/icons/16x16/app-3d-file-viewer.png) 3D File Viewer

[Open](file:///bin/3DFileViewer)

## Synopsis

```**sh
$ 3DFileViewer [file]
```

## Description

`3D File Viewer` is an application for viewing 3D models.

It currently supports opening the [Wavefront OBJ file format](https://en.wikipedia.org/wiki/Wavefront_.obj_file) (`.obj`).

## Features

By default, 3D File Viewer opens with a rotating [Utah teapot](https://en.wikipedia.org/wiki/Utah_teapot), a standard 3D test model. Open files via *File → Open* (`Ctrl+O`) or dragging and dropping files into the application. Sample files can be found in `Documents/3D Models`.

Orbit around the model by grabbing it with the cursor, and zoom in and out with the mouse wheel.

### View Options

* View in Fullscreen mode by pressing `F11` and press `Esc` to return to windowed mode.
* **Rotation Axis** - Enable or disable rotation:
    * **X** rotates upwards.
    * **Y** rotates right.
    * **Z** rotates clockwise.
* **Rotation Speed** - Set to slow, normal, fast or disable.
* **Show Frame Rate** - Display FPS (frames per second) and frame time values (indicating how long it took to render a single frame) in the top-right corner.

### Texture Options

To load a texture, ensure there's a [Bitmap image file](https://en.wikipedia.org/wiki/BMP_file_format) (`.bmp`) with the same name as the OBJ file in the same folder and 3D File Viewer will attempt to load it automatically.

* **Enable Texture** - On by default, disable for a blank (gray) model.
* **Wrap S or T** - Controls how a texture is applied horizontally (S) or vertically (T):
    * **Repeat** - Tiles the texture along the axis.
    * **Mirrored** - Tiles and mirrors the texture along the axis.
    * **Clamp** - Stretches or clamps the texture edges instead of repeating it.
* **Scale** - Adjusts texture size (e.g. `0.5` reduces by half, `2x` doubles the size).
* **Mag Filter** - Determines the appearance of textures when enlarged beyond their original resolution.
    * **Nearest** - *Nearest Neighbor* means no scaling is applied to the texture, resulting in a pixellated look.
    * **Linear** - *Linear Interpolation* scales the image by estimating pixel values, resulting in a smoother image.

Currently, the flashing color lights can't be disabled.

Settings persist whilst the application is open with different files, but do not persist between sessions.

## Arguments

* `file`: The 3D file to be viewed.

## Example

```**sh
$ 3DFileViewer Documents/3D\ Models/ladyball.obj
```
