You are not logged in.

Dear visitor, welcome to krpano.com Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Thomas220

Beginner

  • "Thomas220" started this thread

Posts: 29

Location: Callenberg

Occupation: Disponent

  • Send private message

1

Sunday, May 8th 2011, 8:34am

Autotour in Autotour

Hallo zusammen, das Ausführen einer Autotour, so wie das Klaus von krpano beschrieb, funktioniert soweit ganz gut. Nun möchte ich innerhalb der aufgerufenen Panoramas auch so eine Art Autotour laufen lassen. Der Code der Autotour, die die einzelnen Panoramas lädt lautet so:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<krpano onstart="setuptour();"> 
<action name="setuptour"> 
set(step,1); 
set(idletime,4); 
set(events.onidle, autotour() ); 
</action> 

<action name="autotour"> 
oninterrupt(break); 
if (step == 1, wait(1);inc(step);); 
if (step == 2, loadpano(Augustusburg.xml);inc(step);); 
if (step == 3, wait(60); inc(step);); 
if (step == 4, wait(blend); inc(step);); 
if (step == 5, loadpano(Johanneskirchplatz_HDR_Auto.xml,null,MERGE,BLEND(2),action(ausblenden));inc(step);); 
if (step == 6, wait(30);inc(step);); 
if (step == 7, tourdone(autotour1.xml);set(step,1);); 
</action> 
...




Im aufgerufenen Panorama 'Augustusburg.xml' steht nun das hier:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<krpano version="1.0.8" > 
<include url="skin/defaultskin.xml" /> 
<action name="setuptour"> 
set(step,1); 
set(idletime,4); 
set(events.onidle, autotour1() ); 
</action> 

<action name="autotour1"> 
oninterrupt(break); 
if (step == 1, wait(5);inc(step);); 
if (step == 2, tween(view.hlookat, 220,4);inc(step);); 
if (step == 3, wait(1); inc(step);); 
if (step == 4, wait(blend); inc(step);); 
if (step == 5, tween(view.vlookat,-5,2);inc(step);); 
if (step == 6, wait(2);inc(step);); 
if (step == 7, tween(view.fov, 15,6);inc(step);); 
if (step == 8, wait(180); set(step,1);); 
</action> 
...




Rufe ich das Panorama 'Augustusburg.xml' allein auf, so wird gezoomt und geschwenkt. Alles palletti. Wenn ich es aber über die Autotour aufrufe passiert da nichts davon. Ich hatt im Kopf des Panoramas auch schon 'onstart...' stehen. Ändert sich nichts und ich glaube, dass Klaus schrieb, man kann ein 'onstart' nur einmal aufrufen.

Gibt es eine Möglichkeit das so hinzukriegen, wie ich es möchte?

(Bitte nicht an den unmöglichen Wait-Zeiten etc. stören. Die sind nur zum Testen so kurz.)

Vielen Dank für Hilfe.

Thomas

2

Wednesday, May 11th 2011, 10:20am

Hi,

das "setuptour" müsste in dem Fall in der jeder XML neu aufgerufen werden,
dort wird jeweils das "onidle" Event für die Automatische Tour gesetzt,

dazu wäre eventuell das "onxmlcomplete" Event geeignet, das wird nach
dem Laden jeder neuen Panorama XML oder neuen Szene aufgerufen,

z.B. in jeder XML diesen Code hinzufügen:

Source code

1
<events onxmlcomplete="setuptour();" />


der Aufruf im onstart muss dann aber natürlich weg,

Schöne Grüße,
Klaus

Thomas220

Beginner

  • "Thomas220" started this thread

Posts: 29

Location: Callenberg

Occupation: Disponent

  • Send private message

3

Thursday, May 12th 2011, 8:31pm

Hallo Klaus, vielen Dank für die Hilfe. Leider geht das nicht so wie gewollt. Ich habe die beiden xml nun so geändert:



Erste:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<krpano > 
<events onxmlcomplete="setuptour();" /> 

<action name="setuptour"> 
set(step,1); 
set(idletime,4); 
set(events.onidle, autotour() ); 
</action> 

<action name="autotour"> 
oninterrupt(break); 
if (step == 1, wait(1);inc(step);); 
if (step == 2, loadpano(Augustusburg.xml);inc(step);); 
if (step == 3, wait(60); inc(step);); 
if (step == 4, wait(blend); inc(step);); 
if (step == 5, loadpano(Johanneskirchplatz_HDR_Auto.xml,null,MERGE,BLEND(2),action(ausblenden));inc(step);); 
if (step == 6, wait(30);inc(step);); 
if (step == 7, tourdone(autotour1.xml);set(step,1);); 
</action> 
...




Und das zweite:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<krpano > 
<events onxmlcomplete="setuptour();" /> 

