Wednesday, September 30, 2015

Makalah Tugas Pengembangan Sistem Informasi Web GL

BAB I
PENDAHULUAN


1.1.       Latar Belakang Masalah

Era globalisasi dan komunikasi saat ini ditandai oleh banyaknya manusia yang memanfaatkan internet untuk memenuhi kebutuhan informasi yang semakin meningkat seiring dengan kemajuan di berbagai bidang. Bahkan saat ini bisa dikatakan bahwa internet adalah nyawa bagi sebagian orang untuk sekedar berkomunikasi, mencari dan menyebarkan informasi tentang lokasi wisata. Salah satu pengguna internet yang marak saat ini adalah untuk mengambarkan sebuah lokasi baik dengan mode 2d ataupun mode 3d. Seiring dengan berkembangnya World Wide Web (WWW) dan web browser yang semakin memuaskan pengguna, orang-orang mulai membuat sebuah web dengan antarmuka yang menarik tapi untuk mengambarkan sebuah objek tertentu kebanyakan orang hnya memebrikan gambaran dalam satu sudut pandang saja. Hal ini lah yang kini di lirik oleh perusahaan raksaksa IT yaitu Google yang telah mengembangkan teknologi sebuah pencitraan objek yang di padukan dengan pencarian lokasi mengunakan widget hoogle mapnya. Google membuat projek untuk mengambarkan sebuah lokasi dan objek dengan nyata mengunakan Web tiga dimensi (3D) sebuah solusi terbaik yang dapat digunakan untuk memecahkan masalah pencitraan objek selama ini. Web 3D adalah sebuah aplikasi yang memberikan kemampuan pada sebuah website untuk membuat sebuah tampilan objek tiga dimensi sehingga user dapat melihat interface serta menumenu yang disajikan dalam bentuk tiga dimensi, yang terpenting adalah dalam pembangunan web 3D ini harus ada respon dinamik dari user yang melakukan request dan dikerjakan di server. Salah satu teknologi yang dapat digunakan untuk membangun web 3D ini adalah WebGL Ide awal web 3D sepenuhnya adalah untuk menampilkan dan menavigasi situs web dengan menggunakan 3D dengan ekstensi. Istilah ini sekarang digunakan untuk semua konten 3D interaktif yang tertanam ke dalam halaman web HTML, dan dapat dilihat melalui browser web. Teknologi Web 3D biasanya membutuhkan software untuk meng-install sebuah tampil 3D Web untuk melihat jenis konten. Pengertian dari WebGL itu sendiri adalah konteks kanvas dari sebuah elemen HTML yang menyediakan grafis dengan objek tiga dimensi API yang diimplementasikan pada sebuah web browser tanpa menggunakan plug-in yang mengikutinya. WebGL memiliki layanan untuk menyediakan sebuah tampilan antarmuka program untuk grafis tiga dimensi. Teknologi terbaru ini menggunakan versi HTML5 dengan mengakses elemen kanvas dan kemudian diakses menggunakan Document Object Model Interface. Pada penelitian ini akan diangkat sebuah topik tentang penjualan ikan berbasis 3D. Topik tersebut dipilih karena banyak web yang menawarkan penjualan ikan masih dalam bentuk objek dua dimensi, yaitu dengan menggunakan gambar saja, dan user hanya melihat objek dalam satu sisi saja. Dengan adanya kekurangan ini, maka penulis bermaksud membuat web penjualan ikan yang dibuat dalam objek 3D yang dapat dilihat dari semua sisi dengan memanfaatkan animasi.

1.2.       Batasan Masalah

Pada penulisan ini dibatasi permasalahan pada objek lokasi museum nasional yang terletak di Jl. Medan Merdeka Barat No.12, Jakarta Pusat, DKI Jakarta 10110, Indonesia. Mengambil gambar di sekitar museum nasional saja yang telah di bagi menjadi beberapa denah tertentu. Aplikasi berjalan mengunakan browser untuk mengaksesnya dan mengunakan internet untuk mengambil informasi.

