- The orbit controller would not properly report changes in camera movement on a per frame basis becuase of a hardcoded epsilon which was not small enough for very small scenes. Now the epsilon is dynamically computed
- WASD-ing would jitter in very small scenes because of a too large normalization value sent to the position dampers. Now that value is also dynamically computed for small scenes
* fix(viewer-lib): Fixed the issue where v2 lines would not display properly when having both displayStyle and renderMaterial. Now displayStyle takes precedence
* chore(viewer-lib): Fixed typo
- Pressing WASDQE while in orthographic mode will no longer work. WASD-ing is disabled while in ortho
- Fixed an issue with toggling to ortho after dropping out of WASD caused by the origin beingvery close to the camera, making the orthographic size to be huge. Now when this happens, we get the minimum distance from the camera to the geometry and use that distance to compute the orthographic size. If no intersection is found, we just take the halfwy between min and max radius
* feat(viewer-lib): Added property to PointQueryResult which tells if the requested point is in frustum when projecting and unprojecting
* feat(frontend-2): Updated the comment bubbles screen location computation step to account for their anchor's inclusion in the camera's frustum
* fix(viewer-lib): Fixed the issue where billboarded objects from measurements were not getting their position updated properly
* fix(viewer-lib): Disabled orbit sphere frustum culling
* Updated the fly controller to use the z up basis
* Fixed very important compiler error
* Removed the annoying delay when first holding down WASD keys before movement started
* Updated LegacyViewer to use the hybrid camera controls
* Added big baker
* Trying to figure out the essence of this
* Partly works
* Pivotal coordinates now work
* Smoothened out the math abit
* Fixed sandbox error
* Enabled the pivot sphere
* feat(viewer-lib): Fixed some issues with orbiting around cursor
* feat(viewer-lib): Updates to WEB-2313, orbiting around mouse cursor
Orbiting around mouse cursor now works correctly with an orthographic projection as well as when toggling between orthographic and perspective.
Disabled WASD navigation for now.
SmoothOrbitControls now has protected members instead of private allowing extension
Documented the important parts of the pivotal navigation code
* feat(viewer-lib): Mouse orbiting now takes clipping planes into consideration
* chore(viewer-lib): Fixed sandbox build error
* fix(viewer-lib): Handled WEB-2449 and WEB-2450
Additionally fixed an issue where changing the orbit pivot would trigger a hard render, adding the unneeded noise of AO re-convergence
* fix(viewer-lib): Fixed the issue with focusing and other camera animations caused by the introduction on the pivotal CS. Pivot sphere now shows only on orbit
* feat(viewer-lib): Updates on mouse orbiting:
- When clicking outside of the model, oribitig will switch to polar and use the last computed origin (which is still going to be based on the last pivot point)
Made the pivot sphere speckle blue
The pivot sphere now only shows when clicking on objects, when clicking outside of the model it will not show
* feat(viewer-lib): Update for WASD aka fly mode:
- Smoother combined navigation by using the immediate controler position and orientation as opposed the the goal ones
- Pivot sphere properly hides when in fly mode
- The bug where the camera would incorrectly jump when toggling between fly and oribit is now gone (or I cannot reproduce it anymore)
* fix(viewer-lib): Fixed sandbox compile error
* feat(viewer-lib): Added the hybrid fly orbit controller to the legacy viewer
* feat(viewer-lib): Added a slower movement speed to WASD navigation when camera is close to geometry
* fix(viewer-lib): Fixed the issue where opening the context menu while holding down a WASD key would make the camera move indefinetely
* Feat(viewer-lib): Update to WASD controls:
- Disabled cursor orbiting
- Added an option to allow for world space up/down with e/q keys. By default it's enabled
- Fixed the pan speed to work similar to WASD speed in two steps depending how close the camera is to geometry
* chore(viewer-lib): Tidied up a bit
* fix(viewer-lib): Fixed an ugly bug where the camera distance calculataion plane would flip, especially when WASD-ing, and mess up the min distance calculation which led the camera near plane to be way off
* chore(viewer-lib): Swapped E to up and Q to down
* Re-nabled cursor orbiting
- Section outlines are no longer visible behind other geometry. They are depth tested now for all view modes
- Shaded mode aka BastiMode now properly updates the section planes
- FilteringExtension now emits the filtering state changed event when reseting the filtering state
- BasitPass no longer applies the per vertex color indices each frame
- ViewModes extension now listens for filtering state changes and have any active BasitPass reset it's color indices on a filtering reset event. Not great, not terrible but it avoids us having to double cache the per vertex color indices.
* feat(viewer-lib): Updates to the PassReader extension along with underlying viewer library updates
Implemented reading framebuffer contents for framebuffers with multiple attachements. The current version of three.js that we are using does not support this. Because we still need to drag along WebGL 1.0 support, only attachement 0 can be read for now, which does not bother us.
DepthNormalPass now specifies it's MRT output target as the outputTarget
PassReader's read function is now overloaded and it can take a pass name as a string or a GPass | GPass[]
Had to add a small type augmentation since the current version of types-three library does a poor job when it comes to WebGLMultipleRenderTargets
Updated PassReader extension in frontend and updated the call to read in order to make sure depth reading works in other view modes that write depth. The only view mode that does not draw to depth is Shaded mode
* fix(viewer-lib): Fixed the classic sandbox compile error
* fix(frontend-2): Updated depth reading to work with MRT depth from our view mode pipelines
* chore(viewer-lib): Snow mode is no longer default in the sandbox
* fix(viewer-lib): Handles WEB-2417
Shadowcather now properly updates when adding/removing render trees even if the scene bounds does not change
* Handles new measurements reverting to meters even if a different unit was previously set. Handles units not changing properly when changing the unit value
* Remove transition to fix select
* Remove unsused import
* Added back snow
---------
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
* Quick hack to demo how an offline loader would work with as little complication as possible
* Further simplified yielding objects in offline mode
* Commented out the URL thing
* Implemented SpeckleOfflineLoader. JSON parsing is implemented at object-loader level, completely isolated from the rest of the implementation in order to avoid regression
* Isolated ObjectLoader creation in base SpeckleLoader class so any extended classes can overwrite the way the object loader is created and used
* Removed the big json sample file
* Updated version
* Removed unused functions from objectloader
* Restored viewer package version
* Fixed typo
* Renamed and moved the sample offline Speckle JSON
* Replaced the default JSON object sample with a much smaller one since we don't want to increase the sandbox's build size by 10 megs
* Fixed a linting error
* Improve shortcuts
* WIP
* View Mode menu
* Styling updates
* split activeControls
* Reusable Menu component
* Menu updates
* Sun menu updates
* Tidyups
* CommonAlert
* Updates
* WIP change to currentViewMode
* Serialization
* defineModel
* Tidy up emits
* Remove v-model
* Force close other panels
* Remove transition
* More robust isTypingComment
* activeControl > activePanel
* View menu shortcuts
* Explode menu definemodel
* Small changes from Benjamin
* Add colors view mode
* Fix server problem in data.ts
* Fix build
* Fixed the issue where TAS only shapecasts were not running properly on all batch objects, missing some of them. Some small updates to BoxSelection
* Improved shapecast travesal time 4X. Only passing batch objects only once to intersectTASRange and also added the builtin CONTAINED acceleration to bounds testing.
* Some critical typescript errors
* Added missing types from export
* Added FilterMaterial and related types to export list
* Handled WEB-1389
* Camera orbit controls now takes the offset position and size when computing zoom to cursor coordinates. Fixes WEB-1611
* Edge drawing render pass using both depth and normal data
* Edges are now mixed with the rest of the passes in the final pass
* Set MSAA for SS edges framebuffers to maximum number of samples
* New depth gradient extraction approach. Several improvements over the old one
* Some changes to the normal gradient extraction. Using Robert's Cross works roughly the same as the older approach with 1 less texture fetch. Also implemented Canny
* Combined static AO with edges
* Implemented SMAA and static TAA. Both toggeable in realtime for better comparisons
* Added the normal pass and fixed some issues
* The pipeline is now capable of jitter individual passes if requested
* Added TAA pass. Technically it can be used to antialias anything. Right now we've disabled MSAA and using TAA for stationary as an example
* Added a TAA pipeline on the final image. Added DPR into pipeline resize calls. Struggled a *lot* with different blending results between drawing to the backbuffer and to a framebuffer then copying to the backbuffer. There are still some differences visible
* Edges pipeline
* Edges + TAA + AO + COLOR pipeline
* ShadedView mode
* Visibility is now properly reset when coming from a visibility conditioned pass to an unconditioned one
* Added another version for 'shaded' view, inspired by blender's viewport shading
* Added pen view together with a sample paper like texture for vissual background
* A form of techincal view
* Arctic view. Separate viewport pass from matcap pass
* Cleaned up the ao shader a bit. Formalized progressive ao pass options
* WIP on BasitMode
* Added pipeline switching to the sandbox. Edge pass now has an optional texture background
* Implemented BasicMode using material overrides
* Merged with latest main
* Fix merge issues
* More merge misses
* Stating stream
* Fixed an issue that took hours to debug and it turned out to be a literal typo
* Formalized the progressive pipeline concept which removed a lot of duplicated code
* Added pipeline reseting. Added pipeline passthrough to allow features like measurements to run correctly. Added jitter to depth buffer for progressive AO for much better results!
* Implemented the required stencil passes used for stencil selection as new pass formats. Added them as well as the overlay pass to all pipelines. Will need to automate their addition though
* Fixed stencil selection in pen view. Decided to only show outlines because it makes more sense
* Implemented proper pass clearing values and flags. Also made sure the minimum amount of clears are made inside the frame. Fixed an issue with progressive pass frame counts and indices.
* Formalized options for all passes that had any. Tidied up some shaders and simplified where possible
* Centralized render target creation and removed a lot of render target creation in the passes that had no need for it. Fixed an issue where the matcap material would not not update it's matcap texture properly when rendering in override mode
* Matcap and Viewport passes where merged into a single Viewport pass that can take a matcap texture in it's options. Also, changed the way the viewport shader displays colors, based on three's textureless matcap shader block.
* Updated PassReader extension to work with the latest pipeline. NNowthe pass reader accepts the pass name when reading, so it can used to read any passes
* WIP on MRT
* Implemented DepthNormal MRT pass and used in a pipeline. Working fine on WebGL2.0
* Full Support for WebGL1.0
* Fix for viewport material not updating it's texture properly
* Added an extension that enables hotkeys for view modes
* Fixed jittering for orthographic projections
* Fixed the section tool integration issues with the new pipelines
* Added MRT versions of the pipelines that need it]
* Added a wrapper ViewModes extensions that defines the existing view modes and handles the required check for MRT capabilities and selects the nonMRT/MRT pipelines accordingly
* Error fixes
* Another error
* Added shadowcatcher to arctic and shaded view since it was missing by mistake. Increased the KERNEL_SIZE for arctic mode so that the AO is more smooth
* Disabled pen view background texture
* When reseting the pipeline the jitter index is also reset in order to avoid visible jittering when switching fast between dynamic and progressive mode repeteadly (like when moving the clipping box)
* Quick solution for integrating view modes with per-object operatins like selection and filtering
* View modes now have the ability of overriding the batch's default material instead of all it;s materials. This means that per object material changes like selection and filtering will work together with view modes. Handles WEB-2080, WEB-2083, WEB-2084, WEB-2081 and WEB-2082
* Fiter applies now trigger a hard reset, which is required and fixes a preexisting bug in production. Fixed an issue where the shadowcatcher would incorrectly blend in shaded view mode
* Viewport pass can now render transparency. Arctic mode now renders transparent objects as well (was originally required)
* Forcing the multipel render targets we use for MRT to use a 32 bit depth buffer for proper precision on MacOs Chromium
* Fixed an issue where incorrect visible ranges were being perpetuated when selecting hidden objects (outlines only mode)
* PROPS are not rendered twice anymore and they've been moved to the overlay pass in all pipelines
* Reorganized passes and pipelines. Deleted old passes
* Renamed all new passes. Only the interface and base pass types have a G prepended to make it 100% clear it's different than three's Pass type
* Fixed some compiling errors
* Dont change viewmodes when inputs are being used
* Pipeline gets resized whenever it's set in the renderer. Some other smaller changes
---------
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
* Update Section Box controls to include visibility
* Update reset v-if
* Update shortcut
* Added render requests so that section box updates are made visible
* Remove comments
* Exposed SectionToolEvent in the viewer
* Only show reset when change has been made to sectionbox
* gql
* Make state reactive
* Revert "Make state reactive"
This reverts commit 1697b12cd67d1da6f79658996c8822d1eb962d3b.
* Handles WEB-2039
* Handles WEB-2035
* Changes from call with Fabs
---------
Co-authored-by: AlexandruPopovici <alexandrupopoviciioan@gmail.com>
* Fixed the issue with camera controller incorrect zoomToBox when switching between loaded objects. If zoomToBox is requested as non animated, now it actually is non animated. Added a default function to the camera controller extensions which moves the camera to the predefined location/orientation
* No radius is specified as default
* Color source implementation for a single level of instancing. I don't like it. I don't believe it's the right way to go
* Forgot this
* Rewritten the way prxy color sources are handled. Nesting instances now works for the most part
* Handled block-block situation from instance nesting
* Added sum comments for color proxy source implementation
* Disabled tonemaping for line materials