Kamery i aparaty fotograficzne

Zaktualizowano w lutym 2009 roku: dodano wzmianki o obiektach <gx:altitudeMode>, <gx:TimeStamp> i <gx:TimeSpan>.

Wprowadzany z plików KML 2.2 element <Camera> umożliwia dodatkowy sposób określenia punktu obserwacji i powiązanych parametrów widoku. <Camera> jest podobny do <LookAt>, bo oba elementy określają miejsce i orientację kamery wirtualnej, która widzi Ziemię. Różnica polega na tym, że LookAt określa widok pod kątem oglądanego miejsca. Natomiast aparat określa widok z uwzględnieniem położenia i orientacji odbiorcy.

Zarówno element <LookAt>, jak i <Camera> są rozszerzane względem elementu <AbstractView>, który jest abstrakcyjnym podstawowym typem. Nazwy <Camera> i <LookAt> są identyczne pod względem użycia w pliku KML, tj. jako elementu potomnego dowolnego elementu pochodzącego z elementów <Feature> (oznaczenie miejsca, nakładka, Okrągły, Zdjęcie, Folder, Dokument, NetworkLink) lub jako elementu potomnego elementu <NetworkLinkControl>. W Funkcjach możesz używać jednocześnie funkcji <Camera> lub <LookAt>, ale nie obu naraz (obecnie tylko 1 kamera wirtualna może określać aktualny punkt widokowy).

Różnice między <Camera> a <LookAt>

Nowy element <Camera> zapewnia dodatkową elastyczność w określaniu widoku. Najważniejsze jest, aby przechylać widok kamery w taki sposób, aby spoglądał na horyzont. <Camera> daje pełną 6-stopniową swobodę kontroli nad widokiem, dzięki czemu możesz umieścić kamerę w kosmosie, a potem go obrócić wokół osi X, Y i Z. Jeśli nie podasz obrotów, te 2 elementy będą równoważne:

<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>

W tej sekcji znajdziesz krótki przegląd elementu <LookAt>, który pozwoli Ci porównać go z nowym elementem <Camera>.

Opinia o: <LookAt>

Element <LookAt> określa wyświetlany punkt na Ziemi, odległość punktu widokowego od ciekawego miejsca i kąt. Oto składnia tego elementu:

<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>

Ten diagram pokazuje, jak jest zbudowany punkt widokowy <LookAt>:

diagram przedstawiający parametry elementu LookAt

Element <LookAt> określa odpowiedzi na te pytania:

Pytanie
Specyfikacja: <LookAt>
Na co patrzę? <długość geograficzna>, <szerokość>, <wysokość>, <tryb wysokości>
Jak daleko jest punkt widokowy od miejsca? <zakres>
Czy widok jest ustawiony tak, aby na górze znajdował się termin „Północ”? Jeśli tak, użyj domyślnej wartości <nagłówka> 0. Jeśli nie, określ rotację <nagłówka> od 0 do 360°
Czy ten widok patrzy prosto w stronę Ziemi? Jeśli tak, użyj wartości domyślnej <tilt>. Jeśli nie, aparat jest przechylony do góry w kierunku horyzontu. Ustaw obrót <tilt> ≤ 90°.
90° patrzy prosto wzdłuż horyzontu. (Jeśli nie jesteś w pobliżu, a <tilt> to 90°, możesz w ogóle nie zobaczyć powierzchni Ziemi.)

Przykład

Oto przykład <Placemark> zawierający element <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>

A oto oznaczenie miejsca widoczne w Google Earth:

Zrzut ekranu przedstawiający oznaczenie Machu Picchu w Google Earth

Jeśli kierunek widoku przecina planetę, użyj elementu <LookAt>, ponieważ jest on nieco łatwiejszy do określenia niż <Camera>.

Elementy podrzędne elementu <Camera>

Element <Camera> umożliwia umieszczanie punktu patrzenia w dowolnym miejscu i obracanie widoku w dowolnym kierunku. Oto składnia tego elementu:

<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> 

Element <Camera> określa odpowiedzi na te pytania:

Pytanie
Specyfikacja: <Camera>
Gdzie w kosmosie znajduje się kamera? Ustaw kamerę w miejscu określonym przez wartości < ustalona długość geograficzna, <szerokość>, <wysokość> i <altitudeMode>. Ogólnie rzecz biorąc, nie jest łatwo ustawić kamerę na poziomie ziemi.
Czy kamera jest ustawiona w orientacji północnej? Jeśli tak, użyj domyślnej wartości <nagłówka> 0. Jeśli nie, zgodnie z punktami kompasu odwróć aparat z zakresu 0–360°.
Czy kamera patrzy prosto w stronę Ziemi? Jeśli tak, użyj domyślnej wartości <tilt> 0. Jeśli nie, obróć aparat od 0 do 180°, aby określić kąt obrotu wokół osi X. Wartości ujemne dla <tilt> są dozwolone, ale skutkują wyświetleniem do góry nogami.
Czy poziom kamery jest widoczny podczas oglądania wydarzenia? Jeśli tak, użyj domyślnej wartości <roll> 0. Uwaga: wartość tagu <roll> w przypadku tagu podrzędnego (<Camera>) zwykle wynosi 0. Możesz zastosować wartość od -180 do +180°, ale jest to rzadkie.

Poniższy diagram przedstawia osie X, Y i Z, które są dołączone do kamery wirtualnej.

  • Xkieruje w prawo i nazywa się prawy wektor.
  • Y definiuje kierunek „w górę” względem ekranu i nosi nazwę wektora w górę.
  • Z od środka ekranu do punktu oka. Kamera patrzy w oś -Z, co jest nazywane wektorem widoku.

Oto przykład konfiguracji elementu <Camera> jako punktu początkowego w narzędziu <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>

Ten punkt widokowy wyświetla się w Google Earth:

Czas w widokach abstrakcyjnych

<Camera> i <LookAt> mogą zawierać informacje o czasie, które mają wpływ na zdjęcia historyczne, światło słoneczne i wszystkie obiekty oznaczone tagami czasu. <gx:TimeSpan> i <gx:TimeStamp> są używane w AbstractView i są zawarte w przestrzeni nazw rozszerzeń Google. Więcej informacji znajdziesz w sekcji Time with AbstractViews w rozdziale Time and Entertainment.

Przykłady

Te przykłady pokazują różne obroty w <Camera>.

Nagłówek

W tym przykładzie widać kolumnę <Camera> z nagłówkiem 90 stopni (wschód) i przechyleniem o 90 stopni (patrzący w kierunku horyzontu). Kamera jest umieszczona na wysokości 100 metrów.

<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>

Oto efekt w Google Earth:

Pochylenie

W poniższym przykładzie zastosowano zasadę <Camera> z pochyleniem równym 90 stopni i skierującej na horyzont. Używa wartości domyślnych dla <heading>, <altitude>, <altitudeMode> i <roll>.

<Camera> zawiera wartość <gx:TimeStamp>. Ma to wpływ na zdjęcia historyczne i słońce, a także na wszelkie obiekty z tagami czasowymi. Na ilustracji poniżej widać, że słońce jest włączone, a <Camera> wyświetla lokalizację 1 stycznia 2009 r. o godzinie 15:29 czasu UTC (7:30 czasu lokalnego).

<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>

Ten punkt widokowy wyświetla się w Google Earth:

Obrót

W tym przykładzie widać element <roll> o wartości 45 stopni, który powoduje, że kamera jest obracana w lewo.

<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>

Kolejność przekształceń

Kolejność rotacji jest ważna. Domyślnie aparat patrzy prosto w kierunku osi -Z w stronę Ziemi. Przed wykonaniem rotacji aparat zostanie przetłumaczony wzdłuż osi Z do <altitude>. Kolejność przekształceń wygląda tak:

  1. <wysokość> – przetłumacz wzdłuż osi Z na <wysokość>
  2. <heading> – obróć wokół osi Z
  3. <tilt> – obróć wokół osi X.
  4. <roll> – ponownie obróć wokół osi Z (ponownie).

Za każdym razem, gdy stosowana jest obrót, dwie osie kamery zmieniają orientację.

Powrót do góry