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.

Dieter

Beginner

  • "Dieter" started this thread

Posts: 25

Location: Stuttgart

  • Send private message

1

Tuesday, March 3rd 2009, 12:56am

Radarstrahl begrenzen

Hallo Klaus,

ich frage mich gerade, wie ich die Länge des Radarstrahls in manchen Richtungen begrenzen kann.

Für einen Fall habe ich das Problem schon gelöst, nämlich dann, wenn ich den Strahl im Grundriß eines Innenraumes auf diesen Innenraum begrenzen möchte. Ich habe einfach ein zweites Plugin über das Radarplugin gelegt, das dieses ausserhalb des Grundrisses überdeckt.

Darüberhinaus (und auch generell, d.h. auch bei Nicht-Innenraum-Situationen) besteht das Problem, dass der Strahl an manchen Stellen über die Map hinausragen und sich über das Pano legen kann immer dann, wenn man den Kamerastandort nicht genau in die Mitte der Radarmap positioniert. Natürlich könnte man die Länge des Strahls dann an der kürzesten Randentfernung ausrichten, das ist aber möglicherweise für die andere Richtung ungünstig (wie ja auch in einem Pano selbst das Sichtfeld mal weiter und mal nicht so weit sein kann).

Vielleicht zeigt der beigefügte Screenshot-Ausschnitt besser was ich meine.

Was ich nun suche ist also eine Möglichkeit, die Sichtbarkeit des Radarstrahls, egal wo er positioniert wird und egal wie lang er ist, generell auf eine bestimmte Fläche, z.B. die Fläche der Radarmap zu begrenzen.

Frage: habe ich diese Möglichkeit übersehen und falls es sie tatsächlich nicht gibt: ist sowas vorgesehen ?

Und wenn wir schon beim Thema sind: wird es mal möglich sein, die Länge des Strahls von der vertikalen Ausrichtung abhängig zu machen, d.h. den Strahl zu verkürzen, wenn nach oben oder unten "geschwenkt" wird ?

Besten Dank - und nicht nur für die Antwort, sondern bei der Gelegenheit auch mal für den Player überhaupt ;-).

Gruß Dieter
Dieter has attached the following image:
  • radarbsp3.jpg

2

Wednesday, March 4th 2009, 11:21pm

Hi,

das ist momentan leider noch nicht möglich,
ich werde aber in der nächsten Version dafür eine Funktionalität hinzufügen,

denkbar wäre:
- ein bestimmter rechteckiger Bereich wird als Maske definiert (x1,y1 - x2,y2)
- oder eine zusätzliche SW Grafik wird als Maske verwendet

das mit dem Bereich wäre dabei die einfachere Lösung, werd versuchen das
in Kürze bereitzustellen

Schöne Grüße,
Klaus

Dieter

Beginner

  • "Dieter" started this thread

Posts: 25

Location: Stuttgart

  • Send private message

3

Wednesday, March 4th 2009, 11:52pm

Danke

Danke Klaus, ich freu mich schon drauf *thumbsup* .

Ich denke, dass ein rechteckiger Bereich dafür ausreichen würde (zumal wenn das schneller zu realisieren ist ;-) ). Innerhalb der Map kann man dann ja wie ich es schon gemacht habe, gegebenenfalls zusätzlich noch mit einer Maske arbeiten. Es geht also nur um die Begrenzung auf die Map an sich - und die dürfte ja in der Regel rechteckig sein.

Danke nochmals. Dieter

4

Thursday, March 5th 2009, 1:41pm

Hi,

sorry, das mit dem rechteckigem Bereich nehm ich zurück, mit einer Grafik ist's doch einfacher

als Maske kann man jetzt einfach eine andere Grafik (Plugin) verwenden,
dabei wird entweder der rechteckige Umriss oder der Alphakanal der Grafik verwendet,
die Position und Größe wird ganz normal über die x/y/width/height/align Parameter bestimmt,

