<krpano version="1.17">
<!--
Das Editor Plugin zum Einfügen und Ausrichten des 'door_hitarea' Hotspots verwenden (wird nur zu Beginn benötigt).
Dieser Hotspot stellt den Bereich dar in welchem die Tür geklickt werden kann.
Wichtig - das Panorama mittels 'xxx.html?html5=auto' aufrufen um die Flash Version zu verwenden!
-->
<!-- <plugin url="editor.swf" devices="flash" /> -->
<!--
Die Startansicht:
-->
<view hlookat="-42" vlookat="18" fov="90" maxpixelzoom="1.0" fovmax="120" limitview="auto" />
<!--
Das Panoramabild:
-->
<preview url="waschmaschinen.tiles/preview.jpg" />
<image>
<cube url="waschmaschinen.tiles/pano_%s.jpg" />
<mobile>
<cube url="waschmaschinen.tiles/mobile_%s.jpg" />
</mobile>
</image>
<!--
Hier ein <style> Element mit den Werten welche für alle Hotspots gleich sind.
Die Hotspots sind alle unsichtbar (alpha=0.0) und können nicht geklickt werden (enabled=false).
-->
<style name="spotstyle"
distorted="true"
onloaded="calc_pos_from_hfov_yaw_pitch_roll(60.0, 42.5678, 18.1544, 15.9705);"
enabled="false"
alpha="0.0"
/>
<!--
Hier alle Hotspot Einzelbilder - alle mit dem Namen 'door' und einer laufenden Nummer (1-n).
Die Nummer ist wichtig - mittels dieser werden die Hotspots später sichtbar bzw. unsichtbar geschaltet.
-->
<hotspot name="door1" url="spots/hs_01.jpg" style="spotstyle" />
<hotspot name="door2" url="spots/hs_02.jpg" style="spotstyle" />
<hotspot name="door3" url="spots/hs_03.jpg" style="spotstyle" />
<hotspot name="door4" url="spots/hs_04.jpg" style="spotstyle" />
<hotspot name="door5" url="spots/hs_05.jpg" style="spotstyle" />
<hotspot name="door6" url="spots/hs_06.jpg" style="spotstyle" />
<hotspot name="door7" url="spots/hs_07.jpg" style="spotstyle" />
<hotspot name="door8" url="spots/hs_08.jpg" style="spotstyle" />
<hotspot name="door9" url="spots/hs_09.jpg" style="spotstyle" />
<hotspot name="door10" url="spots/hs_10.jpg" style="spotstyle" />
<hotspot name="door11" url="spots/hs_11.jpg" style="spotstyle" />
<hotspot name="door12" url="spots/hs_12.jpg" style="spotstyle" />
<hotspot name="door13" url="spots/hs_13.jpg" style="spotstyle" />
<hotspot name="door14" url="spots/hs_14.jpg" style="spotstyle" />
<hotspot name="door15" url="spots/hs_15.jpg" style="spotstyle" />
<hotspot name="door16" url="spots/hs_16.jpg" style="spotstyle" />
<hotspot name="door17" url="spots/hs_17.jpg" style="spotstyle" />
<hotspot name="door18" url="spots/hs_18.jpg" style="spotstyle" />
<hotspot name="door19" url="spots/hs_19.jpg" style="spotstyle" />
<hotspot name="door20" url="spots/hs_20.jpg" style="spotstyle" />
<hotspot name="door21" url="spots/hs_21.jpg" style="spotstyle" />
<hotspot name="door22" url="spots/hs_22.jpg" style="spotstyle" />
<hotspot name="door23" url="spots/hs_23.jpg" style="spotstyle" />
<hotspot name="door24" url="spots/hs_24.jpg" style="spotstyle" />
<hotspot name="door25" url="spots/hs_25.jpg" style="spotstyle" />
<!--
Dieser Hotspot (eine einfache kleine Grafik), ebenfalls unsichtbar (alpha=0.0) dient als Bereich
in welchem die Tür per Klick geöffnet bzw. geschlossen werden kann.
Die Positionswerte wurden zuerst interaktiv mit dem Editor Plugin (siehe oben) ermittelt und dann hier eingefügt.
Zu Beginn, während des Einrichtens mit dem Editor Plugin sollte 'alpha' auf '0.5' (halb-durchsichtig)
gesetzt sein, um den Hotspot überhaupt sehen zu können.
Die Einstellung capture="false" ist gesetzt um das Panorama trotz Klick auf den Hotspot steuern zu können.
Zusätzlich enthält dieser Hotspot noch benutzerdefinierte Variablen mit Informationen
zu den Tür-Hotspots welche dieser Hotspot steuert:
- doorframe - Diese Variable speichert die Nummer des aktuell sichtbaren Hotspots.
- doorframes - Die Gesamtanzahl der Hotspot Bilder.
- doortime - Die Zeit in Sekunden zum kompletten Öffnen oder Schliesen der Tür.
- doorname - Der 'Basis'-name der Hotspots (z.B. 'door' für 'door1', 'door2', 'door3', ...).
- doorstate - Der Zustand der Tür - geöffnet oder geschlossen. Dieser wird bei jedem Klick umgeschaltet.
-->
<hotspot name="door_hitarea"
url="hitarea.png"
alpha="0.0"
ath="-43.665605"
atv="24.621247"
distorted="true"
rx="18.5" ry="16.0" rz="1.216838"
width="64" height="32"
scale="7.042929"
capture="false"
doorframe="1"
doorframes="25"
doortime="0.5"
doorname="door"
doorstate="closed"
onclick="open_or_close_door(get(name))"
/>
<!--
Diese Action öffnet oder schließt die Tür - je nach aktuellem Zustand.
Die Action wird vom onclick Event des 'hitarea' Hotspot überall aufgerufen (könnte aber auch von jedem
beliebigen anderem Event oder Code aufgerufen werden). Als Parameter wird der Name des
Hotspots angegeben, bei welchem die 'doorframe', 'doorframes', 'doorname' und 'doorstate' Werte
gespeichert sind.
-->
<action name="open_or_close_door">
<!-- Hier den tween() 'distance'-Parameter erstellen - damit wird die Zeit der Tweenanimation dem aktuellen Wert angepasst - z.B. wird der Wert bereits auf halben Weg wieder geändert, halbiert sich auch die Animationszeit. -->
txtadd(distanceparameter, 'distance(', get(hotspot[%1].doorframes), ',', get(hotspot[%1].doortime), ')');
if(hotspot[%1].doorstate == 'closed',
<!-- diese Tür ist aktuell geschlossen - den Zustand jetzt auf geöffnet setzen: -->
set(hotspot[%1].doorstate, 'opened');
<!-- jetzt die aktuelle Frame-Nummer auf letzte Framenummer erhöhen, dabei bei jedem Zwischenschritt die 'update_door_frame' aufrufen -->
tween(hotspot[%1].doorframe, get(hotspot[%1].doorframes), get(distanceparameter), linear, null, update_door_frame(%1) );
,
<!-- diese Tür ist aktuell geöffnet - den Zustand jetzt auf geschlossen setzen: -->
set(hotspot[%1].doorstate, 'closed');
<!-- und die aktuelle Frame-Nummer auf 1 reduzieren, dabei bei jedem Zwischenschritt die 'update_door_frame' aufrufen -->
tween(hotspot[%1].doorframe, 1, get(distanceparameter), linear, null, update_door_frame(%1) );
);
</action>
<!--
Die 'update_door_frame' Action durchläuft alle zugehörigen Hotspots und setzte diese
entweder sichtbar (alpha=1.0) oder unsichtbar (alpha=0.0).
Als Parameter wird wieder der Name des Hotspots angegeben, bei welchem die 'doorframe',
'doorframes', 'doorname' und 'doorstate' Werte gespeichert sind.
-->
<action name="update_door_frame">
<!-- die aktuelle Bildnummer in ein andere Variable zum 'arbeiten' umkopieren -->
copy(framenumber, hotspot[%1].doorframe);
<!-- da die Nummer durch die tween() Action auch Nachkommastellen enthält, mittels 'floor' die Nummer auf ganze Zahlen abrunden -->
Math.floor(framenumber);
<!-- hier in einer Schleife i=1 bis i=doorframes durchlaufen: -->
for(set(i,1), i LE hotspot[%1].doorframes, inc(i),
<!-- mittels 'txtadd' den Namen des Hotspots zusammensetzen (z.B. 'door' + '5' => 'door5'). -->
txtadd(spotname, get(hotspot[%1].doorname), get(i) );
<!-- entspricht 'i' der Nummer des aktuellen Frames?
ja => den Hotspot sichtbar setzen (alpha=1.0)
nein => den Hotspot unsichtbar setzen (alpha=0.0) -->
if(i == framenumber, set(hotspot[get(spotname)].alpha,1.0), set(hotspot[get(spotname)].alpha,0.0) );
);
</action>
<!--
Die Action um die PTGUI/Hugin Werte für die extrahierten Bilder in krpano Koorindaten umzurechnen
Entsprechend diesem Tutorial hier:
http://krpano.com/forum/wbb/index.php?pa…d&threadID=7272
-->
<action name="calc_pos_from_hfov_yaw_pitch_roll">
div(hfov,%1,57.295779);
div(yaw,%2,-57.295779);
div(pitch,%3,57.295779);
div(roll,%4,-57.295779);
mul(hfov,0.5);Math.tan(hfov);mul(width,hfov,1000);set(height,'prop');
Math.cos(ch,yaw);Math.sin(sh,yaw);
Math.cos(ca,pitch);Math.sin(sa,pitch);
Math.cos(cb,roll);Math.sin(sb,roll);
mul(m0,ca,ch);
mul(tmp,cb,sa);mul(tmp,ch);mul(tmp2,sb,sh);add(m3,tmp,tmp2);
mul(m4,cb,ca);
mul(tmp,cb,sa);mul(tmp,sh);mul(tmp2,sb,ch);sub(m5n,tmp,tmp2);mul(m5n,-1);
mul(tmp,sb,sa);mul(tmp,ch);mul(tmp2,cb,sh);sub(m6n,tmp,tmp2);mul(m6n,-1);
Math.atan2(yaw,m6n,m0);
Math.atan2(roll,m5n,m4);
Math.asin(pitch,m3);
mul(ath,yaw,57.295779);
mul(atv,pitch,57.295779);
mul(rotate,roll,57.295779);
</action>
</krpano>