Kamera

Diperbarui Februari 2009: menambahkan sebutan <gx:heightMode>, <gx:TimeStamp>, dan <gx:TimeSpan>.

Diperkenalkan dengan KML 2.2, <Camera> menyediakan cara tambahan untuk menentukan sudut pandang pengamat dan parameter tampilan terkait. <Camera> mirip dengan <LookAt>, karena kedua elemen menentukan penempatan dan orientasi kamera virtual yang melihat Bumi. Perbedaannya adalah LookAt menentukan tampilan dalam hal lokasi menarik yang sedang dilihat. Sebaliknya, kamera menentukan tampilan dari segi posisi dan orientasi penampil.

<LookAt> dan <Camera> diperluas dari elemen <AbstractView> yang merupakan jenis abstrak dasar. <Camera> dan <LookAt> identik dalam cara penggunaannya dalam file KML—yaitu, sebagai turunan dari elemen apa pun yang berasal dari <Feature> (Penanda Letak, ScreenOverlay, GroundOverlay, PhotoOverlay, Folder, Dokumen, NetworkLink) atau sebagai turunan dari <NetworkLinkControl>. Anda dapat menggunakan <Camera> atau <LookAt> dalam Fitur, tetapi tidak keduanya sekaligus (yaitu, hanya satu kamera virtual yang dapat menentukan sudut pandang saat ini).

Perbedaan antara <Camera> dan <LookAt>

Elemen <Camera> baru memberikan fleksibilitas tambahan dalam cara Anda menentukan tampilan. Yang terpenting, Anda dapat memiringkan tampilan kamera sehingga Anda melihat ke atas cakrawala ke langit. <Camera> memberikan kontrol penuh selama lima derajat kebebasan atas tampilan, sehingga Anda dapat memosisikan Kamera di ruang, lalu memutarnya di sumbu x, y, dan z. Jika tidak ada rotasi yang ditentukan, kedua elemen tersebut setara:

<Camera>       
  <longitude>-121</longitude>       
  <latitude>37</latitude>       
  <altitude>2000</altitude>
  <altitudeMode>clampToGround</altitudeMode>     
</Camera> 
<LookAt>
  <longitude>-121</longitude>
  <latitude>37</latitude>
  <altitude>2000</altitude>
  <altitudeMode>clampToGround</altitudeMode>
</LookAt>

Bagian berikut menawarkan ulasan singkat tentang elemen <LookAt> sehingga Anda dapat membedakan penggunaannya dengan elemen <Camera> yang baru.

Ulasan tentang <LookAt>

Elemen <LookAt> menentukan titik di Bumi yang sedang dilihat, jarak titik pandang dari lokasi menarik, dan sudut pandang. Berikut adalah sintaksis untuk elemen ini:

<LookAt id="ID">
  <longitude></longitude>                       <!-- kml:angle180 -->   
  <latitude></latitude>                         <!-- kml:angle90 -->   
  <altitude>0</altitude>                        <!-- double -->    
  <range></range>                               <!-- double -->   
  <tilt>0</tilt>                                <!-- float -->   
  <heading>0</heading>                          <!-- float -->   
  <altitudeMode>clampToGround</altitudeMode>    
           <!--kml:altitudeModeEnum:clampToGround, relativeToGround, absolute --> 
           <!-- or, gx:altitudeMode can be substituted: clampToSeaFloor, relativeToSeaFloor -->
</LookAt>

Diagram berikut mengilustrasikan cara sudut pandang <LookAt> dibuat:

diagram yang menunjukkan parameter untuk elemen LookAt

Elemen <LookAt> menentukan jawaban atas pertanyaan berikut:

Pertanyaan
Spesifikasi di <LookAt>
Poin apa yang saya lihat? <bujur>, <garis lintang>,<ketinggian>, <KetinggianMode>
Seberapa jauh sudut pandang dari lokasi menarik? <range>
Apakah tampilan berorientasi sehingga karena Utara berada di bagian atas tampilan? Jika Ya, gunakan nilai <heading> default berupa 0. Jika Tidak, tentukan rotasi <heading> dari >0 hingga 360°
Apakah pemandangan menghadap Bumi secara lurus? Jika Ya, gunakan nilai<tilt> default. Jika Tidak, kamera dimiringkan ke atas ke arah cakrawala; tentukan <tilt> rotasi ≤ 90°.
90° melihat lurus ke sepanjang cakrawala. (Anda mungkin tidak dapat melihat permukaan Bumi sama sekali jika berada jauh dari <tilt> sama dengan 90°.)