dazu hab ich das Radar Plugin um eine "setmask(pluginname,usealpha);" Funktion erweitert,
diese kann z.B. im "onloaded" des Radar Plugins oder von anderen Aktionen aufgerufen werden,

der 1. Parameter ist dabei der Name der andern Grafik die als Maske dienen soll,
der 2. Parameter gibt an ob nur der Umriss (=false) oder der Alphakanal (=true) verwendet werden soll,

die Grafik die als Maske dient sollte noch mit enable="false" und visible="false" deaktiviert und unsichtbar gesetzt werden,

hier ein XML Beispiel:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
<plugin name="radar" 
    	 url="radar.swf" 
    	 align="center" scale="2" 
    	 onloaded="setmask(maskimage,true);" 
    	 />
	
<plugin name="maskimage"  
    	 url="mask.png"  
    	 align="center" 
    	 visible="false" 
    	 enabled="false" 
    	 />


ich werde diese Masken-Funktionalität auch gleich direkt in die nächste krpano Version übernehmen,
dann lässt sich das für alle Elemente verwenden

Download des aktuellen Radar Plugins - radar.zip

Hier noch ein Beispiel - Radar mit Maske (und die dort verwendete Maskengrafik - mask.png)

Schöne Grüße,
Klaus

Dieter

Beginner

  • "Dieter" started this thread

Posts: 25

Location: Stuttgart

  • Send private message

5

Thursday, March 5th 2009, 3:50pm

Super !!!

Danke Klaus, funktioniert auch bei mir hervorragend.

Ist genau das was ich wollte *thumbup* und noch viel mehr *thumbup* und dann auch noch so schnell *thumbup*

Eine Sache ist mir noch aufgefallen: wenn ich keinen Alphakanal verwende sondern einfach den Umriss (z.B. von der Map), dann funktioniert es zwar, ich kann aber den Radarstrahl nicht mehr anpacken um das Pano zu drehen. Ist kein Problem, man kann ja auch wenn man nur ein Rechteck will einen Alphakanal anlegen. Ich wollte es nur sagen weil ich nicht weiss, ob das jetzt an meinem Code liegt oder zufällig so ist oder gar zwangsläufig so sein muss.

Nochmal ganz herzlichen Dank,
ich bin wirklich froh, dass ich zur richtigen Zeit auf den richtigen Player gestoßen bin. ;-)

Dieter

6

Thursday, March 5th 2009, 4:53pm

Hi,

das sollte eigentlich nicht sein,
hast du beim Masken Plugin enabled auf "false" gesetzt?

Schöne Grüße,
Klaus

Dieter

Beginner

  • "Dieter" started this thread

Posts: 25

Location: Stuttgart

  • Send private message

7

Thursday, March 5th 2009, 8:08pm

Geklärt

Hallo Klaus,

ja, beim Masken-Plugin hatte ich zwar immer enabled auf false gesetzt - und doch hast Du damit den Fehler in meinem Code gefunden:

bei dem Beispiel, wo ich im Masken-Plugin nur die rechteckigen Umrisse verwendet habe, hatte ich innerhalb der Map (wie damals im ersten Posting beschrieben) eine weitere Maske darüber gelegt - und dort hatte ich enabled="false" vergessen *cry* . Beim Beispiel mit dem Alphakanal war diese zweite Maske dann überflüssig.

Danke und Gruß Dieter

8

Monday, October 26th 2009, 10:51pm

