Şubat 2009'da güncellendi: <gx:heightMode>, <gx:TimeStamp> ve <gx:TimeSpan> bahisleri eklendi.
KML 2.2'de kullanıma sunulan <Camera>
, gözlemleyicinin bakış açısını ve ilişkili görüntüleme parametrelerini belirtmek için ek bir yol sunar. <Camera>
, Dünya'yı görüntüleyen bir sanal kameranın yerleşimini ve yönünü tanımladığından <LookAt>
ile benzerdir. Aralarındaki fark, LookAt'ın görünümü görüntülenmekte olan önemli yer açısından belirtmesidir. Kamera, bunun aksine, görünümü izleyicinin konumu ve yönü açısından belirtir.
Hem <LookAt>
hem de <Camera>
, temel soyut bir tür olan <AbstractView>
öğesinden uzatıldı. <Camera>
ve <LookAt>
, bir KML dosyasında aynı şekilde kullanılır. Diğer bir deyişle, <Feature>
ürününden (Yer İşareti, Ekran Yer Paylaşımı, Zemin Yer Paylaşımı, Fotoğraf Yer Paylaşımı, Klasör, Doküman, Ağ Bağlantısı) veya <NetworkLinkControl>
alt öğesi olarak türetilen herhangi bir öğenin alt öğesidir. Bir özellikte <Camera>
veya <LookAt>
kullanabilirsiniz ancak ikisini aynı anda kullanamazsınız (yani, yalnızca bir sanal kamera geçerli bakış açısını belirtebilir).
<Camera>
ile <LookAt>
arasındaki farklar
Yeni <Camera>
öğesi, görünümü belirleme yönteminizde ek esneklik sağlar. Daha da önemlisi, kamera görünümünü ufka doğru gökyüzüne bakacak şekilde yatırabilirsiniz. <Camera>
, görüntü üzerinde tam altı derece serbestlik kontrolü sağlar. Böylece Kamerayı uzayda konumlandırabilir, ardından x, y ve z eksenlerinde döndürebilirsiniz. Rotasyon belirtilmemişse iki öğe eşdeğerdir:
<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>
Aşağıdaki bölümde, <LookAt>
öğesinin kısa bir incelemesi sunulmaktadır. Böylece, yeni <Camera>
öğesinin kullanımıyla karşılaştırma yapabilirsiniz.
<LookAt>
ile ilgili yorum
<LookAt>
öğesi, Dünya üzerinde görüntülenmekte olan noktayı, seyir noktasının önemli noktadan uzaklığını ve görünümün açısını belirtir. Bu öğenin söz dizimi şöyledir:
<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>
Aşağıdaki şemada, <LookAt>
seyir noktasının nasıl oluşturulduğu gösterilmektedir:
<LookAt>
öğesi, aşağıdaki soruların yanıtlarını belirtir:
Question |
Spesifikasyon: <LookAt> |
Hangi noktaya bakıyorum? | <boylam>, <enlem>,<rakam>, <RakımModu> |
Gözlem noktası ne kadar uzakta? | <aralık> |
Görünüm, Kuzey yönü görünümün en üstünde olacak şekilde mi yönlendirildi? | Evet ise varsayılan <heading> değerini 0 kullanın. Hayır ise 0-360° arasında bir <heading> rotasyonu belirtin |
Görünüm doğrudan Dünya'ya mı bakıyor? | Evet ise varsayılan<tilt> değerini kullanın. Hayır ise kamera ufuğa doğru yatırılmıştır. 90° veya daha küçük bir <tilt> döndürmesi belirtin. 90° doğrudan ufukta bakıyor. (Uzaksanız ve <tilt> 90° ise Dünya yüzeyini hiç göremeyebilirsiniz.) |
Örnek
<LookAt>
öğesi içeren <Placemark>
örneğini aşağıda bulabilirsiniz:
<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>
Google Earth'te gösterilen Yer İşareti:
Yönünüz gezegenle kesişiyorsa bunu belirtmek <Camera>
ile kıyaslandığında daha kolay olduğundan bir <LookAt>
öğesi kullanın.
<Camera>
Alt Öğeleri
<Camera>
öğesi, görüş alanını uzayda herhangi bir yere yerleştirme ve görünümü herhangi bir yönde döndürme özelliği sunar. Bu öğenin söz dizimi şöyledir:
<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>
<Camera>
öğesi, aşağıdaki soruların yanıtlarını belirtir:
Question |
Spesifikasyon: <Camera> |
Kamera uzayda nerede bulunuyor? | Kamerayı <boylam>, <enlem>, <Rakım> ve <rakımModu> ile belirtilen noktaya getirin. Genel olarak, kamerayı yere yerleştirmek kötü bir tercihtir. |
Kamera, Kuzey görünümün en üstünde olacak şekilde mi odaklanıyor? | Evet ise 0 varsayılan <heading> değerini kullanın. Hayır ise kamerayı pusulanın noktalarına göre 0-360° arasında döndürün. |
Kamera doğrudan Dünya'ya bakıyor mu? | Evet ise 0 varsayılan <tilt> değerini kullanın. Hayır ise X ekseni çevresindeki dönüş açısını belirtmek için kamerayı 0'dan 180°'ye döndürün. (<tilt> için negatif değerlere izin verilir, ancak bunlar baş aşağı bir görünüme neden olur.) |
Kamera sahneyi görüntülerken aynı seviyede mi? | Evet ise 0 varsayılan <roll> değerini kullanın. Not: <Camera> öğesinin alt öğesi olarak kullanıldığında <roll> değeri genellikle 0 olur. ‐180 ile +180° arasında bir değer belirleyebilirsiniz ancak bu değer nadiren kullanılır. |
Aşağıdaki şemada, sanal kameraya takılan X, Y ve Z eksenleri gösterilmektedir.
- X ekseni kameranın sağına işaret eder ve sağ vektör olarak adlandırılır.
- Y ekseni, ekrana göre "yukarı" yönünü tanımlar ve yukarı vektör olarak adlandırılır.
- Z ekseni, ekranın ortasından göz noktasına doğru uzanır. Kamera, ‐Z eksenine bakar. Bu eksene görüntü vektörü denir.
Aşağıda, <Document>
içinde başlangıç noktası olarak bir <Camera>
ayarlama örneği verilmiştir:
<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>
Bu bakış noktası Google Earth'te şunları gösterir:
Soyut Görüntülemelerde Süre
<Camera>
ve <LookAt>
zaman bilgilerini içerebilir. Bu durum geçmiş görüntüleri, güneş ışığını ve zaman etiketli nesneleri etkiler. <gx:TimeSpan>
ve <gx:TimeStamp>
, AbstractViews içinde kullanılır ve Google uzantısı ad alanında yer alır. Daha fazla bilgi için lütfen Zaman ve Animasyon bölümünün Soyut Görüntülemeli Süre bölümüne bakın.
Örnekler
Aşağıdaki örneklerde farklı <Camera>
rotasyonları gösterilmektedir.
Başlık
Bu örnekte, başlığı 90 derece (Doğu) ve 90 derece eğimli (ufka bakan) bir <Camera>
gösteriliyor. Kamera, 100 metre yüksekliktedir.
<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>
Google Earth'te sonuç:
Yatır
Aşağıdaki örnekte 90 dereceye eğimli ve ufuk hizasına sahip bir <Camera>
kullanılmıştır. <heading>
, <altitude>
, <altitudeMode>
ve <roll>
için varsayılan değerleri kullanır.
<Camera>
, <gx:TimeStamp>
değeri içerir. Bu, geçmiş görüntülerin ve güneş ışığının yanı sıra zaman etiketli nesnelerin görüntüsünü de etkiler. Aşağıdaki resimde güneş ışığı açık ve <Camera>
konumunu 1 Ocak 2009, saat 03:29, UTC (yerel saat) itibarıyla görüntülüyor.
<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>
Bu bakış noktası Google Earth'te şunları gösterir:
Dolaş
Bu örnek, kameranın sola yuvarlanmasına neden olan 45 derece değere sahip bir <roll>
öğesi içerir.
<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>
Dönüşüm Sırası
Rotasyon sırası önemlidir. Varsayılan olarak, kamera Dünya'ya doğru ‐Z ekseninde aşağıya bakmaktadır. Rotasyonlar yapılmadan önce kamera Z ekseni boyunca <altitude>
diline çevrilir. Dönüşümlerin sırası aşağıdaki gibidir:
- <height> - Z ekseni boyunca ve <height> çevirisi yapın
- <heading> - Z eksenini döndürün.
- <tilt> - X ekseninin çevresinde döndürün.
- <roll> - Z eksenini döndürün (tekrar).
Rotasyon her uygulandığında, kamera eksenlerinden ikisinin yönünün değiştiğini unutmayın.