<action name="setuptour"> 
set(step,1); 
set(idletime,2); 
set(events.onidle, autotour()); 
</action> 


<action name="autotour"> 
oninterrupt(break); 
if (step == 1, wait(1);inc(step);); 
if (step == 2, tween(view.hlookat, 220,4);inc(step);); 
if (step == 3, wait(1); inc(step);); 
if (step == 4, wait(blend); inc(step);); 
if (step == 5, tween(view.vlookat,-5,2);inc(step);); 
if (step == 6, wait(2);inc(step);); 
if (step == 7, tween(view.fov, 15,6);inc(step);); 
if (step == 8, wait(180); set(step,1);); 
</action> 
...




Im ersten xml funktioniert es. Nach einigen Sekunden wird das Pano 'Augustusburg' aufgerufen. Aber da passiert gar nichts. Es steht einfach 'nur so rum'. Nach einigen Sekunden wird das Panorama 'Johanneskirchplatz' gstartet. Ende.



Was mache ich blos falsch?

Viele Grüße.

Thomas

4

Thursday, May 12th 2011, 9:50pm

Hi,

okay, stimmt, bei genauerer Überlegung kann das ganze ja eigentlich so nicht funkionieren,

die Aufrufe nach dem loadpano(), also die Aufrufe in der ersten "autotour" laufen natürlich weiter,
d.h. zwei verschachtelte "autotouren" sind in der Form nicht möglich...

Schöne Grüße,
Klaus

Thomas220

Beginner

  • "Thomas220" started this thread

Posts: 29

Location: Callenberg

Occupation: Disponent

  • Send private message

5

Saturday, May 14th 2011, 10:18pm

Heureka (na ja, fast)

Hallo Klaus, vielen Dank für die ehrliche Antwort. KRPANO ist halt keine eierlegende Wollmilchsau.

Habe es jetzt so gelöst. Im ersten Pano werden alle Parameter für die folgenden gesetzt. Zusätzlich habe ich noch für jedes Panorama eine eigene 'defaultskin.xml' geschrieben, in der man mit ein paar Plugins noch etwas Einfluss auf die jeweiligen Panoramas nehmen kann.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<krpano > 
<events onxmlcomplete="setuptour();" /> 

<action name="setuptour"> 
set(step,1); 
set(idletime,4); 
set(events.onidle, autotour() ); 
</action> 

<action name="autotour"> 
oninterrupt(break); 
if (step == 1, wait(1);inc(step);); 
if (step == 2, loadpano(Augustusburg.xml);inc(step);); 
if (step == 3, wait(10); inc(step);); 
if (step == 4, tween(view.hlookat, 215,8);inc(step);); 
if (step == 5, wait(1); inc(step);); 
if (step == 6, tween(view.vlookat,-5,2);inc(step);); 
if (step == 7, wait(2);inc(step);); 
if (step == 8, tween(view.fov, 15,6);inc(step);); 
if (step == 9, wait(60); inc(step);); 
if (step == 10, wait(blend); inc(step);); 
if (step == 11, loadpano(wolkenstein.xml);inc(step);); 
if (step == 12, wait(60);set(step,1);); 
</action> 

</krpano>




Und hier z. Bsp. ein Teil der 'defaultskin_augustus.xml'

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<krpano version="1.0.8" logkey="false" > 


<!-- default quality settings --> 
<display flash10="on" movequality="HIGH" stillquality="HIGH" movequality10="HIGH" stillquality10="HIGH" /> 
<!-- den view festlegen --> 
<view hlookat="0" vlookat="0" maxpixelzoom="5.0" fovmax="130" /> 

<!-- events: set the custom cursor on start and fullscreen events for button changes --> 
<events onxmlcomplete="setuppano();" 
onenterfullscreen="set(plugin[openfs].visible,false); 
set(plugin[closefs].visible,true); 
if(isandroid, set(plugin[android_openfs].visible,false); set(plugin[android_closefs].visible,true); ); 
" 
onexitfullscreen ="set(plugin[openfs].visible,true); 
set(plugin[closefs].visible,false); 
if(isandroid, set(plugin[android_openfs].visible,true); set(plugin[android_closefs].visible,false); ); 
" 
/> 
<!-- autorotate am 28.04.2011 eingefügt--> 
<autorotate enabled="true" 
waittime="2.0" 
accel="0.5" 
speed="5" 
horizon="0" 
tofov="100" 
/> 

<plugin name="logo_alt" 
url="../Schriftzug_Augustusburg_32x6cm.png" 
align="centerbottom" 
x="10" 
y="10" 
/> 
...




In der 'Autorotate' kann man dann z. Bsp. das Panorama mal links mal rechts, mal schnell mal langsam drehen lassen.