1.3.       Tujuan Penelitian
Tujuan dari suatu perancangan aplikasi ini adalah,
1  Memudahkan user untuk melihat panorama di sekitar objek museum nasional.
2  Memberikan penjelasan tentang objek-objek museum nasional
3  Sebagai pencitraan museum untuk melihat keseluruhan lingkungan museum tanpa perlu mengunjungi museum nasional.
4  Memudahkan mengakses informasi museum nasional
5  Memudahkan melihat denah di dalam museum nasional

1.4.       Metode Penelitian
Dalam memperoleh data informasi yang digunakan dalam penelitian yang direalisasikan dalam penulisan ini, penulis menggunakan studi pustaka sebagai sumber data yang akan dipakai dalam aplikasi ini. Pada tahap pengenalan aplikasi, penulis memanfaatkan internet sebagai bahan referensi dan sumber data mengenai informasi museum nasioanal dan juga metode web GL.
Pada tahap perncangan, penulis menggunakan Struktur Navigasi Campuran untuk menggambarkan secara garis besar isi dari seluruh aplikasi dan menggambarkan bagaimana hubungan antara isi-isi tersebut dan apa keterkaitannya satu sama lain.
Pada tahap pembuatan aplikasi, yaitu dengan turun langsung untuk mengambil gambar objek dalam museum nasional dengan mengunakan kamera DSLR.
Tahap terakhir yang merupakan tahap implementtasi dan pembuatan aplikasi ini. Pada tahapan ini dilakukan proses uji coba pengaksesan aplikasi apakah dapat berjalan tanpa adanya debug atau masalah dalam emulator aplikasi atau pun dalam pengaplikasian pada web browser.

1.5.       Sistematika Penulisan
Adapun pembuatan penulisan pada penelitian ini dilakukan dengan membagi penulisan menjadi beberapa bab, yaitu sebagai berikut:
BAB 1   Pendahuluan
Pada bab ini berisikan tentang latar belakang masalah, rumusan masalah, batasan masalah, tujuan penelitian, metode penelitian, sistematika penulisan.
BAB 2   Tinjauan Pustaka
Pada bab ini menjelaskan tentang teori dasar dan komponen-komponen utama yang digunakan pada perancangan.
BAB 3   Perancangan dan Implementasi
Pada bab ini berisi tentang tahapan penelitian yang dilakukan antara lain tahap analisis kebutuhan, tahap analisis blok diagram, tahap analisis masukan dan keluaran, tahap analisis diagram alur, serta tahap analisis software.
BAB 4   Penutup
Pada bab ini berisikan tentang simpulan dari perancangan serta saran-saran terhadap perancangan yang dibuat.






BAB II
TINJAUAN PUSTAKA




2.1.Sejarah Museum Nasional
    Cikal bakal museum ini lahir tahun 1778, tepatnya tanggal 24 April, pada saat pembentukan Bataviaasch Genootschap van Kunsten en Wetenschappen. J.C.M. Radermacher, ketua perkumpulan, menyumbang sebuah gedung yang bertempat di Jalan Kalibesar beserta dengan koleksi buku dan benda-benda budaya yang nanti menjadi dasar untuk pendirian museum. Di masa pemerintahan Inggris (1811-1816), Sir Thomas Stamford Raffles yang juga merupakan direktur dari Bataviaasch Genootschap van Kunsten en Wetenschappen memerintahkan pembangunan gedung baru yang terletak di Jalan Majapahit No. 3. Gedung ini digunakan sebagai museum dan ruang pertemuan untuk Literary Society (dahulu bernama "Societeit de Harmonie".) Lokasi gedung ini sekarang menjadi bagian dari kompleks Sekretariat Negara. Pada tahun 1862, setelah koleksi memenuhi museum di Jalan Majapahit, pemerintah Hindia-Belanda mendirikan gedung yang hingga kini masih ditempati. Gedung museum ini dibuka untuk umum pada tahun 1868. Setelah kemerdekaan Indonesia, Lembaga Kebudayaan Indonesia yang mengelola menyerahkan museum tersebut kepada pemerintah Republik Indonesia, tepatnya pada tanggal 17 September 1962. Sejak itu pengelolaan museum dilakukan oleh Direktorat Jenderal Kebudayaan, di bawah Kementerian Pendidikan dan Kebudayaan. Mulai tahun 2005, Museum Nasional berada di bawah pengelolaan Kementerian Kebudayaan dan Pariwisata sehubungan dengan dipindahnya Direktorat Jenderal Kebudayaan ke lingkungan kementerian tersebut. Museum Nasional juga dikenal sebagai Museum Gajah karena dihadiahkannya patung gajah berbahan perunggu oleh Raja Chulalongkorn dari Thailand pada tahun 1871 yang kemudian dipasang di halaman depan museum. Meskipun demikian, sejak 28 Mei 1979, nama resmi lembaga ini adalah Museum Nasional Republik Indonesia.


