krpano学习笔记之特殊视角View

vtourskin皮肤的鼠标右键菜单中有视野改变方法

<!-- 鼠标右键菜单 context menu - http://krpano.com/docu/xml/#contextmenu -->
	<contextmenu>
		。。。。。。
		
		<!-- 正常视野 -->
		<item name="nv" caption="Normal View"        
		  		  onclick="skin_view_normal();"        
		  		  showif="view.vlookatrange == 180" 
		  		  separator="true"      />
		<!-- 鱼眼视野 -->
		<item name="fv" 
		          caption="Fisheye View"       
		          onclick="skin_view_fisheye();"       
		          showif="view.vlookatrange == 180" 
		          devices="flash|webgl" />
		<!-- 立体视野 -->          
		<item name="sv" 
				caption="Stereographic View" 
				onclick="skin_view_stereographic();" 
				showif="view.vlookatrange == 180" 
				devices="flash|webgl" />
		<!-- 建筑视野 -->          
		<item name="av" 
				caption="Architectural View" 
				onclick="skin_view_architectural();" 
				showif="view.vlookatrange == 180"                       />
		<!-- Pannini 视野 -->
		<item name="pv" 
				caption="Pannini View"       
				onclick="skin_view_pannini();"       
				showif="view.vlookatrange == 180" 
				devices="flash|webgl" />
		<!-- 小行星视野 -->
		<item name="lp"
		 		caption="Little Planet View" 
		 		onclick="skin_view_littleplanet();"  
		 		showif="view.vlookatrange == 180" 
		 		devices="flash|webgl" />
	</contextmenu>



	<!-- 视野缓动 -->
	<action name="skin_view_look_straight">
		if(view.vlookat LT -80 OR view.vlookat GT +80,
			tween(view.vlookat, 0.0, 1.0, easeInOutSine);
			tween(view.fov,     100, distance(150,0.8));
		);
		skin_deeplinking_update_url(1.0);
	</action>

	<action name="skin_view_normal">
		skin_view_look_straight();
		tween(view.architectural, 0.0, distance(1.0,0.5));
		tween(view.pannini,       0.0, distance(1.0,0.5));
		tween(view.distortion,    0.0, distance(1.0,0.5));
	</action>

	<action name="skin_view_fisheye">
		skin_view_look_straight();
		tween(view.architectural, 0.0,  distance(1.0,0.5));
		tween(view.pannini,       0.0,  distance(1.0,0.5));
		tween(view.distortion,    0.35, distance(1.0,0.5));
	</action>

	<action name="skin_view_stereographic">
		skin_view_look_straight();
		tween(view.architectural, 0.0, distance(1.0,0.5));
		tween(view.pannini,       0.0, distance(1.0,0.5));
		tween(view.distortion,    1.0, distance(1.0,0.8));
	</action>

	<action name="skin_view_architectural">
		skin_view_look_straight();
		tween(view.architectural, 1.0, distance(1.0,0.5));
		tween(view.pannini,       0.0, distance(1.0,0.5));
		tween(view.distortion,    0.0, distance(1.0,0.5));
	</action>

	<action name="skin_view_pannini">
		skin_view_look_straight();
		tween(view.architectural, 0.0, distance(1.0,0.5));
		tween(view.pannini,       1.0, distance(1.0,0.8));
		if(view.distortion LT 0.1,
			tween(view.distortion, 1.0, distance(1.0,0.8));
		);
	</action>

	<action name="skin_view_littleplanet">
		tween(view.architectural, 0.0, distance(1.0,0.5));
		tween(view.pannini,       0.0, distance(1.0,0.5));
		tween(view.distortion,    1.0, distance(1.0,0.8));
		tween(view.fov,           150, distance(150,0.8));
		tween(view.vlookat,        90, distance(100,0.8));
		tween(view.hlookat, calc(view.hlookat + 100.0 + 45.0*random), distance(100,0.8));
		skin_deeplinking_update_url(1.0);
	</action>

	<action name="skin_deeplinking_update_url" scope="local" args="delay">
		if(skin_settings.deeplinking AND (!webvr OR webvr.isenabled === false) AND global.lpinfo === null,
			delayedcall(skin_deeplinking_update, calc(delay == null ? 0.1 : delay), skin_deeplinking_update_url_process() );
		);
	</action>

	<action name="skin_deeplinking_update_url_process" scope="local">
		copy(adr, browser.location);
		indexoftxt(qi, get(adr), '?');
		if(qi GT 0, subtxt(adr, adr, 0, get(qi)));
		copy(si, scene[get(xml.scene)].index);
		copy(h, view.hlookat);
		copy(v, view.vlookat);
		copy(f, view.fov);
		copy(d, view.distortion);
		copy(a, view.architectural);
		clamp(d, 0.0, 1.0);
		clamp(a, 0.0, 1.0);
		set(pp, calc(f LT 10 ? 6 : 2));
		roundval(h, get(pp));
		roundval(v, get(pp));
		roundval(f, get(pp));
		roundval(d, 2);
		roundval(a, 1);
		set(adr, calc(adr + '?startscene=' + si + '&amp;startactions=lookat('+h+','+v+','+f+','+d+','+a+');'));
		js( history.replaceState(null, document.title, get(adr)); );
	</action>



onclick中的方法基本上可以直接调用!
不行的话,自己action,调用view参数,用tween慢慢调吧!

都是从小白过来的……谁还没调过参数咋的……

最后发现有现成的,~ 一天白忙活了~

猜你喜欢

转载自blog.csdn.net/bgp_halt_here/article/details/105438118