|
@@ -1,5 +1,27 @@
|
|
|
<krpano version="1.20.9" title="Virtual Tour">
|
|
|
-
|
|
|
+ <!-- <plugin name="pp_light" keep="true"
|
|
|
+ url="https://dm.static.elab-plus.com/miniProgram/krpano/plugins/pp_light.js"
|
|
|
+ enabled="true"
|
|
|
+ exposure="0.0"
|
|
|
+ lights="1.0"
|
|
|
+ shadows="5.0"
|
|
|
+ filterrange="60.0"
|
|
|
+ masking="1.0"
|
|
|
+ quality="7"
|
|
|
+ order="1"
|
|
|
+ phase="1"
|
|
|
+ />
|
|
|
+
|
|
|
+ <plugin name="pp_sharpen" keep="true"
|
|
|
+ url="https://dm.static.elab-plus.com/miniProgram/krpano/plugins/pp_sharpen.js"
|
|
|
+ enabled="true"
|
|
|
+ strength="5.0"
|
|
|
+ range="5"
|
|
|
+ quality="5"
|
|
|
+ luminanceonly="true"
|
|
|
+ order="2"
|
|
|
+ phase="1"
|
|
|
+ /> -->
|
|
|
<action name="mytest">
|
|
|
screentosphere(mouse.x, mouse.y, toh, tov);
|
|
|
jscall(calc('console.log("'+toh+'")'));
|
|
@@ -23,7 +45,7 @@
|
|
|
|
|
|
<control bouncinglimits="calc:image.cube ? true : false" />
|
|
|
|
|
|
- <view hlookat="50.082" vlookat="12.404" fovtype="MFOV" fov="90.000" maxpixelzoom="2.0" fovmin="70" fovmax="120"
|
|
|
+ <view hlookat="50.082" vlookat="12.404" fovtype="MFOV" fov="90.000" maxpixelzoom="4.0" fovmin="70" fovmax="120"
|
|
|
limitview="auto" />
|
|
|
|
|
|
<!-- <preview
|
|
@@ -38,11 +60,13 @@
|
|
|
</image>
|
|
|
<!-- <preview url="test3333.png"/> onloaded.addevent="sceneload();"-->
|
|
|
<hotspot name="video" ath="50.082" atv="14" url="https://dm.static.elab-plus.com/videoplayer.js" videourl=""
|
|
|
- width="90" height="160" chromakey="0x238E54|0.294|0.133" preload="true" pausedonstart="false" loop="true"
|
|
|
+ width="180" height="320" chromakey="0x238E54|0.294|0.133" preload="true" pausedonstart="false" loop="true"
|
|
|
distorted="true" muted="true" zoom="true" autopause="true" autoresume="true" scale="1"
|
|
|
onvideoready="videoreadyFunc" onvideoplay="videoplayHandle" cursor="grab"
|
|
|
onclick="togglepause();" enabled="false"
|
|
|
- ondown.addevent="set(cursor,grabbing);" onup.addevent="set(cursor,grab);" />
|
|
|
+ ondown.addevent="set(cursor,grabbing);" onup.addevent="set(cursor,grab);" >
|
|
|
+ </hotspot>
|
|
|
+
|
|
|
<action name="mobilescale" autorun="preinit" devices="mobile">
|
|
|
mul(stagescale,0.5);
|
|
|
</action>
|
|
@@ -79,54 +103,39 @@
|
|
|
</action>
|
|
|
<!-- 截图 -->
|
|
|
<action name="makescreenshot_init" type="Javascript" autorun="onstart"><![CDATA[
|
|
|
- // Load the FileSaver.js script for saving files locally cross browser.
|
|
|
- // Source: https://github.com/eligrey/FileSaver.js/
|
|
|
-
|
|
|
// count the screenshots (for the filenames)
|
|
|
krpano.makescreenshot_count = 1;
|
|
|
-
|
|
|
-
|
|
|
// create an empty Object as makeScreenshot cache
|
|
|
var makeScreenshotCache = {};
|
|
|
-
|
|
|
-
|
|
|
// add a 'makescreenshot' action to krpano
|
|
|
krpano.makescreenshot = function(leftX,leftY,screenshotwidth,screenshotheight)
|
|
|
{
|
|
|
// if there is already a screenshot layer, remove it now
|
|
|
- // krpano.call("removelayer(screenshot,true)");
|
|
|
- console.warn("***leftX***",leftX,leftY,screenshotwidth,screenshotheight)
|
|
|
+ console.warn("***makescreenshot***",krpano.webGL,leftX,leftY,screenshotwidth,screenshotheight)
|
|
|
+ var canvas = krpano.webGL.canvas;
|
|
|
+ var pix = window.devicePixelRatio;
|
|
|
// make a screenshot as canvas
|
|
|
- var sizeinfo = {w:screenshotwidth, h:screenshotheight};
|
|
|
+ var sizeinfo = {w:screenshotwidth*pix, h:screenshotheight*pix};
|
|
|
var crop = {
|
|
|
- x:leftX,
|
|
|
- y:leftY,
|
|
|
- w:screenshotwidth,
|
|
|
- h:screenshotheight
|
|
|
+ x:leftX*pix,
|
|
|
+ y:leftY*pix,
|
|
|
+ w:screenshotwidth*pix,
|
|
|
+ h:screenshotheight*pix
|
|
|
};
|
|
|
var screenshotcanvas = krpano.webGL.makeScreenshot(
|
|
|
- 0,
|
|
|
- 0,
|
|
|
+ canvas.width,
|
|
|
+ canvas.height,
|
|
|
true,
|
|
|
- "canvas",
|
|
|
- 0,
|
|
|
+ "png",
|
|
|
+ 1.0,
|
|
|
crop,
|
|
|
sizeinfo,
|
|
|
makeScreenshotCache);
|
|
|
|
|
|
if (screenshotcanvas)
|
|
|
{
|
|
|
- // example - draw something on the canvas, set to 1 to enable
|
|
|
- if (0)
|
|
|
- {
|
|
|
- var ctx = screenshotcanvas.getContext("2d");
|
|
|
- ctx.font = "25px Times";
|
|
|
- ctx.fillStyle = "#FFFFFF";
|
|
|
- ctx.fillText("krpano makeScreenshot() API Test", 50, screenshotcanvas.height-50);
|
|
|
- }
|
|
|
-
|
|
|
- // add some krpano layers that show the screenshot and allow saving it
|
|
|
- var imgBase64 = screenshotcanvas.toDataURL();
|
|
|
+ // var imgBase64 = screenshotcanvas.toDataURL();
|
|
|
+ var imgBase64 = screenshotcanvas;
|
|
|
|
|
|
screenshot(imgBase64);
|
|
|
|
|
@@ -155,199 +164,9 @@
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
]]>
|
|
|
</action>
|
|
|
|
|
|
- <action name="makescreenshot" type="Javascript">
|
|
|
- <![CDATA[
|
|
|
- if (krpano.webGL && krpano.webGL.context.getContextAttributes().preserveDrawingBuffer)
|
|
|
- {
|
|
|
- try{
|
|
|
- var canvas = krpano.webGL.canvas,
|
|
|
- screenx = Number(args[1]),
|
|
|
- screeny = Number(args[2]),
|
|
|
- vfw = Number(args[3]),
|
|
|
- vfh = Number(args[4]),
|
|
|
- maxsize = Number(args[5]),
|
|
|
- jpeg_quality = krpano.get('panoshot.jpeg_quality'),
|
|
|
- watermark = krpano.get('panoshot.watermark'),
|
|
|
- scaledCanvas=document.createElement("canvas"),
|
|
|
- scaledContext=scaledCanvas.getContext('2d');
|
|
|
-
|
|
|
- if(vfw > vfh){
|
|
|
- if(vfw > maxsize){
|
|
|
- scaledCanvas.width=maxsize;
|
|
|
- scaledCanvas.height=maxsize*vfh/vfw;
|
|
|
- }else{
|
|
|
- scaledCanvas.width=vfw;
|
|
|
- scaledCanvas.height=vfh;
|
|
|
- }
|
|
|
- }else {
|
|
|
- if(vfh > maxsize){
|
|
|
- scaledCanvas.height=maxsize;
|
|
|
- scaledCanvas.width=maxsize*vfw/vfh;
|
|
|
- }
|
|
|
- else{
|
|
|
- scaledCanvas.width=vfw;
|
|
|
- scaledCanvas.height=vfh;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- scaledContext.drawImage(canvas,screenx,screeny,vfw,vfh,0,0,scaledCanvas.width,scaledCanvas.height);
|
|
|
- var img_src = scaledCanvas.toDataURL("image/jpeg",+jpeg_quality);
|
|
|
- screenshot(img_src,watermark);
|
|
|
- }catch(err){
|
|
|
- krpano.trace(3,err);
|
|
|
- }
|
|
|
- }else{
|
|
|
- krpano.trace(3,"no webgl or no preserveDrawingBuffer");
|
|
|
- }
|
|
|
-
|
|
|
- function screenshot(dataURL,watermark){
|
|
|
- var pluginpath = krpano.get('panoshot.snapshot_path'),
|
|
|
- savecreenshot = pluginpath + 'savescreenshot.php';
|
|
|
- var request = $.ajax({
|
|
|
- type: "POST",
|
|
|
- url: savecreenshot,
|
|
|
- data: {
|
|
|
- imgBase64: dataURL,
|
|
|
- watermark: watermark
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- request.done(function(file) {
|
|
|
- var url = document.URL,
|
|
|
- new_url = url.split("?")[0],
|
|
|
- almostpath = url.substring(0,url.lastIndexOf("/")),
|
|
|
- path = almostpath + '/',
|
|
|
- imgurl = pluginpath +file,
|
|
|
- vtb_url = krpano.get('vtbuilder_snapshotlink'),
|
|
|
- scene = krpano.get('scene[get(xml.scene)].name');
|
|
|
- vh = krpano.get('vh'),
|
|
|
- vv = krpano.get('vv'),
|
|
|
- vf = krpano.get('vf');
|
|
|
- if(vtb_url !== null){new_url = vtb_url}
|
|
|
- else
|
|
|
- if(scene !== null){new_url = new_url + '?sceneview=' + scene + ',' + vh + ',' + vv + ',' + vf};
|
|
|
- var viewurl_encode = encodeURIComponent(new_url);
|
|
|
- krpano.set("viewurl", viewurl_encode);
|
|
|
- krpano.set("panourl", url);
|
|
|
- krpano.set("fullpath", path);
|
|
|
- krpano.set("imgurl", imgurl);
|
|
|
- krpano.call("show_img()");
|
|
|
- });
|
|
|
-
|
|
|
- request.fail(function(jqXHR, textStatus) {
|
|
|
- alert("Request failed: " + textStatus);
|
|
|
- });
|
|
|
- }
|
|
|
- ]]>
|
|
|
- </action>
|
|
|
- <action name="makescreenshot_mobile" type="Javascript">
|
|
|
- <![CDATA[
|
|
|
- if (krpano.webGL && krpano.webGL.context.getContextAttributes().preserveDrawingBuffer)
|
|
|
- {
|
|
|
- try{
|
|
|
- var canvas = krpano.webGL.canvas,
|
|
|
- vfw = Number(args[1]),
|
|
|
- vfh = Number(args[2]),
|
|
|
- maxsize = Number(args[3]),
|
|
|
- jpeg_quality = krpano.get('panoshot.jpeg_quality'),
|
|
|
- watermark = krpano.get('panoshot.watermark'),
|
|
|
- scaledCanvas = document.createElement("canvas"),
|
|
|
- scaledContext = scaledCanvas.getContext('2d');
|
|
|
-
|
|
|
- scaledCanvas.style.visibility = 'hidden';
|
|
|
-
|
|
|
- if(vfw > vfh){
|
|
|
- if( vfw > maxsize ){
|
|
|
- scaledCanvas.width=maxsize;
|
|
|
- scaledCanvas.height=maxsize*vfh/vfw;
|
|
|
- } else {
|
|
|
- scaledCanvas.width=vfw;
|
|
|
- scaledCanvas.height=vfh;
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- if( vfh > maxsize ){
|
|
|
- scaledCanvas.height=maxsize;
|
|
|
- scaledCanvas.width=maxsize*vfw/vfh;
|
|
|
- }else{
|
|
|
- scaledCanvas.width=vfw;
|
|
|
- scaledCanvas.height=vfh;
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- var img = new Image();
|
|
|
- img.src = krpano.webGL.canvas.toDataURL();
|
|
|
- img.onload = function(){
|
|
|
- scaledContext.drawImage(canvas,0,0,scaledCanvas.width,scaledCanvas.height);
|
|
|
- var img_src = scaledCanvas.toDataURL("image/jpeg",+jpeg_quality);
|
|
|
-
|
|
|
- var blank = isCanvasBlank(document.getElementById('canvas'));
|
|
|
-
|
|
|
- function isCanvasBlank(scaledCanvas) {
|
|
|
- var blank = document.createElement('canvas');
|
|
|
- blank.width = canvas.width;
|
|
|
- blank.height = canvas.height;
|
|
|
-
|
|
|
- return canvas.toDataURL() == blank.toDataURL();
|
|
|
- }
|
|
|
- if (blank) {
|
|
|
- krpano.call("try_again()");
|
|
|
- }
|
|
|
- else {
|
|
|
- screenshot(img_src,watermark)
|
|
|
- }
|
|
|
- }
|
|
|
- }catch(err){
|
|
|
- krpano.trace(3,err);
|
|
|
- }
|
|
|
- }else{
|
|
|
- krpano.trace(3,"no webgl or no preserveDrawingBuffer");
|
|
|
- }
|
|
|
-
|
|
|
- function screenshot(dataURL,watermark){
|
|
|
- var pluginpath = krpano.get('panoshot.snapshot_path'),
|
|
|
- savecreenshot = pluginpath + 'savescreenshot.php';
|
|
|
- var request = $.ajax({
|
|
|
- type: "POST",
|
|
|
- url: savecreenshot,
|
|
|
- data: {
|
|
|
- imgBase64: dataURL,
|
|
|
- watermark: watermark
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- request.done(function(file) {
|
|
|
- var url = document.URL,
|
|
|
- new_url = url.split("?")[0],
|
|
|
- almostpath = url.substring(0,url.lastIndexOf("/")),
|
|
|
- path = almostpath + '/',
|
|
|
- imgurl = pluginpath +file,
|
|
|
- vtb_url = krpano.get('vtbuilder_snapshotlink'),
|
|
|
- scene = krpano.get('scene[get(xml.scene)].name');
|
|
|
- vh = krpano.get('vh'),
|
|
|
- vv = krpano.get('vv'),
|
|
|
- vf = krpano.get('vf');
|
|
|
- if(vtb_url !== null){new_url = vtb_url}
|
|
|
- else
|
|
|
- if(scene !== null){new_url = new_url + '?sceneview=' + scene + ',' + vh + ',' + vv + ',' + vf};
|
|
|
- var viewurl_encode = encodeURIComponent(new_url);
|
|
|
- krpano.set("viewurl", viewurl_encode);
|
|
|
- krpano.set("panourl", url);
|
|
|
- krpano.set("fullpath", path);
|
|
|
- krpano.set("imgurl", imgurl);
|
|
|
- krpano.call("show_img()");
|
|
|
- });
|
|
|
-
|
|
|
- request.fail(function(jqXHR, textStatus) {
|
|
|
- alert("Request failed: " + textStatus);
|
|
|
- });
|
|
|
- }
|
|
|
- ]]>
|
|
|
- </action>
|
|
|
</scene>
|
|
|
</krpano>
|