Heightmap

**Heightmap**, atau kadang disebut **heightfield**, adalah representasi digital dari permukaan tiga dimensi (3D) dalam bentuk data dua dimensi (2D). Bayangkan ini seperti peta topografi digital. Setiap "piksel" atau titik dalam heightmap menyimpan nilai ketinggian (elevasi) dari permukaan tersebut. Dalam grafik komputer, heightmap utamanya digunakan untuk memodelkan medan (terrain), tapi juga bisa dipakai untuk membuat detail permukaan pada objek 3D lainnya.

## Cara Kerja
Sebuah heightmap biasanya berupa citra *raster*, seperti gambar bitmap biasa, di mana setiap pikselnya mewakili satu lokasi di permukaan. Ketinggian di lokasi tersebut ditentukan oleh **intensitas warna piksel**:

* **Piksel gelap (mendekati hitam)** menunjukkan ketinggian yang rendah.
* **Piksel terang (mendekati putih)** menunjukkan ketinggian yang tinggi.

Saat heightmap ini diproses oleh perangkat lunak atau mesin grafis, nilai ketinggian dari setiap piksel digunakan untuk "mengangkat" atau "menurunkan" titik-titik pada sebuah jaring datar (grid) secara vertikal. Hasilnya adalah permukaan 3D yang memiliki lekukan, bukit, lembah, atau detail lain sesuai dengan perbedaan warna di heightmap. Desainer bisa mengatur seberapa besar perbedaan ketinggian yang diwakili oleh setiap perubahan warna, yang akan memengaruhi "kontras" visual medan yang dihasilkan.

### Presisi Ketinggian
Standar citra grayscale 8-bit hanya bisa menyimpan 256 tingkat ketinggian yang berbeda (dari hitam ke putih). Untuk detail yang lebih halus, terutama pada area luas dengan perbedaan ketinggian yang samar, ini bisa membuat medan terlihat "bertangga" atau tidak mulus. Untuk mengatasi ini, heightmap bisa menggunakan:

* **Saluran warna individual:** Citra RGB 24-bit dapat menyimpan lebih dari 16 juta tingkat ketinggian (256 x 256 x 256).
* **Saluran alfa (alpha channel):** Jika ditambahkan ke RGB, ini bisa meningkatkan presisi hingga lebih dari 4 miliar tingkat ketinggian.

Selain itu, heightmap juga bisa disimpan sebagai susunan (array) dua dimensi dari nilai numerik langsung (misalnya, bilangan floating-point) tanpa perlu representasi warna, yang sering kali memberikan presisi yang lebih tinggi.

## Aplikasi
Heightmap punya banyak kegunaan di berbagai bidang:

* **Pengembangan Permainan Video:** Ini adalah metode paling umum untuk membuat medan dalam permainan. Desainer bisa dengan cepat menciptakan lingkungan yang luas, dari pegunungan hingga dataran rendah, hanya dengan mengedit gambar 2D.
* **Simulasi:** Digunakan dalam simulasi penerbangan, simulasi militer, atau simulasi lingkungan untuk merepresentasikan topografi bumi secara akurat.
* **Visualisasi Data Geospasial:** Dalam Sistem Informasi Geografis (GIS), heightmap adalah bentuk dari *Digital Elevation Model* (DEM) yang digunakan untuk memvisualisasikan elevasi permukaan bumi.
* **Pemodelan 3D:** Selain medan, heightmap juga dipakai untuk menambahkan detail pada permukaan objek 3D lain. Misalnya, *displacement mapping* menggunakan heightmap untuk secara fisik mengubah bentuk permukaan, sementara *bump mapping* atau *normal mapping* menggunakannya untuk menciptakan ilusi kedalaman dan tekstur tanpa mengubah geometri asli.
* **Seni Digital:** Seniman digital menggunakannya untuk menciptakan tekstur yang memberikan kesan timbul atau cekung pada permukaan digital.

## Kelebihan dan Kekurangan
Seperti teknologi lainnya, heightmap memiliki pro dan kontranya:

### Kelebihan

* **Penyimpanan Efisien:** Heightmap hanya perlu menyimpan satu nilai (ketinggian) untuk setiap titik, tidak perlu tiga koordinat (X, Y, Z).
* **Penciptaan yang Mudah:** Relatif gampang dibuat dan dimodifikasi menggunakan perangkat lunak pengedit gambar atau alat khusus pembuat medan.
* **Rendering Cepat:** Struktur datanya yang sederhana memungkinkan mesin grafis untuk merendernya dengan sangat cepat.

### Kekurangan

* **Tidak Cocok untuk Topografi Kompleks:** Heightmap memiliki batasan utama: setiap titik di bidang horizontal hanya bisa memiliki satu ketinggian. Artinya, fitur seperti gua, lengkungan gantung, tebing yang menggantung ke belakang, atau jembatan tidak bisa direpresentasikan secara langsung menggunakan heightmap tunggal.
* **Batasan Detail Vertikal:** Jika tidak menggunakan format dengan presisi bit yang tinggi, detail vertikal bisa terlihat kurang halus atau "bertangga".

## Format File Umum
Heightmap bisa disimpan dalam berbagai format file gambar, baik yang umum maupun yang spesifik untuk aplikasi tertentu:

* **[[Grafis Jaringan Mudah Alih|PNG (Portable Network Graphics)]]:** Sering dipakai karena kompresi tanpa kehilangan data dan dukungan untuk kedalaman bit yang berbeda.
* **RAW:** Format data mentah yang hanya menyimpan nilai ketinggian secara langsung, tanpa metadata tambahan.
* **[[Tagged Image File Format|TIFF (Tagged Image File Format)]]:** Mendukung berbagai kedalaman bit dan bisa menyimpan metadata.
* **[[Bitmap|BMP (Bitmap)]]:** Format gambar tanpa kompresi yang juga bisa digunakan.
* **Format Spesifik:** Beberapa perangkat lunak pembuat medan memiliki format heightmap mereka sendiri, seperti *Daylon Leveller*, *GenesisIV*, dan *Terragen*.

## Lihat pula

* Model warna CcMmYK
* Mode warna CMYK
* Mode warna Grayscale

## Referensi