Hallo Klaus, hierzu möchte ich auch eine Frage stellen:
Ich arbeite gerade an meiner ersten Tour und such mir hier die Infos im Forum und in der Doku zusammen.
Hab also keine große Ahnung von XML.
Radar und Maske habe ich eingebaut in der ersten geladenen XML-Datei.

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
40
41
42
43
44
45
  <!-- activated hotpot -->
	<plugin name="activespot" url="%SWFPATH%/img/mappointactive.png" keep="true" align="center" edge="center" visible="false" zorder="3" />

	<!-- radar plugin, set heading with "plugin[radar].heading" -->	
	
	<plugin name="radar"
	    	url="%SWFPATH%/plugins/radar.swf"
	    	zorder="1"
	    	keep="true"
	    	heading="150"
	    	parent="map"
	    	mask="mapmask"  
	    	align="lefttop"
	    	edge="center"
	    	x="0" y="0"
	    	linecolor="0"
	    	fillcolor="0xFF0000"
	    	scale="2.5"
	    	visible="false"
	    	/>															
	
 <!--mask for radar --> 
	<plugin name="mapmask" url="%SWFPATH%/img/map_mask.png" keep="true"
	    	parent="map"
	    	enabled="false"
	    	/>	
<!-- actions -->



	<!-- activatespot action, 
	 	- this action has two arguments:
	   	- %1 = the current spot
	   	- %2 = the current radar heading
	-->
	
	<action name="activatespot">
		set(plugin[activespot].parent, plugin[%1]);
		set(plugin[activespot].visible, true);
		copy(plugin[radar].x, plugin[%1].x);
		copy(plugin[radar].y, plugin[%1].y);
		trace(plugin[radar].x,'-',plugin[radar].y);
		set(plugin[radar].visible, true);
		set(plugin[radar].heading, 90);
	</action>	 	


Wenn ich nun ein weiteres Pano lade,

Source code

1
2
 <plugin name="Pano2" url="%SWFPATH%/img/mappoint.png" keep="true" parent="map" align="lefttop" edge="center" x="120"  y="120" zorder="2" onhover="showtext(Pano2);"     	
	onclick="loadpano (Pano2.xml, null, MERGE, BLEND(1));" />


benötige ich auch eine neue Maske.
Wie binde ich diese Makse in der nächsten geladenen XML-DAtei ein?
Wie funtkioniert das in deinem Beispiel Weinkeller, stellst du dafür auch die settings.xml-Datei zur Verfügung?

Danke für eine Info, dann kann ich mein Werk auch bald mal zur allgemeinen Diskussion stellen.
Gruß
Michael

9

Wednesday, October 28th 2009, 9:11am

Wie binde ich diese Makse in der nächsten geladenen XML-DAtei ein?
Hi,

das hier wäre eine Möglichkeit:

ein <plugin> mit der jeweiligen Maske innerhalb der <scene> definieren,
wichtig ohne keep="true",
und im "onloaded" event des Plugins eine Action aufrufen, welche die Maske
neu setzt,

z.B.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<scene ...>
  ...
  <plugin name="mapmask" url="pano1_mapmask.png" parent="map" enabled="false" onloaded="updatemask(get(name));" />
</scene>

<scene ...>
  ...
  <plugin name="mapmask" url="pano2_mapmask.png" parent="map" enabled="false" onloaded="updatemask(get(name));" />
</scene>

...

<action name="updatemask">
  set(plugin[radar].mask, %1);
</action>


Schöne Grüße,
Klaus

10

Thursday, October 29th 2009, 10:32am

Danke für diese Info Klaus,
das muss ich ausprobieren.
Gruß
Michael
Wie binde ich diese Makse in der nächsten geladenen XML-DAtei ein?
Hi,

das hier wäre eine Möglichkeit:

ein <plugin> mit der jeweiligen Maske innerhalb der <scene> definieren,
wichtig ohne keep="true",
und im "onloaded" event des Plugins eine Action aufrufen, welche die Maske
neu setzt,

z.B.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<scene ...>
  ...
  <plugin name="mapmask" url="pano1_mapmask.png" parent="map" enabled="false" onloaded="updatemask(get(name));" />
</scene>

<scene ...>
  ...
  <plugin name="mapmask" url="pano2_mapmask.png" parent="map" enabled="false" onloaded="updatemask(get(name));" />
</scene>

...

<action name="updatemask">
  set(plugin[radar].mask, %1);
</action>


Schöne Grüße,
Klaus