2.2.OpenGl
   OpenGL (Open Graphics Library) adalah spesifikasi standar yang mendefinisikan sebuah lintas-bahasa, lintas platform API untuk mengembangkan aplikasi yang menghasilkan grafis komputer 2D maupun3D. Antarmuka terdiri dari lebih dari 250 panggilan fungsi yang berbeda yang dapat digunakan untuk menggambar tiga dimensi yang adegan-adegan kompleks dari bentuk-bentuk primitif sederhana. OpenGL dikembangkan oleh Silicon Graphics Inc (SGI) pada tahun 1992 dan secara luas digunakan dalam CAD, realitas maya, visualisasi ilmiah, visualisasi informasi, dan simulasi penerbangan. Hal ini juga digunakan dalam video game, di mana bersaing dengan Direct3D on Microsoft Windows platform (lihat vs OpenGL Direct3D). OpenGL dikelola oleh sebuah teknologi konsorsium nirlaba yaitu Khronos Group.

2.2.1 Komponen
          Komponen untuk membuat web GL umumnya terbagi menjadi 3 bagian yaitu file HTML, CSS dan Java Script, Berikut ini contoh syntax HTML
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf8"/>
  <title>WebGL</title>
  <link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
  <canvas id="canvas-webgl">
    Browser tidak support HTML5 Canvas Element.
  </canvas>
  <script type="text/javascript" src="script.js"></script>
</body>
</html>
Konten file style.css adalah sebagi berikut
#canvas-webgl {
  display: block;
  margin: auto;
  border: thin solid red;
  background-color: black;
}

Dan script.js sebagai berikut

(function() {
// nothing to do here yet
})();
untuk kode javascript akan diletakan didalam self-execution function yang terdapat dalam file script.js. Border disekitar canvas saya tambahkan hanya untuk mempermudah melihat keberadaan canvas tersebut.
2.2.2    Programmable Pipeline
WebGL bersifat hardware accelerated dan spesifikasinya berdasar pada OpenGL ES 2.0. Bagian CPU diproses menggunakan javascript, sedangkan GPU menggunakan GLSL (OpenGL Shading Language). Programmable pipeline WebGL (sama dengan OpenGL ES 2.0) adalah sebagai berikut. 
OpenGL ES 2.0 Orogrammble Pipeline 

Secara garis besar, masing-masing tahap pada pipeline diatas adalah sebagi berikut (beberapa saya sendiri kurang yakin).
  1. API (CPU) merupakan API WebGL
  2. Vertex Buffer Object (CPU) adalah data vertex yang akan dikirim ke GPU
  3. Promitive Processing (CPU) adalah segala proses yang dituliskan melalui javascript
  4. Vertex Shader (GPU) merupakan shader yang memproses setiap vertex
  5. Primitive Assembly (GPU) itu seperti pengelompokan data vertex-vertex untuk dibentuk menjadi titik, garis atau poligon (hanya segitiga)
  6. Rasterizer (GPU) adalah pembentukan pixel
  7. Fragment Shader (GPU) adalah tempat pewarnaan pixel.
  8. Depth Stencil (GPU) merupakan proses depth test dan stencil test.
  9. Colour Buffer Blend (GPU) adalah proses blending warna dari pixel-pixel yang tersisa.
  10. Dither (kurang tau ini apaan)
  11. Frame Buffer (GPU) adalah tempat gambar 2D hasil. Jika Framebuffer tidak ada, maka hasil akan digambar pada canvas
