Dion Moult
e0eea85cfb
Basic implementation of clipping planes
2024-02-26 23:10:45 +11:00
Dion Moult
6f56d78e83
Optional culling during navigation to increase FPS
...
- Only affects non-chunked instances (where verts are higher so the impact will be greater)
- Things far away or not in view of the camera will be rendered as bounds
2024-02-25 23:11:28 +11:00
Dion Moult
0c4bcb8a12
Hybrid chunking and instancing strategy when loading linked models to balance RAM (instancing) vs speed (chunking)
2024-02-25 23:08:40 +11:00
Dion Moult
67753a0a3c
Type properties are now shown and direct linking of IFC (background blend generation) is now possible
2024-02-24 20:31:59 +11:00
Dion Moult
d02239902f
New workspace tool to query chunked models
2024-02-23 23:05:48 +11:00
Dion Moult
d7a7701005
SQLite property extraction IfcPatch recipe for querying chunked models
2024-02-23 23:04:01 +11:00
Dion Moult
a97678d30e
GUID chunking now implemented when loading either from iterator or H5
2024-02-23 23:03:24 +11:00
Dion Moult
6b82cb4d5d
Test operators to try out the various loading combinations
2024-02-22 19:27:56 +11:00
Dion Moult
a3006eb028
The iterator can now return chunked triangles instead of per element results
2024-02-22 19:24:30 +11:00
Dion Moult
48bf67f82e
Minor fixes to bugs in H5 saving
2024-02-22 19:19:27 +11:00
Dion Moult
6065c0e2fc
Naive implementation of loading chunked models in C++
2024-02-21 17:30:33 +11:00
Dion Moult
847f5ff4c8
First naive attempt at porting Python H5 converter to C++.
2024-02-20 23:13:45 +11:00
Dion Moult
45278467d3
Finish refactor to use BVH_Triangulation instead of BRepExtrema_TriangleSet for more control over how BVHs are constructed sans OCCT shapes, and also remove need to track valid_tris.
2024-02-19 17:35:06 +11:00
Dion Moult
2af1e2196f
WIP attempt to use BVH_Triangulation
2024-02-15 21:34:19 +11:00
Dion Moult
5c5f078221
Three experimental minimal operators to load IFCs (xxx), load H5 (zzz), and load chunked H5 (zxc)
2024-02-14 17:44:13 +11:00
Dion Moult
a5cf4cd421
Remove 1:N clash functions
2024-02-12 11:57:23 +11:00
Dion Moult
911b7153d7
Implement naive multithreading for N:N clashes. The clash task queue is divided by num_threads equally.
2024-02-12 11:47:20 +11:00
Dion Moult
6cec57816e
Implement BVH based many-many clash with return struct.
2024-02-11 22:18:08 +11:00
Dion Moult
c90f9c374f
Forgot to commit some critical bugfixes.
2024-02-08 16:28:06 +11:00
Dion Moult
6caacd6024
Attempt a manifold check. If it isn't closed, then we use a collision test instead of intersection which is much faster.
2024-02-08 15:54:04 +11:00
Dion Moult
2cb280932c
Indirection using vertex indices saves 20% memory but speed is now worse than when we used unordered maps.
2024-02-08 14:36:20 +11:00
Dion Moult
e089d4c78a
Use vectors instead of unordered_map for 15% speed boost
2024-02-08 11:44:08 +11:00
Dion Moult
155f0abbfe
Refactor out BVH-BVH clash into its own function.
2024-02-08 10:35:35 +11:00
Dion Moult
77d9688296
Replace threeyd tri-tri intersect library with physx implementation.
2024-02-08 10:21:56 +11:00
Dion Moult
09efd68e6e
Move vendor functions into clash_utils
2024-02-07 23:01:21 +11:00
Dion Moult
0b3e9e7c5a
Reuse geom iterator triangulation data, don't use optimal OBBs for speed, verts now use gp_Pnt instead of BVH_Vec3d, and optimise add_triangulated.
2024-02-07 17:49:12 +11:00
Dion Moult
b658b74b90
Fix missing clearance AABB check and add check_all clearance bool. Minor cleanup to use vert/normal maps.
2024-02-07 09:28:19 +11:00
Dion Moult
47dd8ec4dd
Use map for verts and normals, basic implementation of piercing checks.
2024-02-06 22:21:33 +11:00
Dion Moult
9ba1596e30
Implement early return bool for intersection tests.
2024-02-05 18:47:08 +11:00
Dion Moult
930020bf05
Use NVIDIA's ray-tri intersection implementation under BSD-3 license.
2024-02-04 22:51:51 +11:00
Dion Moult
1fe69e5f19
Simple implementation of clearance clash.
2024-02-04 16:02:45 +11:00
Dion Moult
988c8f16f3
Implement collision clash type (pure tri intersection regardless of protrusion)
...
This should be equivalent to select(element) but faster and with an allow_touching toggle.
2024-02-04 09:01:35 +11:00
Dion Moult
080b628df5
Optimise by removing unnecessary (very slow) triangle shrinking, more optimal OBBs, check OBB first for points_in_b prior to doing raycast (much faster now), and return the surface point of the protrusion too for convenience.
2024-02-03 16:14:26 +11:00
Dion Moult
d0333ac7cd
Penetration distances now are influenced by the normal for better results.
...
Add cache for points that have already been checked.
Separate out new add_triangulated function with new kwarg add_element(should_triangulate=True) so that you can still have the old geom tree using aabb only if you want, also because add() is used in boolean_utils. Tolerance is now a kwarg.
I misunderstood the OBB dimension and should *2 not /2 which now makes it much slower since there's more triangles to check.
2024-02-02 23:35:06 +11:00
Dion Moult
e95e16c102
First attempt at implementation of intersection clash checks.
...
This considers only protruding clashes. It does not consider touching nor encroaching clashes and does not consider protrusion direction in the protrusion distance.
2024-02-01 18:30:20 +11:00
Dion Moult
7a7fde0a2a
See #4247 . Loading models now skips excessively voided objects for performance.
2024-01-24 10:39:31 +11:00
Ryan Schultz
7992bd9902
Give user additional feedback when trying to duplicate an IFCproject and Drawing. Also deselects the object to prevent inadvertently moving it.
2024-01-23 08:04:12 -06:00
Dion Moult
3182fe9c15
Fix bug where merging by type when loading broke if a type didn't have a name
2024-01-23 19:45:31 +11:00
Dion Moult
e8858aeeb3
Fix bug where loading filtered IFC2X3 models didn't work.
2024-01-23 17:39:13 +11:00
Dion Moult
ec79d61095
Fix #2719 . Indicator whether or not IFC is dirty to help users know when to save.
2024-01-23 16:29:42 +11:00
Dion Moult
266236ee49
See #4241 . Only use shapely to repolygonise if IfcOpenShell returns unclosed paths. Hollow cuts typically are closed paths.
2024-01-23 16:06:54 +11:00
Dion Moult
192e4e43a4
Fix #4239 . Stop users from duplicating IfcProject.
blenderbim-240123
2024-01-23 12:30:25 +11:00
Dion Moult
b22c92e951
Fix regression where you couldn't unlink an object that already had a broken element link, and bug where you couldn't unlink a spatial element or similar with its own collection.
2024-01-23 12:27:09 +11:00
Dion Moult
7634e71434
See #4239 . Ensure that all copy pasted objects are unlinked. Use duplicate if you want to copy.
2024-01-23 12:25:46 +11:00
Dion Moult
dda803df2e
See 0028fd3. Fix regression when duplicating objects without connections.
2024-01-23 09:05:40 +11:00
Andrej730
c3ded31a6a
static ifcopenshell.geom.serializers and some typing for IDE code hints
...
code itself should work exactly the same way
blenderbim-240122
2024-01-22 14:24:24 +05:00
Thomas Krijnen
f2d19ab2c3
#4216 todo note
2024-01-22 09:38:05 +01:00
Dion Moult
ab80400e16
See #4240 . Guard against possible user creating invalid userdefined attribute values.
2024-01-21 21:56:45 +11:00
Dion Moult
c88496c6a6
See #4240 . Fix validation issue with perspective drawing pyramid booleans. Boolean clipping results can only be used on swept solids.
2024-01-21 19:13:40 +11:00
Dion Moult
0ee07fb8cc
See #4240 . Fix bug where 2D arbitrary profiles were invalid IFC (used 3D point lists not 2D)
blenderbim-240121
2024-01-21 16:07:00 +11:00