Commit Graph

2431 Commits

Author SHA1 Message Date
AlexandruPopovici 3ca2d08e18 #828 Implemented the SpeckleMesh which extends three's Mesh and corrects the raycasting implementation to work with the positions encoded as pairs of lows and highs 2022-07-27 21:46:03 +03:00
AlexandruPopovici 9e7c80bb4f #828. Added controlled update and render loops which propagate throught the viewer library 2022-07-27 15:09:46 +03:00
AlexandruPopovici f10dfdac43 #827 Implemented ghost material for points. 2022-07-26 23:35:30 +03:00
AlexandruPopovici 453e83e515 #827 Implemented the colored material (used when filtering by non-numeric properties) for lines as well. 2022-07-26 23:10:52 +03:00
AlexandruPopovici 53b309dca5 #828 Moved some old sources to legacy folder 2022-07-26 19:02:42 +03:00
AlexandruPopovici e35c4ad35b #828 Added proper vertex normal computation based off fp64 positions 2022-07-26 18:56:00 +03:00
AlexandruPopovici 2e0ddf6153 #828 Implemented the RTE improvements discussed in the blog post 2022-07-26 18:37:27 +03:00
AlexandruPopovici e05af7eafe #728 Removed all references to USE_RTE and THICK_LINES since we're always going to be using these implementaions 2022-07-26 11:01:38 +03:00
AlexandruPopovici f706efc875 #828. Removed unused code from Geometry. Corrected the types for the position attribute underlying typed array. Removed duplicate code 2022-07-26 10:46:54 +03:00
AlexandruPopovici 30e985be4a #827. Implemented non-numeric filter-by properties support. Added this functionality to the sandbox as well. 2022-07-22 15:35:34 +03:00
AlexandruPopovici 92009018fc #827. Generalizes all gradient based filtering. We can now filter by any property which is numerical from the sandbox. Implemented ramp texture generation. We will need this to generate the ramp texture for discreet colored filters like filterByType, filterByFamily ,etc 2022-07-22 01:03:01 +03:00
AlexandruPopovici c238cdaa07 #827. Added min/max values when filtering by volume. Some changes to the filtering implementation to avoid redundant tree searches 2022-07-22 00:03:35 +03:00
AlexandruPopovici fdc550a38a #827 Implemented gradient based filtering using ramp texture and per vertex ramp texture index. Implemented filtering by volume in the sandbox, using the gradient filter 2022-07-20 23:59:11 +03:00
AlexandruPopovici dbd3763a5a #827 Added the possibility to visually display the scene's batches as well as to select any object by holding the ctrl key and it will isolate it's entire batch, not just the object. These will be useful for debbuging 2022-07-18 23:43:08 +03:00
AlexandruPopovici fdd03ef821 #828[Debt] Added support for vertex colors on meshes that specify it 2022-07-18 17:00:01 +03:00
AlexandruPopovici a4fa7bb4dd #811 Implemented conveniene method for isolating objets visually, where all other objects are ghosted, like the effect should look like. Fixed an issue with Brep conversion 2022-06-28 11:41:45 +03:00
AlexandruPopovici a206176779 Switched to ACES tonemapping and increased the exposure a bit 2022-06-27 19:11:25 +03:00
AlexandruPopovici 65d5aa6659 #811 Added a material for the gradient filter, so we have multiple filter materials to apply. However th gradient material is not fully implemented. It can only do a single solid color. We'll implement the actual gradient of colors in the future 2022-06-27 19:00:20 +03:00
AlexandruPopovici 51596d81b4 Fixed some remaining issues with the filtering API. Made transparent materials to not write to the depth buffer so we don't get false depth test fails. We will see in the future if we want to treat transparent objects differetly, however for now it's going to be fine 2022-06-27 18:51:52 +03:00
AlexandruPopovici 7840591672 #811 Separated batch aut filling draw ranges as a separate function. This will allow sequential calls to set different draw ranges with different materials sequentially for the filtering API 2022-06-24 16:44:31 +03:00
AlexandruPopovici 923e835c54 #811 Added the the unload functionality, so we can load/unload stuff in the sandbox. It's currently a bit leaky but we'll fix that. Also we currentyl don;t support multiple paralel streams to be loaded in. I first want to make sure things work properly for 1 stream before having multiple at the same time 2022-06-24 14:20:27 +03:00
AlexandruPopovici d29d2d464c #811 Started working on a debug API for filtering inside the viewer. This API will be used by the upcoming FilteringManager to do the visual work 2022-06-24 00:41:24 +03:00
AlexandruPopovici 8f44b86c79 #811 Minor addition 2022-06-23 23:01:51 +03:00
AlexandruPopovici 136f5f6076 #811. Adjusted the near and far clipping planes of the shadowmap camera using the same approach as in the previous commit. This also ever so slightly improved the quality of the shadomap 2022-06-23 16:24:18 +03:00
AlexandruPopovici ae3f73e28f #811 Implemented dynamic computation for the default sun's shadow camera frustum based on the scene's bounding box. This is important for being efficient with shadow map texture space -> better quality shadows. It's still using AABB so the resulting frustum will still be larger than the minimum posible one 2022-06-23 15:30:08 +03:00
AlexandruPopovici 42844960aa #811 Integrated section box functionality, camera projection switching and fixed a few issues with the new viewer 2022-06-21 17:11:58 +03:00
AlexandruPopovici f73384e66f #811 Integrated double-click to zoom, and zoom extents with the new viewer. Currently I'm using old existing code just for the sake of less regression, but will revisit it in the future 2022-06-21 15:47:24 +03:00
AlexandruPopovici 499653d983 #811 Started taking the axe on a lot of legacy code which became obsolete after redux Stage 2. Turned ViewerObjectLoader to typescript and started moving a lot of stuff from viewer to a new class, SpeckleRenderer, which will centralize and handle a lot of stuff 2022-06-21 00:58:20 +03:00
AlexandruPopovici 6383804199 #783 Added optional srgb->linear transformation of vertex colors. This is used by point clouds, and possibly any other types which want vertex colors 2022-06-20 16:55:22 +03:00
AlexandruPopovici 11a429f9ca #783 Implemented Point and PointCloud speckle type support for batching and everything else. 2022-06-20 16:39:51 +03:00
AlexandruPopovici d4c0495860 #783. Fixed a misplaced 'if' inside the mesh batch draw material ranges function. Added HideAll draw range constant. We're using this when we want to hide an entire batch so that three.js does not do all the buffer binding, material and state switching for batches that have a draw range of 0-0. Apparently three.js doesn't skip all the GL commands automatically for meshes with 0 draw range 2022-06-18 00:38:41 +03:00
AlexandruPopovici dad9acb3e9 #783 Implemented visibility ranges for line batches 2022-06-18 00:07:56 +03:00
AlexandruPopovici 60536592a4 #783 Implemented visible range for batches. Required when wanting to isolate/hide/don't show stuff. Only implemented it for the mesh batch type for now. Line batch is next 2022-06-17 19:07:10 +03:00
AlexandruPopovici c7a2390bf3 #783 Implemented multi selection via multiple draw range with automatic fill of groups. Implemented selection of multiple objects when clicking something in the world, if that object is part of a whole and it needs to be selected together with others. It's not perfect yet, I;ve seen some bad selections, but will fix that soon 2022-06-17 17:28:39 +03:00
AlexandruPopovici d508eb6d5b #783. Implemented separate materal draw ranges for the line batches. Added the Batch common interface and separate the MeshBatch from the LineBatch, both implementing the Batch interface. Selection now works properly for both meshes and lines 2022-06-16 19:40:32 +03:00
AlexandruPopovici 4d764c166c #783 Implemented line batch colouring using an additional InstancedBufferAttribute where each line segment can have it's own color. This way we can know which subset to color differently. Transparency is also supported in theory, but will get to that later on. Also started to split the mesh batch from the line batch since they will be conceptualyl different, but share a common contract 2022-06-16 17:19:41 +03:00
AlexandruPopovici 6084a4849c #783 Implemented picking for the batched meshes 2022-06-15 17:30:04 +03:00
AlexandruPopovici 059893da30 #783 Fixed an issue with some types of lines and the current batching system which made the batched lines look really broken 2022-06-15 14:44:44 +03:00
AlexandruPopovici 1846554778 #783 Working on picking and fixing some issues which arose a few days ago regarding some types of lines when I switched to full-tree represenation 2022-06-15 11:13:25 +03:00
AlexandruPopovici 2157631def #783 Fixed an issue where some meshes were left out of batching. Added transparency to materials that require it. Seems to be working fine so far, though we might see issues in the future] 2022-06-14 13:01:04 +03:00
AlexandruPopovici ae46d0ce5e #783 Fixed an issue with batching a single mesh at the end of the batch list. Geometries can now inherit render materals/display styles from their entire hierarchy 2022-06-14 01:26:16 +03:00
AlexandruPopovici b5c6e4ac37 #783 Fixed RTE not working with batched line segments 2022-06-13 22:42:06 +03:00
AlexandruPopovici 6cf41f64c4 #783. Some changes regarding materials, default materials and material hashes 2022-06-13 22:26:41 +03:00
AlexandruPopovici bee051ff49 #783. Implemented line batching. This is actually a big change, since the prevous viewers did not have line batching and it was causing huge performance problems with having to render thousands of lines separately. As expected, batching lines did require a bit of a change to how we render the actual line geometries, but managed to get most of them in. Still need to account for high/low buffer splitting for the individual segments. 2022-06-10 17:08:58 +03:00
AlexandruPopovici 757cc7e666 783. Continued working on batching. Got first batches to render on the screen. A bit messed up, but it's something 2022-06-10 00:08:03 +03:00
AlexandruPopovici f2c11abb23 #783. Started working on the Batcher will will organize the render nodes into batches that minimize draw calls neatly 2022-06-09 18:02:13 +03:00
AlexandruPopovici 386500be7a #783 Removed the concept of nested nodes. It was complicating matters unnecessarily. Any nodes inside other nodes display values are chidlren of that node now. 2022-06-09 13:09:55 +03:00
AlexandruPopovici 665fda37ae #783. Started working on materials and their render tree interaction 2022-06-09 00:10:10 +03:00
AlexandruPopovici 36da0e38e2 #783 Fixed an issue where the display values for non-geometry nodes was ignored 2022-06-07 14:29:49 +03:00
AlexandruPopovici ab353fc87c #783 Fixed an issue with transforming hierarchies of nodes inside Block Instances. Fixed an issue with Spirals not being interpreted as their display value (default behavior). Cleaned up Converter. It's nice and short now 2022-06-06 22:47:16 +03:00