New:
krpano offers a new unique high-quality perspective-mode
for rendering the 3D Gaussian Splats.
This ensures accurate and stable visuals, especially in wide-angle views,
where 'normal' Gaussian Splats rendering-modes get visual problems.
New:
With this perspective-rendering-mode
krpano can render the Gaussian Splats also using the typical krpano projections / view-distortions,
such as Fisheye, Stereographic, Architectural, Pannini or Little-Planet-View.
New:
The loading of the Gaussian Splats is done very efficiently using an advanced buffered
streaming,
which transfers the loaded Splats as directly as possible to the GPU.
This reduces the memory usage and ensures better stability on mobile devices.
New:
With full support for VR and stereo/anaglyph rendering.
New:
krpano supports these Gaussian Splats file formats:
New:
For better understanding, analysing the structure a Gaussian Splat model, there are
several debug visualizations available.
New:
For further customization there is shader support to modify the Spalts in realtime.
Such shaders can be used for various effects, e.g. unveil animations, lighting, color changes.
New:
See the included 3D Gaussian Splats Examples
for comparing the rendering-modes and try your own 3D Gaussian Splat Models with it
(by using Drag-and-Drop with your own files).
New:
The 3D Gaussian Splats Example
includes also a small helper tool (Viewpoints Tool) for creating animated camera-paths.
New:controls3d.xml - a new helper script to extend krpano
with controls for 3D environments (replaces the depthmap_navigation.xml).
Supports mouse, keyboard and touch usage and provides also onscreen-controls.
New:cursor3d.xml
- add a 3D navigation cursor, with mouse, touch and VR support.
New:control.dragscale - with this setting a custom
pano-dragging/panning scale can be set.
This is used in 3D-controls when using orbit-like controls to avoid that the dragging/moving
speed depends on the field-of-view (as it would otherwise).
New:
To differante better between depthmapped pano-images and textured 3D-models there is the new
<model> xml declaration.
Technically this is just an alias for <depthmap> and both names
can be used at any time and vice versa, however for clarity, the actually right name should be used.
New:
The image.prealign setting for rotating pano images or 3D models
has been replaced with individual image.rx,
image.ry,
image.rz and
image.rotationorder settings.
These new settings offer easier usage and more flexibility
(using the old image.prealign setting is still supported and
automatically mapped to the new settings).
Change:
The depthmap.cubemapsize default value has been increased from 512 to 1024 for more accurate depthmapping.
Change:
The display.depthrange setting has been replaced by
the new display.depthnear
and display.depthfar settings
(but the old depthrange setting is supported).
Additionally the default value for depthnear has been increased from 0.1 to 1.0
to provide more rendering accuracy in 3D scenes.
Fix:
The depthmap.align setting was working differently (wrong) in version 1.22.
Fix:
The 3D-Model depthmapping accuracy was very low in some cases.
Fix:
Support url placeholders in the depthmap.backgroundurl setting.
Fix:
Exclude text-based 3D-Model formats (obj/mtl, stl, depth) from the sameorigin check.
Handle them like image-resources, they can't contain any code anyway.
New:behindcolormatrix -
use a special colormatrix for hotspots that are
'behind' the 3D-model geometry (e.g. behind walls or objects).
This can be used to show hotspots in a special color or form when normally not visible because being covered.
New:
Optionally limit the viewer to 'WebGL 2.0 only' by changing the webgl embedpano() setting to 2.0.
Then the viewer will only start when WebGL 2.0 is available, otherwise an error will be shown.
This could be used for examples that specifically require WebGL 2.0 features to work.
New:
The embedpano() target setting
can now also be null or unset. In this case automatically the parent element of the current <script> element is used.
New:
It is now possible to set the bgcolor and
WebGL settings (e.g. antialias) by URL query parameters.
This can be usefully for iframe-embedding or specific rendering cases.
New:registerattribute()
now supports a versatile new mode: A single handler function can serve as both setter and getter.
The attribute value is stored internally, can be modified in the handler during setting or getting,
and can be shared across multiple attributes by checking the attribute name within the function.
New:cursorraycast() function
for doing a raycast from the current mouse cursor position. As special feature this function
also supports the VR mode, in this case automatically the current VR controller or VR cursor is used.
New:
The raycast() and
The screenraycast() functions
are now also also callable in expressions code. This allows directly using the return value.
New:view.adjustoffset(ox, oy ,oz)
- change the view.ox / oy / oz values without changing the current view.
To compensate, the view.tx / ty / tz position will be adjusted to keep the view!
New:view.camera.x/y/z object for
getting the actual 3D positon of the view camera.
New:onviewinteraction event to track interactions of the user with the view,
and a new lastviewinteraction variable
to shows what the last user interaction with the view was.
New:display.wireocclusion setting
for customizing the wireframe display (enable or disable the occlusion of hidden wireframe lines).
New:formatnumber() expression function for
formating numbers with custom thousand- and comma-separators.
New:MOD operator for expressions (modulate, remainder of division).
New:mix(a,b,m) expression function
for blending from a to b by factor m.
New:istweening() expression function
for checking if a specific variable is currently tweened.
New:
Textfield relinktemplate() function for
linking the variables from the template again.
This could be used when linking to variables that have still the same names/addresses,
but are different objects now, e.g. when linking to image.* properties and loading a new pano.
New:
The Array addChangeListener() callback function
reports now also the changed element and the type of change.
New:
Hierarchical customParsePath support - sub-krpano-layers
are calling also the customParsePath function from parent krpano viewers.
New:blob: URL support.
If a filename is required for the blob file (e.g. because the file-extension is important),
it can be defined by adding #filename.ext to the blob URL.
New:
Support using Javascript Arrays for the polygonal hotspot points
and points3d settings.
New:display.antialias variable for checking
if rendering with WebGL anti-aliasing.
Change:
Do the controls friction calculations before running animations and scripts,
this way scripts can use or control the actual view values before rendering the frame.
Fix:
parent="OVERLAY" elements might have been behind other elements
Fix:
The tween() action pre-resolved all array indices in the done and update callback codes
to allow array indices to be used in the variable being tweened.
But this pre-resolving could lead to strange errors if the array indices there had no relation to the tweening variable.
Now, only the array indices actually used in the tweening variable are resolved in the callback codes.
Fix:
krpano Array items can now only be created sequentially if an index-value is used to create them.
This prevents the creation of krpano Arrays that have 'holes', which can cause unexpected problems.
Fix:setvars() did not set attributes that were not lowercase.
Fix:
Textual operators like AND, OR, ... were not working in certain nested expressions.
Fix:Textfield - skip the BBCode [] to <> conversion inside Strings (e.g. in attributes).
This avoids problems when trying to use event code that uses [] characters.
Fix:
Using <if> inside <layer> elements wasn't working.
Fix:
There was a wrong local scope in events when the event was dispatched from a localscope action.
Fix:
There could a be Javascript crash when using setting the parent setting of a hotspot to another hotspot.
Fix:
If an expression variable evaluates to a value that begins or ends with characters that are also used for expression operators,
the expression may have wrongly caused an 'invalid expression' error.
Fix:
The default value for capturewheel wasn't initialized for polygonal hotspots.
Fix:
The transition from normal-view to fisheye-view has been smoothed.
Previously there was a short initial 'step' before the actual distortions were added.
Fix:
The text in the krpano-log inside sub-krpano layers was not selectable.
Fix:
Disable any custom safearea sizes in WebVR mode and use the full-screen.
Fix:webvr.xml - when entering VR mode,
hide only the 'root-level' layers without vr="false".
Hiding also children layers is not necessary and can be even unwanted.