Vertex dan fragment shader adalah bagian yang harus anda definisikan menggunakan GLSL.
2.2.3    WebGL = Javascript + GLSL
Secara garis besar, Pemograman WebGL dilakukan dengan mengatur data dari CPU ke GPU. Konstruksi data dilakukan di CPU menggunakan bahasa Javascript. Data kemudian dikirim ke GPU dan diproses menggunakan bahasa GLSL pada bagian vertex shader dan fragment shader. Output dari vertex shader adalah posisi titik-titik tiga dimensi dalam clip space dan ukuran pixel untuk setiap titik, sedangkan fragment shader adalah warna untuk setiap pixel.
2.2.4   Inisiasi
Langkah pertama yang dilakukan untuk membuat aplikasi WebGL adalah mendapatkan konteks WebGL dari canvas element. String context untuk WebGL adalah "webgl", akan tetapi karena implementasi WebGL masih ekperimental pada beberapa browser, maka string context yang umumnya (hampir semuanya) digunakan adalah "experimental-webgl". Inisiasi konteks WebGL dapat dilakukan dengan langkah berikut.

var canvas = document.getElementById('canvas-webgl');

try {
  var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
} catch(err) {
  // silahkan kalo mau lakukan debuging disini...
}

if(!gl) {
  // ada masalah, entah tidak support WebGL atau masalah lainnya...
  alert('Inisiasi WebGL gagal');
  return;
}

Setalah mendapatkan konteks WebGL, langkah berikutnya adalah inisiasi vertex shader dan fragment shader. Inisiasi shader membutuhkan string GLSL, dan saya akan menggunakan HTML script tag untuk memuat string GLSL baik vertex maupun fragment shader. Pada index.html anda dapat menambahkan kode berikut.

  <script id="shader-vertex" type="x-shader/x-vertex">
    attribute vec3 a_position;
    void main(void) {
      gl_Position = vec4(a_position, 1.0);
      gl_PointSize = 3.0;
    }
  </script>
  <script id="shader-fragment" type="x-shader/x-fragment">
    void main(void) {
      gl_FragColor = vec4(0.0, 1.0, 1.0, 1.0);
    }
  </script>
Tujuan utama script diatas hanyalah mendapatkan string kode GLSL untuk kedua shader. Anda bisa menempatkan kedua shader tersebut dalam file yang kemudian kontennya diambil melalui AJAX.
2.2.5    Membuat Objek WebGLShader
Objek WebGLShader digunakan untuk memberi tau WebGL tentang kode GLSL yang akan digunakan. Input untuk membuat WebGLShader adalah jenis shader dan string source kode GLSL. Langkah-langkah pembuatan objek WebGLShader pada umumnya adalah sebagai berikut.
function createShader = function(shaderSource, shaderType) {
  // membuat objek WebGLShader dengan input type shader
  var glShader = gl.createShader(shaderType);

  // menentukan kode GLSL untuk shader
  gl.shaderSource(glShader, shaderSource);

  // kompilasi shader
    gl.compileShader(glShader);

    // periksa status kompilasi shader
    // jika kompilasi berhasil, lanjut ke langkah 8
    if (!gl.getShaderParameter(glShader, gl.COMPILE_STATUS)) {
      // kompilasi gagal. Dapatkan log info shader
      var infoLog = gl.getShaderInfoLog(glShader);

      // hapus shader
      gl.deleteShader(glShader);
      glShader = null;

      // lempar error
        throw Error('Error compile shader\r\n' + infoLog);
    }

    // kembalikan objek WebGLShader
  return glShader;
}
Jenis shader hanya ada dua, yaitu vertex shader dan fragment shader. Nilai untuk jenis shader dapat diakses  dari properti objek WebGL, yaitu VERTEX_SHADER dan FRAGMENT_SHADER, sehingga pembuatan shader dapat dilakukan dengan cara dibawah ini.
// string kode source untuk vertex shader
var vshSrc = document.getElementById('shader-vertex').textContent;
// string kode source untuk fragment shader
var fshSrc = document.getElementById('shader-fragment').textContent;

