krpano 1.19 - Pre Release 3

  • Hi,

    here the next snapshot of the development state of the next 1.19 version. Even though it's not finished and feature complete yet, there are some new features and fixes and it's ready to use.

    News and changes in krpano 1.19 Pre-Release 3

    For information about the previous pre-releases, please see here:

    WebVR / MobileVR Support

    • Wakelock support - avoid that the mobile device turns itself off while being in VR mode.
    • Chromatic aberration correction support for Mobile VR (=better visual quality).
    • Additional post-processing Lens distortion for Mobile VR.
    • New multiresolution locking - when enabled all tiles from a certain multiresolution level will be preloaded when being in VR mode. This avoids loading interrupts during the viewing.
    • Improved Fake Mode - direct mouse control (when pointerlock is supported by the browser), resetsensor() emulation. The fake mode is now enabled by default in the vtourskin.xml.
    • Improved headset tracking stability for mobile devices (skip invalid browser events and invalid gyro data, limit the extrapolation time to avoid bad tracking on low framerates or short pauses).
    • Other news, changes and fixes:
      • Optional, additional touch control.
      • Optional automatic gyroscope calibration.
      • Support more Android devices for automatic screen-size detection.
      • New havesettings to allow checking if user settings were loaded (could be used to show a first time setup screen).
      • The load/savesettings(storage) action support an additional parameter to optionally load and store the vr settings also only locally (to avoid a cross-domain web access).
      • The cross-domain settings storage iframe will be loaded into the into the viewer DOM to avoid problems with dynamically removing the viewer from the webpage.
      • The webvr.xml was updated and has got some smaller fixes.

    krpano 1.19 Pre-Release VR Demonstration:

    krpano HTML5 Viewer

    • Microsoft Edge (Windows 10) browser support.
    • Improved pano blending (when WebGL is availabe) - support seamless blending across an infinite number of panos, new nice blending modes/effects - Demo: Pano Blending
    • Improved pixelgrid-fitting when using a fractional page-scaling / page-zoom (some Android and Windows Phone devices are doing that by default).
    • New display.framebufferscale setting for custom adjusting of the internal WebGL buffer size. Use lower values to improve the rendering performance on slower devices (e.g. in VR mode on Android devices) and higher values to do oversampling for better image quality.
    • New webglsettings settings (via embedding script) for customizing the WebGL usage.
    • Colored krpano log and colored browser console log.
    • Improved backward compatibility for the new action parser (especially for empty string parameter checks).
    • Fixes:
      • The loading of multiresolution stereoscopic images wasn't fully working.
      • A wrong (too low) WebVR rendering target resolution was used in the native WebVR mode.
      • Respect the stereooverlap setting when hit-testing in stereo rendering mode.
      • Wrong mouse cursor in some cases when using WebGL hotspot rendering.
      • Filter invalid 0-bytes from decrpyted encrypted xml files.
      • Inaccurate CSS3D transforms number rounding in some cases.
      • Polygon hotspots were kept visible when switching to stereo mode.
      • Flat pano-videos weren't working when they were defined as flat already on startup.
      • The progress.progress values tracks now the loading of the locked level.
      • The device.pixelratio will be updated on resizes - the user might have changed the page zoom.
      • Use the correct pixelratio for the mulitres level selection on desktop.
      • Partial wmode=transparent support in WebGL.
      • Workaround for the iOS9 turn-off/turn-on WebGL canvas size bug.
      • Bypass control keyboard keys (like TAB) for browser-side handling.

    VTour Skin

    • The new Flat skin will be used by default now.
    • Little planet intro - the vtourskin.xml has now a build-in little planet intro support, just set the 'littleplanetintro' setting in the tour.xml to 'true'.
    • Deep linking - the vtourskin.xml has now a build-in deep-linking support. That means the browser url will get automatically updated to link to the current scene and viewing point. To enable it, just set the 'deeplinking' setting in the tour.xml to 'true'.
    • The VR fake mode will be enabled by default - to give the desktop user an idea of the possibilities when watching the tour with a VR headsets.
    • Use different pano-blending modes when switching to the previous-pano (slide-left-effect), or to the next pano (slide-right-effect) or when opening a pano via thumbnails or hotspots (open-zoom-effect).
    • New 'startactions' startup setting - passes custom startup actions via the tour url.
    • Support additionally to PAGEUP, PAGEDOWN also the HOME, END keys for the tour keyboard navigation.
    • Flat skins - calculate the contextmenu background color for touch devices automatically from the base skin color. That means only one color would need to be changed to change all skin colors.
    • New skin_hideskin('instant') action for instantly hiding the vtour skin (e.g. on startup).
    • Changes / Fixes:
      • The circles around the zoom button icons in the vtourskin_light.png were removed.
      • The vtourskin.xml uses now a relative url for skin style image.
      • Correct non-stereo portrait mode when switching the VR mode without resizing.
      • Missing 'var' definition for the 'dh' variable in 'webvr_menu_following' action.
      • Hide the VR navigation hotspots when there is only one pano in the tour.
      • Flat skins - no controlbar overlap devices with a fractional scaling (to avoid visual problems due browser-side scaling and rounding).

    XML / Actions

    • New <style> and style="..." behavior of the krpano xml parser:
      • When a xml element will be parsed into objects and values, then first the values from the assigned <style> will be loaded and then as second step the values that were defined at the xml element itself.
      • That means values from a <style> can be overwritten at the xml element definition now.
      • style="..." can be used now on all xml elements (not just plugin, layer and hotspot).
    • Additionally Javascript actions:
    • Support the bitwise operators <<, LSHT (left bitshift), >>, RSHT (right bitshift), BAND (bitwise-AND), BOR (bitwise-OR) in expressions.
    • New Array sorting via arrayname.sortby(attr).
    • Support using get:var and calc:expr inside <include> url values.
    • Support using calc(...) inside array[] indices.
    • New txtsplit() action for splitting texts into arrays.
    • New parameter for the error(msg, fatal=true) action for tracing non-fatal error messages.
    • New parameters for the lookat(h,v,fov, distortion, archi, pannini) action.
    • New xml.view object - it will store the initial <view> element from the xml. Could be used to get the startup view settings of the current pano.
    • New image.cubelabels setting for defining custom lables for %s cube side placeholder.
    • The view.fisheye setting has been renamed to view.distortion, but the old name is still supported and working.
    • New device.fractionalscaling device check for detecting devices or browsers with a fractional page scaling.
    • The addplugin/addlayer/addhotspot actions are now returning the new created element (when called from Javascript or AS3).
    • New hotspot.polyline setting to draw line-polygons instead of filled-polygons.
    • Fixes:
      • The screentosphere() action supports stereo rendering.
      • Changing the autorotate waittime during autorotating.
      • Action parser error when using '|' in a string.
      • Dispatching events - check if the event has got removed during dispatching.
      • Check multi-variable tweens for valid values to avoid a script crash.

    Gyro2 Plugin

    • Touch support (several modes).
    • Automatic gyroscope calibration.
    • New friction setting for dampening the vibration of the gyro movement. When using friction=auto the dampening will automatically depend on the zoom level (helpful on large gigapixel panos when zooming in, works like an lens image stabilizer).
    • support for flat panos - pan relatively to device motion
    • Improved tracking stability - skip invalid browser events and invalid startup gyro data, limit the extrapolation time to avoid bad tracking on low framerates or short pauses.


    • Textfield Plugin - automatically convert any occurrence of '0x' to '#' in the css setting to allow using the same color value syntax as in the krpano xml.
    • Soundinterface Plugin - don't re-resume paused sounds on window restore, avoid script crashes when passing invalid values.
    • Videoplayer Plugin - avoid script errors when the posterimage finished loading after removing the videoplayer plugin, the use_as_videopano settings returned null instead of false.
    • Maps Plugins - automatically use the HTTPS mapsapi for HTTPs pages.
    • Update Tool - support updating xml plugins.

    Why still a Pre-Release?

    • The WebGL hotspot rendering is still not finished yet.
    • The krpano tools are not finished yet.
    • Several features and some known bugs (e.g. videopano autorotate, video pano/layer switching) are not finished/fixed yet.
    • The krpano webpage, the documentation and the examples are not fully updated yet.
    • But beside of this, the pre-release version itself should be stable and ready to use.


    Best regards,

  • Thank for this new update *thumbsup*
    when I try extract files in windows 10 ! a screen appears with the following : C:\Users\Ramiro\Downloads\krpano-1.19-pr3-win.exe: Cannot open C:\Users\Ramiro\Downloads\krpano-1.19-pr3-win.exe.

    When I try execute krpano-1.19-pr3-win.exe a screen appears with the following : Can no open file "C:\Users\Ramiro\Downloads\krpano-1.19-pr3-win.exe" as archive

    When I try extract with winrar : ! C:\Users\Ramiro\Downloads\krpano-1.19-pr3-win.exe: The archive is corrupt


  • Hi,

    that means the file was downloaded only partially and therefore is corrupt now.
    Clear the browser cache and try downloading again.

    Try also switching the download server ( or Amazon CloudFront). Depending on your location the one or the other should work better.

    Best regards,

  • Great !

    I don't know if it's documented (as i didn't found mention of it) but with the new Style,
    You have to set your maps spot style outside of the maps <> otherwise <spotstyle> create errors...not finding style
    ( i got errors when having several <spotstyle> inside the <maps plugin> and with spots having a style="" attribute )

    All is fine,
    Great job Klaus *thumbsup*

  • Many thanks for the update.

    I'm working on an tour app and used the Update tool to get the new prerelease .js & .swf files plus added added the newer plugins. All seems to work fine except the audio plugin that I use is a now a no show.

    <style name="audio" url="%HTMLPATH%/skin/speaker.png" scale="0.5" />

    This is the plugin that's added to the scene

    <plugin name="audio" style="audio" align="topleft" keep="false" zorder="8" alpha="1.0" scale="" enabled="true" x="0" y="0" onhover="showtext(Audio, buttons)" onclick="onclickA();"				
    onclickA="if( activesound !== name,set(plugin[get(activesound)].onclick,onclickA()););	play_sound_1(sound1, sounds/dakota.mp3,get(name)); 		set(plugin[get(name)].onclick,onclickB());"				

    and here's part of my actions page

    Do you know offhand what would cause the no show issue when using the newer Pre release 3? Seems a shame for me not to be able to use it especially when all the rest is good *sad*

    Many thanks,



    Thanks for noticing that Red. It still worked with the code as is so I must have missed it. I completed the code but no change. What's odd is that the plugin 'audio' doesn't actually display with Pre release 3 so thought I'd ask here. Perhaps it's something to do with style?


  • Hi,

    don't know if it's documented (as i didn't found mention of it) but with the new Style,
    You have to set your maps spot style outside of the maps <> otherwise create errors...not finding style

    Right, the new style xml behavior unfortunately conflicts with the maps plugin where 'style' was also used as attribute. I will think about compatibility solutions, but it might be necessary to rename the 'style' attribute in the maps plugins spots to 'spotstyle'...

    All seems to work fine except the audio plugin that I use is a now a no show.

    The reason should be the new style behavior here too, but the problem happens only because an invalid value for 'scale' will be used.

    Look at the 'scale' values:
    <style name="audio" ... scale="0.5" />
    <plugin name="audio" style="audio" ... scale="" ... />

    In the older versions the scale value from the style was used (0.5), but now the scale value from the plugin itself will be used and this value is "" - and that's an invalid value and causes that the element has a no scale/size and will be invisible due this.

    Remove either the invalid scale="" or use a valid value for it and it should work.

    Best regards,

  • Many thanks o Wise One

    I didn't notice the additional scale="" on the plugin. I just did a search and replace in Dreamweaver and got rid of them all so it works now.

    Apologies for hijacking the thread to get it fixed. Strange it worked on the older krpano version though.

    Cheers *thumbsup*

  • Hi

    I notice a problem when i watch Pano offline
    (iPhone 5s - software Goodreader - whits this software i storage Pano on iPhone)

    with Version PR 2 - in VR mode Pano after few minuts lock-up.

    now with Version PR 3 its not lock up - but after a while change view from VR to normal view

    1. i opened Tour on phone
    2. i change the view to vr mode
    3. after few minuts its change from Vr to normal view

    i made video with this issue:

    Edited once, last by torentvr (August 5, 2015 at 12:13 PM).

  • After a reset of the webvr settings I can have the new ca and dist2 with ca value empty and dist2 (first part to 1.000 and other parts empty).
    Also the textfields can have a bad alignement.

    Seems tlinked to the receive of null rather than a 0.00 value on get(i_dist) into the setup for instance.
    Is it linked to the online storage of the data which is pre2 and not pre3 compatible ?

    Edited 2 times, last by benji33 (August 5, 2015 at 4:08 PM).

  • Hi,


    i made video with this issue:

    Thanks for the video - that seems to be an incompatibility between the Goodreader and the wakelock hack.

    The 'wakelock' should avoid that the device turns itself off when there are no touches on the screen for a while (like when using the VR mode).

    As there is no browser API for avoiding the device turn-off, it's necessary to use 'browser hacks' - and the hack for the iOS Safari browser is to request a page-reload (every 15 seconds) and then directly stopping that reloading request. By doing that the Safari browser internally resets it's turn-off timeout and the device keeps on.

    The hack itself works for Safari, but maybe Goodreader works internally different and than causes the page reload there...

    You can disable the wakelock hack by setting the 'mobilevr_wakelock' setting in the webvr.xml to 'false':


    After a reset of the webvr settings I can have the new ca and dist2 with ca value empty and dist2 (first part to 1.000 and other parts empty).

    What do you mean with 'after a reset'?
    The default value for mobilevr_lens_dist2 is "1|0|0|0" and for mobilevr_lens_ca 0.0.


    Also the textfields can have a bad alignement.

    Which textfields in which case?
    What do you mean? *confused*

    Best regards,

  • Hi Klaus in fact it's seems that it's linked to an issue.

    Try this with vr_setup action called on entervr with a saved distortion equal to '0.00' (VR One headset for instance).

    Work only if the condition is if ('%1' == '', ... );

    EDIT : after a good night I thing that the === should be the solution ! As js the 0 == '' is working.

    Edited once, last by benji33 (August 6, 2015 at 7:51 AM).

  • Awesome Klaus!

    That calc is so powerfull! No more txtadd to get the correct var or doing a onloaded for setting dynamic vars. Also the jsget and jscall saves a lot of boilerplate. And that <style improvement was something I waited for a long time. All in all alot of great features for us coders :D

    Could the calc also be used for more complex calculations? Like xoffset + Math.sin(angle * Math.PI / 180) * radius

  • Thank you, Klaus for this great release!

    Just one question. In 1.18 tours I used the following js function to select html5 usage:

    and it was returning "prefer" for Chrome and Firefox and "auto" for all other cases.

    With 1.19.pr3, however, it uses Flashplayer in Chrome despite the html5:"prefer". Maybe I'm missing something...



  • Hi,

    Could the calc also be used for more complex calculations? Like xoffset + Math.sin(angle * Math.PI / 180) * radius

    Calling functions like Math.sin() in an expressions is not possible yet.

    See here the updated documentation about the current possibilities of expressions:

    With 1.19.pr3, however, it uses Flashplayer in Chrome despite the html5:"prefer". Maybe I'm missing something...

    That means you using local 'file://' urls - and Chrome doesn't allow loading local xml files in HTML5 by default. There would be always an xml network loading error in this case. Therefore the embedding script falls back to Flash when using html5=prefer and Chrome with local file:// urls (btw - this is not new to 1.19).

    For local testing I would always recommend using a localhost server, e.g. like the krpano Testing Server.

    Best regards,

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!