Support arbitrary large meshes in multiccd by reusing EPA memory.

PiperOrigin-RevId: 947709621
Change-Id: Idc4f168434b9d0a8555c0bed989adb0e99770a78
This commit is contained in:
Kyle Bayes
2026-07-14 08:47:52 -07:00
committed by Copybara-Service
parent 0afafacfc5
commit 2444defc63
18 changed files with 680 additions and 87 deletions
+4 -1
View File
@@ -125,11 +125,14 @@ int Penetration(mjCCDStatus& status, mjtNum& depth, std::vector<mjtNum>& dir,
mjCCDConfig config;
// set config
auto buffer = std::vector<std::byte>(mjc_ccdSize(kMaxIterations));
auto buffer = std::vector<std::byte>(
mjc_ccdSize(model->npolygonmax, model->nmeshdegmax, kMaxIterations));
config.max_iterations = kMaxIterations;
config.tolerance = kTolerance;
config.max_contacts = max_contacts;
config.dist_cutoff = 0; // no geom distances needed
config.npolygonmax = model->npolygonmax;
config.nmeshdegmax = model->nmeshdegmax;
config.max_contacts = max_contacts;
config.buffer = buffer.data();
+502
View File
@@ -0,0 +1,502 @@
# Unit cone with 500 base vertices
v 0.0 0.0 1.0
v 1.000000 0.000000 -1.0
v 0.999921 0.012566 -1.0
v 0.999684 0.025130 -1.0
v 0.999289 0.037690 -1.0
v 0.998737 0.050244 -1.0
v 0.998027 0.062791 -1.0
v 0.997159 0.075327 -1.0
v 0.996134 0.087851 -1.0
v 0.994951 0.100362 -1.0
v 0.993611 0.112856 -1.0
v 0.992115 0.125333 -1.0
v 0.990461 0.137790 -1.0
v 0.988652 0.150226 -1.0
v 0.986686 0.162637 -1.0
v 0.984564 0.175023 -1.0
v 0.982287 0.187381 -1.0
v 0.979855 0.199710 -1.0
v 0.977268 0.212007 -1.0
v 0.974527 0.224271 -1.0
v 0.971632 0.236499 -1.0
v 0.968583 0.248690 -1.0
v 0.965382 0.260842 -1.0
v 0.962028 0.272952 -1.0
v 0.958522 0.285019 -1.0
v 0.954865 0.297042 -1.0
v 0.951057 0.309017 -1.0
v 0.947098 0.320944 -1.0
v 0.942991 0.332820 -1.0
v 0.938734 0.344643 -1.0
v 0.934329 0.356412 -1.0
v 0.929776 0.368125 -1.0
v 0.925077 0.379779 -1.0
v 0.920232 0.391374 -1.0
v 0.915241 0.402906 -1.0
v 0.910106 0.414376 -1.0
v 0.904827 0.425779 -1.0
v 0.899405 0.437116 -1.0
v 0.893841 0.448383 -1.0
v 0.888136 0.459580 -1.0
v 0.882291 0.470704 -1.0
v 0.876307 0.481754 -1.0
v 0.870184 0.492727 -1.0
v 0.863923 0.503623 -1.0
v 0.857527 0.514440 -1.0
v 0.850994 0.525175 -1.0
v 0.844328 0.535827 -1.0
v 0.837528 0.546394 -1.0
v 0.830596 0.556876 -1.0
v 0.823533 0.567269 -1.0
v 0.816339 0.577573 -1.0
v 0.809017 0.587785 -1.0
v 0.801567 0.597905 -1.0
v 0.793990 0.607930 -1.0
v 0.786288 0.617860 -1.0
v 0.778462 0.627691 -1.0
v 0.770513 0.637424 -1.0
v 0.762443 0.647056 -1.0
v 0.754251 0.656586 -1.0
v 0.745941 0.666012 -1.0
v 0.737513 0.675333 -1.0
v 0.728969 0.684547 -1.0
v 0.720309 0.693653 -1.0
v 0.711536 0.702650 -1.0
v 0.702650 0.711536 -1.0
v 0.693653 0.720309 -1.0
v 0.684547 0.728969 -1.0
v 0.675333 0.737513 -1.0
v 0.666012 0.745941 -1.0
v 0.656586 0.754251 -1.0
v 0.647056 0.762443 -1.0
v 0.637424 0.770513 -1.0
v 0.627691 0.778462 -1.0
v 0.617860 0.786288 -1.0
v 0.607930 0.793990 -1.0
v 0.597905 0.801567 -1.0
v 0.587785 0.809017 -1.0
v 0.577573 0.816339 -1.0
v 0.567269 0.823533 -1.0
v 0.556876 0.830596 -1.0
v 0.546394 0.837528 -1.0
v 0.535827 0.844328 -1.0
v 0.525175 0.850994 -1.0
v 0.514440 0.857527 -1.0
v 0.503623 0.863923 -1.0
v 0.492727 0.870184 -1.0
v 0.481754 0.876307 -1.0
v 0.470704 0.882291 -1.0
v 0.459580 0.888136 -1.0
v 0.448383 0.893841 -1.0
v 0.437116 0.899405 -1.0
v 0.425779 0.904827 -1.0
v 0.414376 0.910106 -1.0
v 0.402906 0.915241 -1.0
v 0.391374 0.920232 -1.0
v 0.379779 0.925077 -1.0
v 0.368125 0.929776 -1.0
v 0.356412 0.934329 -1.0
v 0.344643 0.938734 -1.0
v 0.332820 0.942991 -1.0
v 0.320944 0.947098 -1.0
v 0.309017 0.951057 -1.0
v 0.297042 0.954865 -1.0
v 0.285019 0.958522 -1.0
v 0.272952 0.962028 -1.0
v 0.260842 0.965382 -1.0
v 0.248690 0.968583 -1.0
v 0.236499 0.971632 -1.0
v 0.224271 0.974527 -1.0
v 0.212007 0.977268 -1.0
v 0.199710 0.979855 -1.0
v 0.187381 0.982287 -1.0
v 0.175023 0.984564 -1.0
v 0.162637 0.986686 -1.0
v 0.150226 0.988652 -1.0
v 0.137790 0.990461 -1.0
v 0.125333 0.992115 -1.0
v 0.112856 0.993611 -1.0
v 0.100362 0.994951 -1.0
v 0.087851 0.996134 -1.0
v 0.075327 0.997159 -1.0
v 0.062791 0.998027 -1.0
v 0.050244 0.998737 -1.0
v 0.037690 0.999289 -1.0
v 0.025130 0.999684 -1.0
v 0.012566 0.999921 -1.0
v 0.000000 1.000000 -1.0
v -0.012566 0.999921 -1.0
v -0.025130 0.999684 -1.0
v -0.037690 0.999289 -1.0
v -0.050244 0.998737 -1.0
v -0.062791 0.998027 -1.0
v -0.075327 0.997159 -1.0
v -0.087851 0.996134 -1.0
v -0.100362 0.994951 -1.0
v -0.112856 0.993611 -1.0
v -0.125333 0.992115 -1.0
v -0.137790 0.990461 -1.0
v -0.150226 0.988652 -1.0
v -0.162637 0.986686 -1.0
v -0.175023 0.984564 -1.0
v -0.187381 0.982287 -1.0
v -0.199710 0.979855 -1.0
v -0.212007 0.977268 -1.0
v -0.224271 0.974527 -1.0
v -0.236499 0.971632 -1.0
v -0.248690 0.968583 -1.0
v -0.260842 0.965382 -1.0
v -0.272952 0.962028 -1.0
v -0.285019 0.958522 -1.0
v -0.297042 0.954865 -1.0
v -0.309017 0.951057 -1.0
v -0.320944 0.947098 -1.0
v -0.332820 0.942991 -1.0
v -0.344643 0.938734 -1.0
v -0.356412 0.934329 -1.0
v -0.368125 0.929776 -1.0
v -0.379779 0.925077 -1.0
v -0.391374 0.920232 -1.0
v -0.402906 0.915241 -1.0
v -0.414376 0.910106 -1.0
v -0.425779 0.904827 -1.0
v -0.437116 0.899405 -1.0
v -0.448383 0.893841 -1.0
v -0.459580 0.888136 -1.0
v -0.470704 0.882291 -1.0
v -0.481754 0.876307 -1.0
v -0.492727 0.870184 -1.0
v -0.503623 0.863923 -1.0
v -0.514440 0.857527 -1.0
v -0.525175 0.850994 -1.0
v -0.535827 0.844328 -1.0
v -0.546394 0.837528 -1.0
v -0.556876 0.830596 -1.0
v -0.567269 0.823533 -1.0
v -0.577573 0.816339 -1.0
v -0.587785 0.809017 -1.0
v -0.597905 0.801567 -1.0
v -0.607930 0.793990 -1.0
v -0.617860 0.786288 -1.0
v -0.627691 0.778462 -1.0
v -0.637424 0.770513 -1.0
v -0.647056 0.762443 -1.0
v -0.656586 0.754251 -1.0
v -0.666012 0.745941 -1.0
v -0.675333 0.737513 -1.0
v -0.684547 0.728969 -1.0
v -0.693653 0.720309 -1.0
v -0.702650 0.711536 -1.0
v -0.711536 0.702650 -1.0
v -0.720309 0.693653 -1.0
v -0.728969 0.684547 -1.0
v -0.737513 0.675333 -1.0
v -0.745941 0.666012 -1.0
v -0.754251 0.656586 -1.0
v -0.762443 0.647056 -1.0
v -0.770513 0.637424 -1.0
v -0.778462 0.627691 -1.0
v -0.786288 0.617860 -1.0
v -0.793990 0.607930 -1.0
v -0.801567 0.597905 -1.0
v -0.809017 0.587785 -1.0
v -0.816339 0.577573 -1.0
v -0.823533 0.567269 -1.0
v -0.830596 0.556876 -1.0
v -0.837528 0.546394 -1.0
v -0.844328 0.535827 -1.0
v -0.850994 0.525175 -1.0
v -0.857527 0.514440 -1.0
v -0.863923 0.503623 -1.0
v -0.870184 0.492727 -1.0
v -0.876307 0.481754 -1.0
v -0.882291 0.470704 -1.0
v -0.888136 0.459580 -1.0
v -0.893841 0.448383 -1.0
v -0.899405 0.437116 -1.0
v -0.904827 0.425779 -1.0
v -0.910106 0.414376 -1.0
v -0.915241 0.402906 -1.0
v -0.920232 0.391374 -1.0
v -0.925077 0.379779 -1.0
v -0.929776 0.368125 -1.0
v -0.934329 0.356412 -1.0
v -0.938734 0.344643 -1.0
v -0.942991 0.332820 -1.0
v -0.947098 0.320944 -1.0
v -0.951057 0.309017 -1.0
v -0.954865 0.297042 -1.0
v -0.958522 0.285019 -1.0
v -0.962028 0.272952 -1.0
v -0.965382 0.260842 -1.0
v -0.968583 0.248690 -1.0
v -0.971632 0.236499 -1.0
v -0.974527 0.224271 -1.0
v -0.977268 0.212007 -1.0
v -0.979855 0.199710 -1.0
v -0.982287 0.187381 -1.0
v -0.984564 0.175023 -1.0
v -0.986686 0.162637 -1.0
v -0.988652 0.150226 -1.0
v -0.990461 0.137790 -1.0
v -0.992115 0.125333 -1.0
v -0.993611 0.112856 -1.0
v -0.994951 0.100362 -1.0
v -0.996134 0.087851 -1.0
v -0.997159 0.075327 -1.0
v -0.998027 0.062791 -1.0
v -0.998737 0.050244 -1.0
v -0.999289 0.037690 -1.0
v -0.999684 0.025130 -1.0
v -0.999921 0.012566 -1.0
v -1.000000 0.000000 -1.0
v -0.999921 -0.012566 -1.0
v -0.999684 -0.025130 -1.0
v -0.999289 -0.037690 -1.0
v -0.998737 -0.050244 -1.0
v -0.998027 -0.062791 -1.0
v -0.997159 -0.075327 -1.0
v -0.996134 -0.087851 -1.0
v -0.994951 -0.100362 -1.0
v -0.993611 -0.112856 -1.0
v -0.992115 -0.125333 -1.0
v -0.990461 -0.137790 -1.0
v -0.988652 -0.150226 -1.0
v -0.986686 -0.162637 -1.0
v -0.984564 -0.175023 -1.0
v -0.982287 -0.187381 -1.0
v -0.979855 -0.199710 -1.0
v -0.977268 -0.212007 -1.0
v -0.974527 -0.224271 -1.0
v -0.971632 -0.236499 -1.0
v -0.968583 -0.248690 -1.0
v -0.965382 -0.260842 -1.0
v -0.962028 -0.272952 -1.0
v -0.958522 -0.285019 -1.0
v -0.954865 -0.297042 -1.0
v -0.951057 -0.309017 -1.0
v -0.947098 -0.320944 -1.0
v -0.942991 -0.332820 -1.0
v -0.938734 -0.344643 -1.0
v -0.934329 -0.356412 -1.0
v -0.929776 -0.368125 -1.0
v -0.925077 -0.379779 -1.0
v -0.920232 -0.391374 -1.0
v -0.915241 -0.402906 -1.0
v -0.910106 -0.414376 -1.0
v -0.904827 -0.425779 -1.0
v -0.899405 -0.437116 -1.0
v -0.893841 -0.448383 -1.0
v -0.888136 -0.459580 -1.0
v -0.882291 -0.470704 -1.0
v -0.876307 -0.481754 -1.0
v -0.870184 -0.492727 -1.0
v -0.863923 -0.503623 -1.0
v -0.857527 -0.514440 -1.0
v -0.850994 -0.525175 -1.0
v -0.844328 -0.535827 -1.0
v -0.837528 -0.546394 -1.0
v -0.830596 -0.556876 -1.0
v -0.823533 -0.567269 -1.0
v -0.816339 -0.577573 -1.0
v -0.809017 -0.587785 -1.0
v -0.801567 -0.597905 -1.0
v -0.793990 -0.607930 -1.0
v -0.786288 -0.617860 -1.0
v -0.778462 -0.627691 -1.0
v -0.770513 -0.637424 -1.0
v -0.762443 -0.647056 -1.0
v -0.754251 -0.656586 -1.0
v -0.745941 -0.666012 -1.0
v -0.737513 -0.675333 -1.0
v -0.728969 -0.684547 -1.0
v -0.720309 -0.693653 -1.0
v -0.711536 -0.702650 -1.0
v -0.702650 -0.711536 -1.0
v -0.693653 -0.720309 -1.0
v -0.684547 -0.728969 -1.0
v -0.675333 -0.737513 -1.0
v -0.666012 -0.745941 -1.0
v -0.656586 -0.754251 -1.0
v -0.647056 -0.762443 -1.0
v -0.637424 -0.770513 -1.0
v -0.627691 -0.778462 -1.0
v -0.617860 -0.786288 -1.0
v -0.607930 -0.793990 -1.0
v -0.597905 -0.801567 -1.0
v -0.587785 -0.809017 -1.0
v -0.577573 -0.816339 -1.0
v -0.567269 -0.823533 -1.0
v -0.556876 -0.830596 -1.0
v -0.546394 -0.837528 -1.0
v -0.535827 -0.844328 -1.0
v -0.525175 -0.850994 -1.0
v -0.514440 -0.857527 -1.0
v -0.503623 -0.863923 -1.0
v -0.492727 -0.870184 -1.0
v -0.481754 -0.876307 -1.0
v -0.470704 -0.882291 -1.0
v -0.459580 -0.888136 -1.0
v -0.448383 -0.893841 -1.0
v -0.437116 -0.899405 -1.0
v -0.425779 -0.904827 -1.0
v -0.414376 -0.910106 -1.0
v -0.402906 -0.915241 -1.0
v -0.391374 -0.920232 -1.0
v -0.379779 -0.925077 -1.0
v -0.368125 -0.929776 -1.0
v -0.356412 -0.934329 -1.0
v -0.344643 -0.938734 -1.0
v -0.332820 -0.942991 -1.0
v -0.320944 -0.947098 -1.0
v -0.309017 -0.951057 -1.0
v -0.297042 -0.954865 -1.0
v -0.285019 -0.958522 -1.0
v -0.272952 -0.962028 -1.0
v -0.260842 -0.965382 -1.0
v -0.248690 -0.968583 -1.0
v -0.236499 -0.971632 -1.0
v -0.224271 -0.974527 -1.0
v -0.212007 -0.977268 -1.0
v -0.199710 -0.979855 -1.0
v -0.187381 -0.982287 -1.0
v -0.175023 -0.984564 -1.0
v -0.162637 -0.986686 -1.0
v -0.150226 -0.988652 -1.0
v -0.137790 -0.990461 -1.0
v -0.125333 -0.992115 -1.0
v -0.112856 -0.993611 -1.0
v -0.100362 -0.994951 -1.0
v -0.087851 -0.996134 -1.0
v -0.075327 -0.997159 -1.0
v -0.062791 -0.998027 -1.0
v -0.050244 -0.998737 -1.0
v -0.037690 -0.999289 -1.0
v -0.025130 -0.999684 -1.0
v -0.012566 -0.999921 -1.0
v -0.000000 -1.000000 -1.0
v 0.012566 -0.999921 -1.0
v 0.025130 -0.999684 -1.0
v 0.037690 -0.999289 -1.0
v 0.050244 -0.998737 -1.0
v 0.062791 -0.998027 -1.0
v 0.075327 -0.997159 -1.0
v 0.087851 -0.996134 -1.0
v 0.100362 -0.994951 -1.0
v 0.112856 -0.993611 -1.0
v 0.125333 -0.992115 -1.0
v 0.137790 -0.990461 -1.0
v 0.150226 -0.988652 -1.0
v 0.162637 -0.986686 -1.0
v 0.175023 -0.984564 -1.0
v 0.187381 -0.982287 -1.0
v 0.199710 -0.979855 -1.0
v 0.212007 -0.977268 -1.0
v 0.224271 -0.974527 -1.0
v 0.236499 -0.971632 -1.0
v 0.248690 -0.968583 -1.0
v 0.260842 -0.965382 -1.0
v 0.272952 -0.962028 -1.0
v 0.285019 -0.958522 -1.0
v 0.297042 -0.954865 -1.0
v 0.309017 -0.951057 -1.0
v 0.320944 -0.947098 -1.0
v 0.332820 -0.942991 -1.0
v 0.344643 -0.938734 -1.0
v 0.356412 -0.934329 -1.0
v 0.368125 -0.929776 -1.0
v 0.379779 -0.925077 -1.0
v 0.391374 -0.920232 -1.0
v 0.402906 -0.915241 -1.0
v 0.414376 -0.910106 -1.0
v 0.425779 -0.904827 -1.0
v 0.437116 -0.899405 -1.0
v 0.448383 -0.893841 -1.0
v 0.459580 -0.888136 -1.0
v 0.470704 -0.882291 -1.0
v 0.481754 -0.876307 -1.0
v 0.492727 -0.870184 -1.0
v 0.503623 -0.863923 -1.0
v 0.514440 -0.857527 -1.0
v 0.525175 -0.850994 -1.0
v 0.535827 -0.844328 -1.0
v 0.546394 -0.837528 -1.0
v 0.556876 -0.830596 -1.0
v 0.567269 -0.823533 -1.0
v 0.577573 -0.816339 -1.0
v 0.587785 -0.809017 -1.0
v 0.597905 -0.801567 -1.0
v 0.607930 -0.793990 -1.0
v 0.617860 -0.786288 -1.0
v 0.627691 -0.778462 -1.0
v 0.637424 -0.770513 -1.0
v 0.647056 -0.762443 -1.0
v 0.656586 -0.754251 -1.0
v 0.666012 -0.745941 -1.0
v 0.675333 -0.737513 -1.0
v 0.684547 -0.728969 -1.0
v 0.693653 -0.720309 -1.0
v 0.702650 -0.711536 -1.0
v 0.711536 -0.702650 -1.0
v 0.720309 -0.693653 -1.0
v 0.728969 -0.684547 -1.0
v 0.737513 -0.675333 -1.0
v 0.745941 -0.666012 -1.0
v 0.754251 -0.656586 -1.0
v 0.762443 -0.647056 -1.0
v 0.770513 -0.637424 -1.0
v 0.778462 -0.627691 -1.0
v 0.786288 -0.617860 -1.0
v 0.793990 -0.607930 -1.0
v 0.801567 -0.597905 -1.0
v 0.809017 -0.587785 -1.0
v 0.816339 -0.577573 -1.0
v 0.823533 -0.567269 -1.0
v 0.830596 -0.556876 -1.0
v 0.837528 -0.546394 -1.0
v 0.844328 -0.535827 -1.0
v 0.850994 -0.525175 -1.0
v 0.857527 -0.514440 -1.0
v 0.863923 -0.503623 -1.0
v 0.870184 -0.492727 -1.0
v 0.876307 -0.481754 -1.0
v 0.882291 -0.470704 -1.0
v 0.888136 -0.459580 -1.0
v 0.893841 -0.448383 -1.0
v 0.899405 -0.437116 -1.0
v 0.904827 -0.425779 -1.0
v 0.910106 -0.414376 -1.0
v 0.915241 -0.402906 -1.0
v 0.920232 -0.391374 -1.0
v 0.925077 -0.379779 -1.0
v 0.929776 -0.368125 -1.0
v 0.934329 -0.356412 -1.0
v 0.938734 -0.344643 -1.0
v 0.942991 -0.332820 -1.0
v 0.947098 -0.320944 -1.0
v 0.951057 -0.309017 -1.0
v 0.954865 -0.297042 -1.0
v 0.958522 -0.285019 -1.0
v 0.962028 -0.272952 -1.0
v 0.965382 -0.260842 -1.0
v 0.968583 -0.248690 -1.0
v 0.971632 -0.236499 -1.0
v 0.974527 -0.224271 -1.0
v 0.977268 -0.212007 -1.0
v 0.979855 -0.199710 -1.0
v 0.982287 -0.187381 -1.0
v 0.984564 -0.175023 -1.0
v 0.986686 -0.162637 -1.0
v 0.988652 -0.150226 -1.0
v 0.990461 -0.137790 -1.0
v 0.992115 -0.125333 -1.0
v 0.993611 -0.112856 -1.0
v 0.994951 -0.100362 -1.0
v 0.996134 -0.087851 -1.0
v 0.997159 -0.075327 -1.0
v 0.998027 -0.062791 -1.0
v 0.998737 -0.050244 -1.0
v 0.999289 -0.037690 -1.0
v 0.999684 -0.025130 -1.0
v 0.999921 -0.012566 -1.0
+22
View File
@@ -0,0 +1,22 @@
<mujoco>
<visual>
<headlight ambient=".4 .4 .4" diffuse=".8 .8 .8" specular=".1 .1 .1"/>
<scale forcewidth="0.01" contactwidth="0.05" contactheight="0.05"/>
<map force="0.1"/>
</visual>
<asset>
<mesh file="cone.obj"/>
<texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="512" height="512"/>
</asset>
<worldbody>
<light pos="1 -1 1.5" dir="-1 1 -1.5" diffuse=".7 .7 .7"/>
<light pos="-1 1 1.5" dir="1 -1 -1.5" diffuse=".4 .4 .4"/>
<geom type="box" size="1 1 .3" pos="0 0 -.3" rgba=".3 .3 .3 1"/>
<body pos="0 0 1">
<freejoint/>
<geom type="mesh" mesh="cone" rgba=".7 .7 .7 1"/>
</body>
</worldbody>
</mujoco>