// WebGLShader untuk vertex shader
var glVertexShader = createShader(vshSrc, gl.VERTEX_SHADER);
// WebGLShader untuk fragment shader
var glFragmentShader = createShader(fshSrc, gl.FRAGMENT_SHADER);

Kedua shader telah selesai dibuat, untuk menggunakan kedua shader tersebut, perlu dibuat objek baru yaitu WebGLProgram.

2.2.6    Membuat WebGLProgram
Objek WebGLProgram digunakan untuk menjembatani CPU dan GPU. WebGLProgram menentukan shader mana yang digunakan untuk vertex shader dan fragment shader. Pembuatan WebGLProgram dapat dilakukan dengan cara berikut.
// membuat objek WebGLProgram
var glProgram = gl.createProgram();
// menentukan vertex dan fragment shader yang akan digunakan
gl.attachShader(glProgram, glVertexShader);
gl.attachShader(glProgram, glFragmentShader);
Sebelum WebGLProgram digunakan, perlu dilakukan link terhadap WebGLProgram yang ter-attach vertex shader dan fragment shader. Ling WebGLProgram dapat gagal dengan beberapa sebab, salah satunya adalah vertex shader dan fragment shader tidak dapat dihubungkan (walaupun berbeda, vertex sahder dan fragment shader saling berhubungan dalam menjalankan proses di GPU). Link WebGLProgram dapat dilakukan seperti dibawah ini.
// link program
gl.linkProgram(glProgram);
// check status link
if(!gl.getProgramParameter(glProgram, gl.LINK_STATUS)) {
  // link gagal, dapatkan info log program
    var infoLog = gl.getProgramInfoLog(glProgram);

    // hapus program
    gl.deleteProgram(glProgram);
    glProgram = null;

    // lempar error
    throw Error('Could not initialize program\r\n' + infoLog);
}
2.2.7   Vertex dan vertex shader
Vertex didefinisikan sebagai titik (point) dalam ruang 3D yang memiliki koordinat x, y, dan z. Akan tetapi dalam WebGL, pengertian vertex lebih dari sekedar titik. Vertex dapat didefinisikan sebagai sebuah objek, berupa titik, yang memiiki attibut/properti. Salah satu attribut adalah posisi, dan dapat memiliki atribut lain seperti warna dan surface normal. Atribut vertex dalam vertex shader didefinisikan menggunakan keyword attribute. Dalam tutorial ini, vertex hanya memiliki satu atribut yaitu "a_position" yang merupakan posisi vertex dalam ruang 3D.
2.2.8    Data Vertex
Data vertex dibuat di CPU dan dikirim ke GPU. Untuk mengirim data ke GPU, data perlu "dipaket" dalam vertex buffer. Setting data dalam vertex buffer dilakukan dengan menggunakan ArrayBuffer atau ArrayBufferView. Terdapat 8 jenis ArrayBufferView yaitu Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array. Tutorial kali ini menggunakan 4 vertex dimana koordinat posisi (x, y, z) masing-masing vertex adalah sebagai berikut.
  • ( 0.5,  0.5, 0)
  • ( 0.5, -0.5, 0)
  • (-0.5, -0.5, 0)
  • (-0.5,  0.5, 0)
ArrayBufferView yang digunakan sebagai data posisi vertex adalah Float32Array, karena data koordinat x, y dan z berupa tipe data float. Data harus diletakkan secara "rata" dalam elemen-elemen ArrayBufferView. Data vertex untuk keempat vertex tersebut dapat ditulis seperti kode berikut.
var dataVertex = new Float32Array([
  //x ,  y  , z
   0.5,  0.5, 0, // kanan atas
   0.5, -0.5, 0, // kanan bawah
  -0.5, -0.5, 0, // kiri bawah
  -0.5,  0.5, 0  // kiri atas
]);

