Hi all,
after a very long development time here finally the next release: krpano 1.20
It is technically one of the biggest releases so far. Internally the whole rendering-engine has been updated, refactored, advanced and improved in many ways and made ready for the future. krpano can now use 3D-depth-graphics (by depthmaps or 3D-geometry) as 3D-model for pano images, use multi-resolution also with spherical and cylindrical images (e.g. for large partial-panos), render polygonal hotspots by WebGL, do more advanced image-post-processing, and has a better VR-integration with positional-tracking and VR-controller support.
Beside of the technical rendering-engine updates also almost every other part of krpano has been updated and improved - the xml/actions systems, the layout/hotspot system, the JS-API, the plugins, the tools and also the documentation and the included examples.
For all news and details please see below.
Thanks and best regards,
Klaus
First here a short video-playlist as introduction of some of the new krpano features:
News in krpano 1.20:
Depthmap Support / 3D Tours
- The depthmap support makes it possible to add 3D on your panoramic images.
- Either just for stereo-viewing (in VR or using Anaglyph glasses) or for nice 3D-transitions between panos or even for exploring panos in a new way with new interesting perspectives.
- 3D on panos works especially nice with VR systems with Positional-Tracking support (e.g. using an Oculus Quest or similar VR headsets). With them you can walk around in your panos.
- With 3D-modelling software it's possible to build depthmaps for any existing pano image, no need for special cameras, stereo-shooting or laser-scanning.
- To be able to build depthmaps / 3D-models as easy as possible there is also a new krpano-based external software available: everpano 3D. It can be used to build depthmaps and very easily also whole 3D-krpano-tours.
- As the depthmap support is a bigger topic, more information and all about it here in this extra forum thread:
- More information:
- Examples:
Multi-Resolution Support for Spherical and Cylindrical Panoramic Images
- With krpano 1.20 it's now finally possible to use multi-resolution with spherical and cylindrical images also in HTML5 (previously this was only supported in Flash, HTML5 was supporting multires only with cubical- and flat-panos).
- That's ideal for partial-panos and also for very large full-spherical panos because it avoids the need to convert to cubical images (which means faster pano building).
- The image field-of-view is fully dynamic and can be changed anytime, this for example allows an animated transition from a spherical-projection to a flat-projection and inverse.
- It's optimized for high-performance and very-high-image-quality rendering (and will get even faster and smoother with the following releases).
- With some special tricks krpano also avoids that the nadir and zenith areas are getting blurred due mipmapping (a typical behavoir when using spherical panos and mipmapping).
- Here a comparison image:
- To make building partial-panos more easily, the krpano tools are supporting XMP metadata for automatically detecting the pano type and the correct field-of-view ranges. PTGUI will write that information automatically when using spherical projection and generating partial-pano images.
- More information:
- Examples:
WebVR Support
- Positional-Tracking Support:
- Additionally to looking around it's now also possible to track the 3D position of the VR-Headset and the VR-Controllers (when supported by the VR-Headset) and move/walk around.
- Ideal for depthmap- / 3D-model-panos, makes them much more realistic.
- VR-Controller Support
- Use one or two VR-controllers as input device.
- Interact with hotspots, check where a hotspot got hit or where the controller is pointing, trigger events by the controller buttons.
- Optimized and tested for several VR systems (Oculus Quest, Oculus Go, Oculus Rift, HTC Vive, Windows MR, Google Daydream).
- Fully customizable.
- Special support for Oculus Go and Oculus Quest by automatically using an increased rendering resolution on these devices.
- For using mobile-devices with Cardboard-like VR-Headsets a completely new lens-distortion-model and rendering-method is used now. It's more simple (no CA-correction) but therefore faster and better compatible with various rendering settings.
- That new lens-distortion-model uses now the same headset-parameters as Google Cardboard.
- The WebVR plugin includes an updated and much larger internal mobile-device database for Cardboard-usage.
- THere is a new and interactive VR Setup dialog to change settings directly in VR.
- More information:
- Examples:
Post-Processing Plugins
- krpano offers now several included image-post-processing plugins:
- Light - A high-quality exposure and light/shadow control.
- Can be used for correcting wrongly exposed images,
- for creating a HDR-look,
- various light effects,
- or just playing around with the image.
- Blur - High-performance image blurring.
- Sharpen - An Unsharp-Mask filter for sharpening or local contrast enhancement.
- Light - A high-quality exposure and light/shadow control.
- The post-processing can now be applied before or after the hotspot rendering, e.g. to blur only the pano-image behind an information hotspot.
- More information:
- Examples:
New Soundinterface Plugin
- A completely new Soundinterface plugin.
- Based on howler.js to manage the core browser APIs.
- Handles the sound playback unlocking automatically. That means when an user-gesture like a click or a touch will be necessary to play a sound, this will be done internally and automatically.
- The plugin internally uses the WebAudio API instead of HTML5-Audio by default (when available). This provides more control and more possibilities. But it has one disadvantage: the sound files need to be fully downloaded before they can be played. To overcome that disadvantage it's possible to preload sounds or to explicitly call streamsound() to play during loading by always using the HTML5 Audio API.
- Backward compatible to older Soundinterface plugin versions.
- Support for 3D Positional Audio.
- Support for Sound Sprites - one file for multiple sounds.
- Support for Sound Objects - control a sound during playing.
- The volume, speed/playbackrate, playback-position or even 3D-position of the sounds can now by changed anytime.
- More information:
- Examples:
- Example: Drone Attack Game (uses several of the new sound features)
- Video: Drone Attack - A small WebVR game as Tech-Demo
Improved Actions / XML / Javascript API
-
Inside Expressions it's now possible to use Inline Functions.
- This are small functions for mathematical calculations, string-operations, conversions, number/text-formatting and more to help coding. So fewer code will be necessary.
- Here an example - for rounding a value previously the result needed to be stored in a temporary variable:
roundval(tmp, view.fov, 2);
calc(text, 'fov=' + tmp);
calc(text, 'fov=' + roundval(view.fov,2));
- For even more advanced usage it is also possible to add own Javascript functions.
-
There is a new and shorter syntax for declaring multi-resolution images in the xml. Optional, but enabled by default in the tools.
The old and longer syntax will be kept also supported of course.
- Just one multires attribute with all size information instead of several <level> elements now.
- Old syntax:
<image type="CUBE" multires="true" tilesize="512">
<level tiledimagewidth="1024" tiledimageheight="1024">
<cube url="l1_%v_%h.jpg" />
<level>
<level tiledimagewidth="2048" tiledimageheight="2048">
<cube url="l2_%v_%h.jpg" />
<level>
<level tiledimagewidth="4096" tiledimageheight="4096">
<cube url="l3_%v_%h.jpg" />
<level>
</image>
- New syntax:
<image>
<cube url="l%l_%v_%h.jpg" multires="512,1024,2048,4096" />
</image>
%l
placeholder will address the level.
- It's now possible to add multiple events for layer and hotspots elements, e.g. define events inside styles and also at the element itself. This can be done by the new .addevent attribute postfix and by the addevent() function.
-
One style element can be merged with other ones:
<style name="style2" style="style1" newattr="123" />
-
Instead of using
%SWFPATH%
in urls to refer to the viewer folder path, it's now also possible to use%VIEWER%
or%ROOT%
instead. The term 'swfpath' is from the Flashplayer-times and doesn't make sense anymore today. - There is a new PRELOAD flag for loadpano/loadscene/loadxml calls. When this flag will be used then the blending to the next pano will not start until enough tiles are loaded to show the current view in the highest suitable resolution. Otherwise blending will start as soon the screen is filled with any kind of pano image content (e.g. the just the preview pano or any lower-resolution tiles). This can be very helpful when blending between high-resolution panos for comparison reasons.
-
Data-URLs to inline/embed files into xml or js files are supported now everywhere - with base64- and plain-text encoding.
For example:
url="data:image/jpeg;base64,...here a base64-encoded image..."
- When using Data-URLs and inlining the js and xml files also into the html file, it is possible to build all-contained html files. That means just one single html file and no other external files. They are only suitable for simple and small panos but therefore easy for shipping around. They will run offline/locally also without localhost server or adjusted browser security settings. Here a tutorial: Embedding all files into the html file
- The addlayer / addhotspot actions can now use 'auto' for an automatic-generated name. Additionally its possible to automatically create a variable pointing to the new created element.
-
Improved Javascript support:
- Many krpano actions can now be called also directly from Javascript and use Javascript functions as callbacks.
- The 'krpano' object inside the jsget() and jscall() Javascript code provides now the full-access 'krpano interface' object instead of the limited 'js interface 'object. That means direct access by Javascript to all krpano objects and functions.
- The addlayer / addhotspot actions are directly returning the new created element when getting called from Javascript.
- New debugjsactions a and debugjsplugins settings to allow debugging Javascript actions and Javascript plugins in the browser. When enabled any Javascript errors will be no longer captured by krpano and so finding an error location will be much easier.
-
Improved logging:
- The log console is faster now, has html-support, is clearable, merges duplicated lines and optionally also allows entering commands for debug or testing.
- The tilde-key will be used instead of the 'O' key as the log open/close key now.
- When the debugmode is enabled and the log is opened, then pressing SHIFT+tilde-key will open an input-field for entering actions. Can be used to show variables (by calling trace or debugvar), to set or change variable or to call any kind of actions.
Updated Browser and Devices Support
- This version includes many updates and workarounds for recent browser- and device-changes.
- iOS 13 support with Gyroscope-permissions, iPad-OS support and the Safari Desktop-mode support.
- For iPhone devices there is an improved semi-automatic solution for getting into the landscape fullscreen mode: Video: iPhone Fullscreen Mode
- Improved Android Chrome fullscreen mode support. Depending on the actual Chrome version different methods are used for getting into a real fullscreen view again.
- Updated touch-support on desktop-devices with the latest Chrome, Edge and Firefox versions.
- Improved cross-browser / cross-device mouse-wheel and touch-pad support - get the same zoom-amount and zoom-speed on all systems.
- Support zooming-gestures on touchpads (but only when the browser itself supports that, currently only available in Safari and Edge).
- Support the inverted/natural mouse-wheel scrolling on Mac OSX.
- Special support for VR-Browsers like the Oculus Browser and Firefox Reality.
krpano Tools
- The 'krpano Tools' application is using a newer NWJS framework (based on Chrome 65). That should fix several system and WebGL compatibility problems.
- All tools are 64-bit applications now.
- On OSX the 'krpano Tools' application is checking for 'app translocation' problems and is offer to fix them by using the included 'FIX INSTALL OSX.command' script.
- On Window the filename of the core krpano tools is now just 'krpanotools.exe' instead of 'krpanotools64.exe' and 'krpanotools32.exe'. So now the same filename is used on all systems.
- The tools will now always embed a color-profile into the generated images/tiles to enforce the same colors in as many browsers and screens as possible.
- The Convert SPHERE CUBE Droplet offers now settings for size and file-formats directly inside the droplet:
krpano Testing Server
- HTTPS support.
- Minor redesign with better system support.
- The GUI version and the Command-Line versions of the testing-servers are sharing now the same codebase. Same styled directory listing. All features are available now the same in both applications.
- The Command-Line version has got several new parameters for customizing the usage (which folder to use, which port, ...).
More News
-
The Polygonal Hotspots are rendered by WebGL now.
- That means faster rendering performance and an always synchronized rendering (on older or slower iOS devices the SVG rendering of the polygonal hotspots was sometimes asynchronous and delayed compared to the WebGL-rendered pano-image).
- Due WebGL now also Stereo- and VR-rendering is possible.
- Ordering/mixing polygonal hotspots by zorder or depth-settings together with image hotspots is possible now.
- Polygonal hotspots can be also distorted by viewing projections now.
- But there are also some small limitations: the hotspot coverage is limited to 180 degree and self-intersecting polygon-shapes are not possible. When hitting these limitation it would be possible to split the hotspots into several smaller hotspots or keep using the old SVG rendering by using renderer="css3d".
- Dedicated flat-pano support (flat = rectilinear-projection pano-images). By using the new <flat> image declaration element. Supports any field-of-view coverage, also larger than 1.0. For single- and multi-resolution.
- The krpano viewer has got several rendering performance improvements and a faster startup. Internally it is compiling WebGL shaders only on their first usage and also caching already compiled shaders.
- For indicating that the pano is an interactive image, there is a new 'Follow-Mouse' control (Example). It works independent of the normal viewing direction control and the same in all directions.
- With the new customParseTilePath() API it is possible to load tiles with a custom tile-formating-syntax (Example).
- The documentation design and structure was slightly updated and the documentation is now also fully included in the download package.
- The webdesign for the website and the forum was slightly updated.
License Changes
- With version 1.20 the previously separated krpano and maps-plugin licenses were merged into one new license.
- Additionally that new license is necessary for these new features:
- Depthmap Support
- Spherical / Cylindrical / Partial-Pano Multi-Resolution Support
- Postprocessing Plugins
- Older licenses are still fully working with newer krpano versions, only the new features from above will be not available. When using them anyway an information about a required license upgrade will be shown.
- For more information about the new license please see here:
Release Notes
- The release notes are now a part of the documentation.
- Please see here for the full list of News, Changes and Fixes:
Examples
- There are many new examples included in the download package.
- See them all online here:
Future versions / What's next
- Much faster krpano tools - faster loading, faster cube-conversion, faster tiling.
- An UI for pano building and pano / tour editing.
- Faster multi-resolution loading by better utilizing parallel downloads when possible.
- Better multi-resolution for depthmap-panos / 3D-models.
- Depthmap improvements.
- Build-in 3D-object support.
- Improved video support.
- Better Javascript-usage documentation and more examples.
- A new maps plugin.
- This will be the last bigger release with Flash-support, next versions will be HTML5-only.
- Faster release-intervals.