Hi,
here the news and release notes about krpano 1.19-pr14:
Best regards,
Klaus
here the news and release notes about krpano 1.19-pr14:
Best regards,
Klaus
Improved Tools / Droplets
-
New Convert SPHERE CUBE Droplet:
- A new droplet for converting spherical images to cubical images and back.
- Images can be dropped on the droplet icon or into the droplet window.
- When dropping only one cube-side image, the remaining cube-side images will be added automatically.
- Parallel processing of several images at once.
- Also integrated into the krpano Tools GUI application where it's possible to change settings like the file-format.
-
All tools have now ICC Color Profile support:
- The Sphere to Cube and Cube to Sphere tools are always preserving the current color profile by default by copying it as it is from the input to the output images. That means when using these tools for image editing, the color profile and so also the displayed colors will not change.
- The Makepano, Maketiles
and Makepreview tools have several options for
what to do with embedded color profiles:
- skip - The embedded color profile will be skipped / ignored (that's what older krpano versions were doing).
- copy - Copy the color profile from the input to the output images.
- This is okay for image editing, but not for web-publishing:
- Color profiles can be very large (from a few kilobyte up to several megabyte) and when they would get embedded into each small tile image, the overall data-size increment can become very huge.
- Some color profiles are slow to convert and that would make the image-decoding slower.
- Not all browsers are supporting color profiles or all types of color profiles (e.g. there are ICC v2, v4, matrix and LUT color profiles). And even when the browser is basically supporting color profiles, it might not support them also in WebGL (like iOS or Android Firefox today).
- This setting should be only used when you really know what you're doing - e.g. knowing the exact color profile type and size.
- convert - Convert to sRGB - but don't embed the profile (the default).
- Because directly embedding the original color profiles isn't a good solution for panos the web (see above at copy), the tools are converting the the colors to the sRGB color profile by default.
- The sRGB color profile itself will be NOT embedded into the output images with this setting!
- According to the The World Wide Web Consortium (W3C), untagged images should be considered as sRGB by the web browser. So if the browser works correctly this is the most efficent and most performing solution.
- sRGB - Convert to sRGB - AND embed the profile.
- This is basically the same as the convert setting, but additionally also a (small) sRGB profile will be embedded into the output images.
- This can be used to ensure the right colors in browsers that have color profile support but don't handle untagged images as sRGB (as they should).
- To reduce the cost of having an embedded color profile and for having maximum browser compatibility (regarding v4 profile support) a minimal sRGB ICC v2 profile (which is just 491 byte large) will be embedded.
-
Choose the setting on your personal preference:
- For the getting same colors in as many browsers and systems as possible use the 'sRGB' setting.
- When using very saturated images and wanting to use the color range of wide color gamut displays, use the 'copy' setting with a well-considered color profiles (not too large and V2-only for browser support). But kind in mind that the colors will look wrong in some browsers.
- For the smallest filesizes and the fastest loading use the 'convert' setting (the default). The colors will be also correct for the most browsers and systems.
- The krpano Tools application is now 'DPI Aware' on Windows to avoid a blurry screen on HiDPI screens (on Mac OSX this was already working).
- Droplet fixes for OSX - the problem on Mac OSX where not all files were passed to the droplets is fixed now (thanks to this hint here).
Improved HTML5 Viewer
- New Automatic Fullscreen Mode for Android when rotating the device to landscape mode.
- Improved multires-rendering quality / performance / memory-need balance for mobile devices (for higher image quality).
- Stereo-support also for fisheye images or videos (Side-by-Side or Top-Bottom).
-
New display.stereoscale setting.
This can be used to enable a 'Half-SBS-Output' for 3D-TV-Screens - e.g. just do this one call:set(display, stereo=true, stereoscale=0.5);
- New pano loading flags (HTML5 only):
Improved WebVR Support
- Improved non-distorted hotspot rendering for VR - the normal 'billboard' rendering method that is done on normal screens doesn't 'work' in VR. Now a rendering method will be used that will display the hotspots in an 'expected' way.
-
New webvr.zoom setting for defining a custom zoom factor for WebVR usage.
- Usage examples here: Zoom in webvr examples
- New webvr.friction setting for reducing the responsive (makes sense to use on higher zooms).
- Improved support for GearVR browsers - the Oculus Browser was reporting only a small window size of 200x150 in WebVR mode, while at the same time using a rendering buffer size of 2048x1024. This different sizes were leading to problems with the multires-level-calulations and hotspot sizes.
- New webvr.isgearvr state attribute for checking if the browser is a GearVR browser with native WebVR-API support.
- The vtourskin.xml includes now a special 'Enter VR' screen for GearVR browsers.
Improved XML / Actions System
- The internal parsing of actions without %N placeholders will be cached now. This makes further calls of that action much faster (the first call will take the same time as before).
-
The set() action can now also set multiple variables to one object at once.
E.g. instead of:set(hotspot[get(hsname)].type, 'text');
set(hotspot[get(hsname)].html, 'Test text');
set(hotspot[get(hsname)].css, 'text-align:center;');
set(hotspot[get(hsname)].ath, 10.0);
set(hotspot[get(hsname)].atv, 20.0);
set(hotspot[get(hsname)],
type='text',
html='Test text',
css='text-align:center;',
ath=10.0,
atv=20.0
);
-
The if() action can now also have several 'else-if' code paths:
if(
if-expression, if-actions,
else-if-expression, else-if-actions,
else-if-expression, else-if-actions,
...
else-actions
);
-
There is now support for Value-Arrays (= native Arrays from JS or AS3).
- These are simple Arrays with an integer index and a value.
- They can be defined by def(testarray, array).
- Access is possible e.g. via set(testarray[index], ...) or get(testarray[index]).
- The number of items can be get e.g. via get(testarray.length).
-
The local variable scope system that was introduced in the previous release
has been extended and improved:
- By scope="localonly" it's now possible to define a local scope where all access refers only to that local scope itself.
- By scope="private:NAME" it's now possible to define a 'private' local scope. This scope keeps alive between the calls and can be shared with other actions.
-
Inside a local scope action there are these new pre-defined variables:
- actionname - that variable stores the name of the action itself.
- args - a value-array of the arguments that where passed to the action. The access to the arguments is possible via args[index] and the number of arguments can be get via args.length.
- parentscope - that object refers to the scope from the parent action.
- The scope(scope, actions) actions allows running code within a specific scope.
- The parentscopeset(variable, value) action does a set call within the scope of the parent action. Could be used to return values from an action.
-
New <set>
and <debug> xml elements for setting and tracing variables already during the xml parsing.
<set var="variablename" val="expression" />
<debug trace="expression" />
-
There is now support for C/JS-style single-line
// ...
and multi-line/* ... */
comments in actions code. - Additionally there were also several smaller improvements and fixes - details in the 'More Release Notes' below.
iPhone X / Safe-Area-Inset Support
Default iPhone X Display (5.3 inch):
iPhone X Display with Safe-Area-Inset support (5.8 inch):
- iPhone X support - or to be more precise: support for the viewport-fit meta tag and the Safe-Area insets.
- This allows using the full display area of the iPhone X screen.
- By default krpano will place all layer elements automatically inside the 'safe-area' and only the pano-image will be extended to the full display areas. The field-of-view and the screen-center will be relative to the safe-area, so the basic display will be the same as on a normal display. The additional display space will be only to show more from the pano image.
-
New settings and variables to control the safe-area support:
- display.safearea - enable or disable the safe-area usage - or set to use only the horizontal safe-area - or to set a fully custom safe-area (e.g. for testing or for special usages).
- display.safearea_inset - an Object for getting information about the safe-area insets. For optional usage in the onresize event to place layer elements in a custom way.
- layer.safearea - define if a layer should be relative to the safe-area (default) or to the full-display-area.
-
About updating older projects - if you don't care about iPhone X, then nothing would need to be changed.
Panos will look like before or like on every other mobile device.
But if you want to use the additional display area, then (beside of updating krpano) the
setting
viewport-fit=cover
would need to be added into the <meta> viewport element in the html file.
More Release Notes
- New: capturetouch setting in the embedding script to optionally disable the 'capturing' (default event processing) of touch events.
- New: image.cubestrip.striporder setting for defining a custom cube-strip image order.
- New: The copy(dst, src, typeconversion*) action has got an additional 'typeconversion' parameter to optionally disable the type-conversion when copying to an other existing variable.
- New: roundval(dst, src, decimalplaces) action to store the rounding result in an other variable.
- New: tohex(dst, src, prefix, length) action to store of the result of the hexadecimal conversion in an other variable.
- New: tolower(dst, src) and toupper(dst, src) actions to store the case conversion results in other variables.
- New: XOR operator for expressions.
- New: The krpano log can be shown now also at the top of the viewer window (showlog).
- New: Tools - New prealignheading config setting for optionally disabling the adding of a prealign setting to the image xml with the heading direction.
- New: Tools - SphereToCube - when converting to a cubestrip image in jpeg format - make sure that the cubesize is divisible by 8 and disable the color-subsampling to avoid artifacts at the edges.
- New: Updated vtourskin.xml, webvr.xml, showtext.xml, fps.xml to use the new actions features.
- Change: The inc() and dec() actions are storing their result now as 'Number' variable instead of converting the result to the current type of the variable (often a 'String'). This improves processing performance when the variable would be used as Array index.
- Fix: Use the 'WEBGL_lose_context' extension in the WebGL detection and in the viewer unloading to force removing unused WebGL contexts.
- Fix: WebGL hotspots were wrongly reacting to over/out events behind layered container elements (report).
- Fix: Wrong onover/onout events for WebGL hotspots on touch devices.
- Fix: Use another solution for the 'screen blinking on iOS when touching a textfield' problem that doesn't affect the touch-event flow.
- Fix: The flat-pano rendering had bugs since 1.19-pr12 in some cases.
- Fix: The image.vfov setting was ignored on flat-panos.
- Fix: Slightly inaccurate vertical scaling of the pano image in flat-panos in some cases.
- Fix: The background- and text-shadows of WebGL textfields were scaled a little wrongly when using oversampling and mipmapping in some cases.
- Fix: Faster WebGL textfield building by avoiding unnecessary redraws (report).
- Fix: Limit the WebGL textfield oversampling depending on the device-pixel-ratio to avoid drawing too high-resolution texts and improve the text-building performance.
- Fix: Improved WebGL textfield line-breaking for Firefox with non 1:1 pixel-ratio and the missing last line in Safari in some case(both things are browser-bugs workarounds).
- Fix: Add a workaround for a event flow bug in LG Smart-TV browsers (controlled by a LG Magic Remote) that causes scrolling the page instead of panning the pano.
- Fix: Add device-detection support for the Android Chromium WebView.
- Fix: The capture=false on layers and hotspots in IE11 and MS Edge wasn't working with touch-control (report).
- Fix: Workaround for an IE11 bug with loading SVG images (report).
- Fix: The local scope could got wrong when using 'blocking actions' like wait() or lookto().
- Fix: Access problems to 'style' - when doing an Array access, check if the variable at the current scope itself is also an Array, otherwise look at the upper scope for the variable.
- Fix: The delete() action wasn't working when called from a layer or hotspot event.
- Fix: Improved checking for valid Array accesses.
- Fix: The roundval() action didn't round mathematically correct when using decimal places.
- Fix: The txtsplit() action wasn't creating a new/fresh output variable and that could caused problems when reusing an existing variable.
- Fix: WebVR plugin - The resetsensor() / hlookat() actions were setting an wrong offset on real WebVR-API browsers.
- Fix: WebVR plugin - iPhone X support (with a screen size of 5.3 or 5.8 inch depending on the viewport-fit setting).
- Fix: Videoplayer plugin - The playvideo() starttime seeking wasn't working in iOS 11.
- Fix: VTour Editor - There was invalid xml output in some cases.
- Fix: VTour Editor - Automatically save the xml before editing it.
- Fix: VTour Editor - Support url placeholders (SWFPATH, HTMLPATH, CURRENTXML, BASEDIR) by assuming the xml and html file are in the same folder.
- Fix: VTour Editor - Start numbering the hotspots with 1.
- Fix: Tools - When using Ricoh Theta images as input - add the prealign setting also to the VR image declaration in the xml.
- Fix: Tools - PSD files were written wrongly (PSB files were correct).
- Fix: Tools - The CubeToSphere tool wasn't using the information about the original sphere size that was stored in the cube files to correct rounding errors when calculating the sphere size.
- Fix: Tools - The 'A' in the tile placeholder to automatically generate padding-0s wasn't working correctly.
- Fix: Tools - Memory leak in the preview image generation.
- Fix: Tools - Update the Gear360 image detection to skip their EXIF leveling information (because these images are already leveled).
- Fix: Tools - Set html5=never in the html file for panos that are Flash-only compatible.
- Fix: Droplets - The droplets on Mac OSX can now receive quarantined and non-quarantined files in one pass.
- Fix: vtourskin.xml - Skip the little-planet-intro when using deeplinking start actions.
- Fix: vtourskin.xml - Calling skin_hideskin(instant) on start wasn't working with thumbs_opened=true.
- Fix: vtourskin.xml - Don't show the tooltips layer element in MobileVR mode.