var verticesCount = 4;
Variabel verticesCount akan digunakan dalam proses menggambar untuk memberi tau berapa jumlah vertex dalam data. Data vertex kemudian di-bind kedalam vertex buffer mengguanakn WebGLBuffer. Proses setting vertex buffer berserta datanya adalah sebbagai berikut.
// membuat objeck WebGLBuffer
var vertexBuffer = gl.createBuffer();
// bind objeck WebGLBuffer
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
// setting data WebGLBuffer menggunakan ArrayBufferView
gl.bufferData(gl.ARRAY_BUFFER, dataVertex, gl.STATIC_DRAW);
2.2.9    Render
Dalam tutorial kali ini, proses render diawali dengan menggunakan WebGLProgram, seperti pada kode berikut.
// menggunakan WebGLProgram
gl.useProgram(glProgram);
Tutorial kali ini hanya menggunakan satu WebGLProgram, akan tetapi, dalam apikasi WebGL yang kompleks, terkadang harus membuat lebih dari satu vertex shader atau fragment shader, sehingga perlu juga membuat lebih dari satu WebGLProgram untuk masing-masing shader. Setelah menentukan WebGLProgram yang digunakan, langkah berikutnya adalah setting pointer vertex attribut dengan data vertex yang berada dalam vertex buffer.
// index lokasi atribut "a_position" dalam WebGLProgram
var attribPositionIndx = gl.getAttribLocation(glProgram, 'a_position');
// ukuran atribut, 3 element untuk data posisi
var posSize = 3;
// type data posisi
var posType = gl.FLOAT;
// normalize posisi. selalu false untuk float
var posNormalized = false;
// setting pointer
gl.vertexAttribPointer(attribPositionIndx, posSize, posType, posNormalized, 0, 0);
Dalam kode diatas, pointer disetting terhadap atribut "a_position" dari glProgram. Settingtersebut menggunakan indexattribPositionIndx. variabel posSize digunakan untuk memberitahukan WebGL bahwa data untuk "a_position" diambi dari 3 element dalam vertex buffer. Dua argument terakhir dengan nilai 0 adalah stride dan offset. Untuk tutorial kali ini, vertex buffer hanya memuat data untuk satu vertex atribut, sehingga kedua parameter tersebut disetting 0. Setelah setting pointer dilakukan, maka proses menggambar (draw) dapat dilakukan. Proses menggambar dapat dilakukan dengan cara berikut.
// enable index lokasi atribut "a_position"
gl.enableVertexAttribArray(attribPositionIndx);

gl.drawArrays(gl.POINT, 0, verticesCount);
Proses menggambar tersebut didahului dengan meng-enable atribut vertex menggunakan index lokasi atribut dalam WebGLProgram. Setelah itu proses menggambar dilakukan dengan mode point, offset data dimuai dari 0 (nol) dan jumlah vertex yang digambar adalah 4 (variabel verticesCount). Hasil render adalah seperti dibawah ini.

2.3       Panorama
Fotografi Panorama merupakan terjemahan dari landscape photography. Mungkin sebagian besar orang lebih sering menggunakan istilah asing ini. Tapi sebagai orang Indonesia alangkah baiknya jika kita menggunakan istilah dalam bahasa Indonesia. Foto Panorama, mungkin sebagian besar orang terbiasa juga mengartikan foto panorama sebagai foto pemandangan dengan area foto yang lebih panjang yang mana perbandingan sisi panjang dan sisi lebar sangat kontras. Tetapi menurut saya foto panorama memiliki arti yang lebih luas. Fotografi Panorama adalah kategori foto yang objeknya adalah lingkungan sekitar. Jadi objek dari foto panorama ini adalah alam dan bukan manusia, jikapun ada manusia itu bukan merupakan objek utama dari foto panorama ini. Karena pada dasarnya, objek otama dari fotografi panorama ini adalah seluruh bagian foto, walaupun tetap ada objek yang menjadi pusat dari keindahan foto panorama itu sendiri. Secara umum, foto panorama ini dibuat untuk menunjukkan keindahan dari alam sekitar kita, bahkan dalam sebuah tempat yang hancur kita bisa menunjukkan keindahan dari tempat itu. Diharapkan dengan foto panorama, orang-orang bisa lebih menghargai apa yang ada di alam ini, baik itu alami maupun buatan manusia.

