Replace SdfLib with linear octree interpolation of TriangleMeshDistance.
Temporary changes to the octree: - Changed frame from mesh to geom Before change (tolerance 1e-3): ``` Simulation time : 2.34 s Steps per second : 4275 Realtime factor : 8.55 x Time per step : 233.9 µs Newton iters / step : 2.26 Contacts / step : 3.69 Constraints / step : 14.76 Degrees of freedom : 12 Dynamic memory usage : 0.7% of 14M ``` After change (6 octree levels): ``` Simulation time : 2.24 s Steps per second : 4472 Realtime factor : 8.94 x Time per step : 223.6 µs Newton iters / step : 2.47 Contacts / step : 3.37 Constraints / step : 13.49 Degrees of freedom : 12 Dynamic memory usage : 0.2% of 14M ``` PiperOrigin-RevId: 781019754 Change-Id: Ib15581244dfe9e571e1c6c2cac4a101cf3d8ba3d
This commit is contained in:
committed by
Copybara-Service
parent
e6c5715903
commit
b81f1db8af
@@ -583,12 +583,16 @@ void mjCOctree::Make(std::vector<Triangle>& elements) {
|
||||
|
||||
|
||||
void mjCOctree::CreateOctree(const double aamm[6]) {
|
||||
double aabb[6] = {(aamm[0] + aamm[3]) / 2, (aamm[1] + aamm[4]) / 2, (aamm[2] + aamm[5]) / 2,
|
||||
(aamm[3] - aamm[0]) / 2, (aamm[4] - aamm[1]) / 2, (aamm[5] - aamm[2]) / 2};
|
||||
double box[6] = {aabb[0] - 1.1 * aabb[3], aabb[1] - 1.1 * aabb[4], aabb[2] - 1.1 * aabb[5],
|
||||
aabb[0] + 1.1 * aabb[3], aabb[1] + 1.1 * aabb[4], aabb[2] + 1.1 * aabb[5]};
|
||||
std::vector<Triangle> elements;
|
||||
Make(elements);
|
||||
std::vector<Triangle*> elements_ptrs(elements.size());
|
||||
std::transform(elements.begin(), elements.end(), elements_ptrs.begin(),
|
||||
[](Triangle& triangle) { return ▵ });
|
||||
MakeOctree(elements_ptrs, aamm);
|
||||
MakeOctree(elements_ptrs, box);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user