Diese Autotour stellt sicher nicht das non-plus-ultra der Programmierung dar. Es ist auch lediglich als 'Rahmenprogramm' für eine Fotoausstellung gedacht, um etwas Bewegung in die Sache zu bringen.



Viele Grüße.

Thomas

JPC

Beginner

Posts: 39

Location: Paris

Occupation: Photographies and media

  • Send private message

6

Tuesday, July 19th 2011, 12:09am

hi, i have a problem with an autotour, after one tour aproximatively the "oninterrupt" doesn't break anymore.

Indiferently with an "<events onxmlcomplete="setuptour();" /> or an "onstart" <krpano version="1.0.8.12"

I dont understand why.

you can have a look to the project. this one use some "lookto", but the problem is similar with some tween.
http://www.camus.pro/guerlainpdlb/Guerlainpdlb.html

klaus wrotte that the "oninterrupt changed with the 1.0.8 of KR pano, maybe is it the explaination.

Thank you for your help

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<krpano version="1.0.8.12" logkey="false" onstart="setuptour()">
        <!--autotour-->
		<action name="setuptour">
  set(step,1);
  set(idletime,3);
  set(events.onidle, autotour() );
</action>

	
	
<action name="autotour">
oninterrupt(breakall());
if(step == 1, wait(2); inc(step); );
 if(step == 2, lookto(-12,3,20,smooth(5,-5,5)); wait(2);inc(step); );
  if(step == 3, loadpano(Guerlainpdlb0.xml,null,KEEPBASSE,BLEND(1)); lookat(20,0,70); wait(3); inc(step); );
  if(step == 4, lookto(-35,0,55,smooth(5,-5,5)); wait(2);inc(step); );
  if(step == 5,	loadpano(Guerlainpdlb1.xml,null,KEEPBASSE,BLEND(1));lookat(10,0,30); wait(3); inc(step); );
  if(step == 6, lookto(0,0,80,smooth(5,-5,5)); wait(2);inc(step); );
  if(step == 7, lookto(-15,3,20,smooth(5,-5,5)); wait(2);inc(step); );
  if(step == 8, loadpano(Guerlainpdlb2.xml,null,KEEPBASSE,BLEND(1)); lookat(-2,0,80);  wait(3); inc(step); );
  if(step == 9, lookto(-3,15,10,smooth(10,-10,5)); wait(1); inc(step); );
if(step == 10, loadpano(Guerlainpdlb9.xml,null,KEEPBASSE,BLEND(1)); lookat(147,0,90); wait(3); inc(step); );
 if(step == 11, lookto(320,15,25,smooth(10,-10,5)); wait(1); inc(step); );
if(step == 12, loadpano(Guerlainpdlb4.xml,null,KEEPBASSE,BLEND(1)); lookat(-2,12,48); wait(3); inc(step); );
if(step == 13, lookto(-4,0,100,smooth(5,-5,5)); wait(3); inc(step); );
if(step == 14, lookto(20,0,100,smooth(5,-5,5)); wait(3); inc(step); );
if(step == 15,  loadpano(Guerlainpdlb5.xml,null,KEEPBASSE,BLEND(1)); lookat(0,-2,90); wait(3); inc(step); );
if(step == 16, lookto(-35,0,50,smooth(5,-5,5)); wait(3); inc(step); );
if(step == 17, loadpano(Guerlainpdlb8.xml,null,KEEPBASSE,BLEND(1)); lookat(-60,5,80); wait(2); inc(step); );
if(step == 18, lookto(60,-5,90,smooth(5,-5,5)); wait(2);inc(step); );
if(step == 19, lookto(150,10,40,smooth(5,-5,5)); wait(2);inc(step); );

if(step == 20, loadpano(Guerlainpdlb10.xml,null,KEEPBASSE,BLEND(1)); lookat(130,10,60); wait(2); inc(step); );
if(step == 21, lookto(220,0,70,smooth(5,-5,5)); wait(2);inc(step); );
if(step == 22, loadpano(Guerlainpdlb7.xml,null,KEEPBASSE,BLEND(1)); lookat(10,5,20); wait(2); inc(step); );
if(step == 23, lookto(3,-3,80,smooth(5,-5,5)); wait(2);inc(step); );
if(step == 24, loadpano(Guerlainpdlb3.xml,null,KEEPBASSE,BLEND(1)); lookat(10,0,50); wait(3); setuptour(); );

</action>



An other question do somebody know how to get a "lookat" with a smooth effect like a blend but in the same panorama ?

JPC

Beginner

Posts: 39

Location: Paris

Occupation: Photographies and media

  • Send private message

7

Tuesday, July 19th 2011, 1:13pm

I have found the solution i duplicate the setup and the autotour with the oninterrupt in each panorama with the corresponding steps only. and it works perfectly.

If somebody know how to have a lookat with smooth effect, thanks to tell me.

Jean-Philippe