2.3.1    Macam-macam foto panorama
Berikut ini adalah macam-macam foto yang dapat dikategorikan sebagai foto panorama:
2.1  Foto Pemandangan Daratan
Dalam foto ini objek utamanya adalah daratan, gunung, persawahan, dan semacamnya. Sehingga jikapun ada langit perbandingannya lebih besar pada bagian daratannya. Selain itu foto yang diambil dari ketinggian bisa dikategorikan sebagai foto pemandangan daratan jika objeknya itu adalah daratan. Dan kebanyakan foto pemandangan yang diambil dari udara atau ketinggian objeknya adalah daratan, dimana pembuat foto berusaha menunjukkan keindahan lingkungan dari sisi lain yaitu dari atas.
2.2  Foto Pemandangan Lautan
Dalam foto ini objek utamanya adalah laut dan perairan lainnya. Keberadaan air ditekankan dalam foto panorama jenis ini. Foto bawah air bisa dimasukkan dalam kategori foto panorama jenis ini, sebab foto bawah air juga menampilkan keindahan dari lingkungan bawah air.
2.3  Foto pemandangan langit
Dalam foto ini objek utamanya adalah langit, awan, dan semacamnya. Dalam foto ini ditekankan pada keberadaan langitnya. Sehingga jikapun ada daratan ada hal lainnya proporsinya pun sedikit. Foto matahari terbit, matahari terbenam, pelangi, serta mendung dan petir termasuk foto panorama jenis ini.
2.4  Foto Pemandangan Perkotaan
Dalam foto ini objek utamanya adalah kota atau desa. Memperlihatkan keindahan dan keunikan dari perkotaan atau pedesaan yang merupakan ciri khas dari lingkungan tersebut.
2.3.2    Cara atau teknik membuat foto panorama yang baik
Sama seperti fotogafi pada umumnya, sebelum membuat atau memotret panorama kita sebaiknya membuat rencana. Saya tidak percaya bahwa foto yang panorama yang baik dapat dibuat tanpa merencanakannya terlebih dahulu (Charlie, 1992:6). Selain merencanakan kita juga harus memikirkan  dan mencari informasi tentang keadaan di lapangan karena fotografi panorama hubungannya dengan keadaan di lapangan terutama cahayanya. Alat juga harus diperhatikan dalam memotret panorama.
Berikut ini adalah hal-hal yang perlu diperhatikan agar dapat membuat foto panorama yang baik:
3.1  Gambar grafis
Perlu diperhatikan warna dari foto, karena warna dalam pemandangan merupakan bagian yang penting. Bisa saja kita menggunakan warna alami, atau melakukan sedikit manipulasi dengan membuat kontras yang lebih atau menajamkan warna.
3.2  Keseimbangan
Perbandingan dari tiap-tiap objek yang mengisi foto panorama perlu diperhatikan. Keseimbangan yang sempurna akan membuat foto panorama itu lebih menarik.
3.3  Kesederhanaan
Membuat foto panorama tidak harus rumit, membuat gambar yang sederhana tetepi dengan sentuhan yang sesuai akan membuat foto lebih menarik. Memberikan pusat keindahan yang mudah didapati akan lebih baik dalam sebuah foto panorama.
3.4  Kesesuaian
Menyesuikan bentuk foto akan membuat foto panorama semakin baik. Semisal membuat foto panorama air terjun yang kecil, akan lebih baik jika panorama itu diambil secara vertikal. Hal ini disesuaikan dengan keadaan di sekitar pusat dari keindahan panorama yang akan diambil.
3.5  Pemilihan bidang
Hal penting yang harus diperhatikan dalam foto panorama adalah pengambilan ruang atau keindahan penunjang dari pusat keindahan foto panorama.
3.6  Kelengkapan gambar
Alangkah baiknya jika keindahan yang ditunjukkan dalam sebuah foto panorma lengkap. Sehingga dari bidang foto yang terbatas, penikmat dapat membayangkan kelanjutan dari keindahan yang terdapat di dalam foto panorama tersebut.