Contoh

Berikut adalah contoh <Placemark> yang berisi elemen <LookAt>:

<Placemark>
<name>Machu Picchu, Peru</name>
<LookAt>
<longitude>-72.503364</longitude>
<latitude>-13.209676</latitude>
<altitude>0</altitude>
<range>14794.882995</range>
<tilt>66.768762</tilt>
<heading>71.131493</heading>
</LookAt>
<styleUrl>#msn_icon12</styleUrl>
<Point>
<coordinates>-72.516244,-13.162806,0</coordinates>
</Point>
</Placemark>

Dan berikut ini Penanda Letak yang ditampilkan di Google Earth:

screenshot Penanda Letak Machu Picchu di Google Earth

Jika arah tampilan Anda memotong planet, gunakan elemen <LookAt>, karena sedikit lebih mudah ditentukan daripada <Camera>.

Elemen Turunan <Camera>

Elemen <Camera> menawarkan kemampuan untuk memosisikan titik mata di mana saja dalam ruang dan memutar tampilan ke segala arah. Berikut adalah sintaksis untuk elemen ini:

<Camera id="ID">    
  <longitude>0</longitude>          <!-- kml:angle180 -->     
  <latitude>0</latitude>            <!-- kml:angle90 -->    
  <altitude>0</altitude>            <!-- double -->    
  <heading>0</heading>              <!-- kml:angle360 -->    
  <tilt>0</tilt>                    <!-- kml:anglepos180 -->    
  <roll>0</roll>                    <!-- kml:angle180 -->    
  <altitudeMode>clampToGround</altitudeMode>
       <!-- kml:altitudeModeEnum: relativeToGround, clampToGround, or absolute -->  
       <!-- or, gx:altitudeMode can be substituted: clampToSeaFloor, relativeToSeaFloor -->
</Camera> 

Elemen <Camera> menentukan jawaban atas pertanyaan berikut:

Pertanyaan
Spesifikasi di <Camera>
Di mana kamera berada di ruang nyata? Posisikan kamera pada titik yang ditetapkan menurut <bujur>, <garis lintang>, <ketinggian>, dan <heightMode>. Secara umum, ini merupakan pilihan yang buruk untuk menempatkan kamera di permukaan tanah.
Apakah kameranya berorientasi ke Utara sehingga berada di bagian atas tampilan? Jika Ya, gunakan nilai <heading> default berupa 0. Jika Tidak, putar kamera dari >0 hingga 360°, sesuai dengan titik kompas.
Apakah kamera menghadap lurus ke Bumi? Jika Ya, gunakan nilai <tilt> default 0. Jika Tidak, putar kamera dari 0 hingga 180° untuk menentukan sudut rotasi di sekitar sumbu X. (Nilai negatif untuk <tilt> diizinkan, tetapi nilai ini menghasilkan tampilan yang terbalik.)
Apakah tingkat kamera saat melihat pemandangan? Jika Ya, gunakan nilai <roll> default 0. Catatan: nilai untuk <roll> saat digunakan sebagai turunan dari <Camera> biasanya adalah 0. Anda dapat menentukan nilai antara 180 dan +180°, tetapi penggunaan ini jarang terjadi.

Diagram berikut menunjukkan sumbu X, Y, dan Z, yang terpasang ke kamera virtual.

  • Sumbu X mengarah ke kanan kamera dan disebut vektor kanan.
  • Sumbu Y menentukan arah "atas" relatif ke layar dan disebut vektor naik.
  • Sumbu Z menunjuk dari bagian tengah layar ke titik mata. Kamera melihat ke bawah sumbu ÖZ, yang disebut vektor tampilan.

Berikut adalah contoh penyiapan <Camera> sebagai sudut pandang awal dalam <Document>:

<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Golden Gate tour</name>
<open>1</open>
<Camera>
<longitude>-122.4790</longitude>
<latitude>37.8110</latitude>
<altitude>127</altitude>
<heading>18.0</heading>
<tilt>85</tilt>
<altitudeMode>absolute</altitudeMode>
</Camera> </Document> </kml>

Berikut adalah tampilan sudut pandang ini di Google Earth:

Waktu dalam AbstractView

<Camera> dan <LookAt> dapat berisi informasi waktu, yang memengaruhi citra historis, sinar matahari, dan objek apa pun yang diberi tag waktu. <gx:TimeSpan> dan <gx:TimeStamp> digunakan dalam AbstractView, dan terdapat dalam namespace ekstensi Google. Untuk informasi selengkapnya, lihat bagian Waktu dengan AbstractViews pada bab Waktu dan Animasi.

Contoh

Contoh berikut mengilustrasikan rotasi <Camera> yang berbeda.

Judul

Contoh ini menunjukkan <Camera> dengan judul 90 derajat (Timur) dan kemiringan 90 derajat (menghadap ke arah cakrawala). Kamera ditempatkan pada ketinggian 100 meter.

<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
  <Placemark>
<name>100m looking east</name>
<Camera>
<longitude>-122.4783</longitude>
<latitude>37.8120</latitude>
<altitude>100</altitude>
<heading>90</heading>
<!-- east -->
<tilt>90</tilt>
<!-- level -->
<altitudeMode>absolute</altitudeMode>
</Camera>
</Placemark> </Document> </kml>

Berikut adalah hasilnya di Google Earth:

Kemiringan

Contoh berikut menggunakan <Camera> dengan kemiringan yang sama dengan 90 derajat, yang mengarah ke cakrawala. Metode ini menggunakan nilai default untuk <heading>, <altitude>, <altitudeMode>, dan <roll>.

<Camera> berisi nilai <gx:TimeStamp>; hal ini memengaruhi citra historis dan sinar matahari, serta tampilan objek yang diberi tag waktu. Pada gambar di bawah, sinar matahari telah diaktifkan dan <Camera> melihat lokasi pada pukul 15.29, UTC pada tanggal 1 Januari 2009 (07.30 waktu setempat).

<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">
  <Document>
    <Placemark>
      <name>At ground level</name>
      <Camera>
        <gx:TimeStamp><
          when>2009-01-01T15:29:27Z</when>
        </gx:TimeStamp>
        <longitude>-122.4783</longitude>
        <latitude>37.8120</latitude> 
        <!-- altitude default is 0 (default altitudeMode is clampToGround) -->   
        <!-- heading default is 0 (north) -->    
        <tilt>90</tilt>   
        <!-- level -->   
        <!-- roll default is 0 -->    
        <!-- altitudeMode default is clampToGround -->  
      </Camera>
    </Placemark>
  </Document>
</kml>

Berikut adalah tampilan sudut pandang ini di Google Earth:

Putar

Contoh ini menyertakan elemen <roll> dengan nilai 45 derajat, yang menyebabkan kamera berputar ke kiri.

<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">
  <Document>
    <Placemark>
      <name>Roll left</name>
      <Camera>
        <gx:TimeStamp><
          when>2009-01-01T15:29:27Z</when>
        </gx:TimeStamp>
        <longitude>-122.4783</longitude>
        <latitude>37.8120</latitude>
        <altitude>100</altitude>
        <heading>90</heading>
        <!-- east -->
        <tilt>90</tilt>
        <!-- level -->
        <roll>45</roll>
        <altitudeMode>absolute</altitudeMode>
      </Camera>
    </Placemark>
  </Document>
</kml>

Urutan Transformasi

Urutan rotasi penting. Secara default, kamera melihat lurus ke bawah sumbu z menuju Bumi. Sebelum rotasi dilakukan, kamera diterjemahkan di sepanjang sumbu Z menjadi <altitude>. Urutan transformasi adalah sebagai berikut:

  1. <height> - terjemahkan di sepanjang sumbu Z ke <height>
  2. <heading> - memutar sumbu Z.
  3. <tilt> - putar pada sumbu X.
  4. <roll> - putar sumbu Z (lagi).

Perhatikan bahwa setiap kali rotasi diterapkan, dua sumbu kamera akan mengubah orientasinya.

Kembali ke atas