3.7  Pemilihan objek
Objek yang dipilih dalam foto panorama juga harus diperhatikan. Objek yang monumental akan lebih menarik jika digunakan sebagai foto panorama. 
3.8  Waktu
Waktu atau masa pembuatan foto panorama harus diperhatikan. Baik dalam jangka pendek maupun jangka panjang. Jangka pendek misal kita membuat foto panorama pada waktu-waktu yang bagus, semisal pada saat matahari terbit atau terbenam, saat langit biru pagi, saat setelah hujan, dan semacamnya. Dalam jangka panjang, musim harus diperhatikan. Misal kita membuat foto panorama pepohonan, mungkin akan lebih menarik ketika membuat saat musim gugur atau musim salju. 
3.9  Ketegasan
Ketegasan dalam pemilihan objek utama perlu diperhatikan, sehingga penikmat foto tidak rancu dengen objek yang bemacam-macam.
3.10 Gradasi Objek
Menggunakan objek lebih dari satu bisa membuat foto panorama lebih baik, asal terdapat gradasi yang jelas, mana yang merupakan objek utama, objek sekunder, dan seterusnya. Sehingga setiap objek yang terdapat dalam foto panorama menunjang objek lainnya yang lebih diutamakan dalam foto tersebut.
3.11  Pergerakan dan pencahayaan
Hal yang penting untuk diperhatikan dalam pembuatan foto panorama. Agar karya foto panorama yang kita buat terlihat lebih “hidup“ maka kedua hal ini harus dimanfaatkan sebaik mungkin. Sehingga penikmat bisa merasakan keindahan yang kita rasakan saat membuat foto panorama tersebut.
Setelah kita melakukan proses pemotretan panorama, langkah selanjutnya adalah proses pembuatan ke bentuk akhir. Pemotongan bidang foto, pembersihan foto, dan manipulasi foto adalah hal yang dilakukan dalam proses akhir ini. Ada foto yang dibuat untuk dipotong, mungkin memanipulasi warnanya menjadi lebih panas, atau mungkin merubahnya menjadi hitam-putih. Hal ini harus dilakukan sesuai rencana awal pembuatan foto panorama.
Selain hal-hal tentang pembuatan foto panorama diatas,  Kelengkapan peralatan juga harus diperhatikan. Foto panorama banyak berhubungan dengan alam, jadi peralatannya kurang lebih sama seperti seorang petualang. Untuk kelengkapan kamera juga harus diperhatikan. Kamera SLR 35mm atau rangefinde kamera biasa digunakan untuk pemotretan panorama. Tapi seiring dengan berkembangnya teknologi, kamera DSLR lebih banyak digunakan dalam berbagai pemotretan. Sehingga untuk kelengkapan kamera yang lebih diperhatikan antara lain:
a.    Lensa
Lensa yang disiapkan dalam pemotretan foto panorama antara lain wide-angle(28/35mm), medium telephoto (85/105), atau menggunakan lensa yang cakupan jaraknya antara 28-80mm atau 35-105mm sehingga lebih fleksibel.
b. Tripod
c. Filters
Filter yang baik disiapkan untuk pemotretan panorama antara lain filter general (ultaviolet), filter polarising, filter graduated, dan seterusnya sesuai dengan kebutuhan.
d. Lens hood
Akan sangat diperlukan jika cahaya terlalu keras sehingga perlu meredupkan foto agar  tidak terlalu terang dan mengganggu hasil foto panorama tersebut.
Setelah kelengkapan kamera lengkap, satu hal lagi yang perlu diperhatikan adalah penyimpanan kelengkapan tersebut. Penyimpanan harus dilakukan dengan baik dan disesuaikan dengan kondisi lingkungan, Sehingga bisa mengurangi resiko terjadi kerusakan pada tiap-tiap kelengkapan tersebut.

Daftar Pustaka

Waite, Charlie. 1992. The Making of Landscape Photogapher. London : Collins & Brown Limited
Bower, Brian. 1993. Lens, Light, and Landscape. Singapore : C S Graphics for David & Charles.
Hamann, Horst. 2005. Paris Vertical. New York : TeNeues.
Hawkes, Jason. 2003. Aerial. London : Rotovision.
Eckbo, Garret. 1969. The Landscape We See. New York : McGra-Hill.
http://bwcolor.wordpress.com/2011/02/04/makalah-fotografi-landscape-pemandangan-panorama/






1 comment:

  1. sippp, artikel yang sangat menambah wawasan mengenai pengembangan sistem ini...
    solder uap

    ReplyDelete