{"id":302,"date":"2026-03-19T14:04:33","date_gmt":"2026-03-19T14:04:33","guid":{"rendered":"https:\/\/pbraudio.org\/?page_id=302"},"modified":"2026-05-27T16:28:50","modified_gmt":"2026-05-27T16:28:50","slug":"physicssolver","status":"publish","type":"page","link":"https:\/\/pbraudio.org\/index.php\/physicssolver\/","title":{"rendered":"physicsSolver"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\"><strong>Physical dynamics<\/strong> <strong>reverse-engineer engine.<\/strong><\/h1>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h1 class=\"wp-block-heading\" style=\"font-size:24px\"><strong><em>physicsSolver<\/em><\/strong> is the engine behind pbrAudioShaders and pbrAudioRender. It takes your 3D animation sequences and reconstructs the hidden physics, like forces, collisions and contact events, that standard frame rates miss. The output is audio-force data that drives physically-based sound synthesis, bringing your animations to life with physically based audio.<\/h1>\n\n\n\n<div style=\"height:80px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h1 class=\"wp-block-heading has-text-align-left\">Why <strong><em>physicsSolver<\/em><\/strong>?<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\" style=\"font-size:24px\">3D animations are typically rendered at 24 or 30 frames per second. That&#8217;s fine for visuals, but audio needs far more detail. A collision or scraping sound happens in milliseconds the details are lost between frames.<\/h1>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns mlrg-reverse-mobile is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/physicsMotionPath.png\" alt=\"\" class=\"wp-image-1012\" style=\"object-fit:cover;width:1200px;height:180px\" srcset=\"https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/physicsMotionPath.png 1920w, https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/physicsMotionPath-300x169.png 300w, https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/physicsMotionPath-1024x576.png 1024w, https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/physicsMotionPath-768x432.png 768w, https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/physicsMotionPath-1536x864.png 1536w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<h1 class=\"wp-block-heading\" style=\"font-size:24px\"><em><strong>physicsSolver<\/strong><\/em> bridges this gap by analyzing motion as a continuous signal, not discrete frames, detecting collisions at sub-frame precision.<\/h1>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<h1 class=\"wp-block-heading\" style=\"font-size:24px\"><em><strong>physicsSolver<\/strong><\/em> generate audio-force data from the reconstructed forces that occurred <em>between<\/em> your animation frames that pbrAudioShaders engines use to synthetize realistic sounds.<\/h1>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1896\" height=\"465\" src=\"https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/Screenshot-from-2026-05-27-18-23-42-e1779899302950.png\" alt=\"\" class=\"wp-image-1016\" style=\"object-fit:cover;width:1200px;height:180px\" srcset=\"https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/Screenshot-from-2026-05-27-18-23-42-e1779899302950.png 1896w, https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/Screenshot-from-2026-05-27-18-23-42-e1779899302950-300x74.png 300w, https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/Screenshot-from-2026-05-27-18-23-42-e1779899302950-1024x251.png 1024w, https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/Screenshot-from-2026-05-27-18-23-42-e1779899302950-768x188.png 768w, https:\/\/pbraudio.org\/wp-content\/uploads\/2026\/05\/Screenshot-from-2026-05-27-18-23-42-e1779899302950-1536x377.png 1536w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h1 class=\"wp-block-heading\">How It Works<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\" style=\"font-size:24px\">Think of <strong><em>physicsSolver<\/em><\/strong> as a forensic physicist for your scene. It takes your animation frames and asks: What happened in the gaps?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:24px\"><br><em>Detect the Invisible<\/em>: It finds the exact moments of impact, rolling, scraping, and sliding that standard frame rates miss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:24px\"><br><em>Reconstruct the Forces<\/em>: Using the physics laws and Hertzian contact theory, it calculates the forces, contact geometry, and material interactions at each event.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:24px\"><br><em>Generate Audio-Force Track<\/em>s: It synthesizes continuous, high-resolution force signals (impact envelopes, friction noise, rolling textures) as 32-bit float RAW audio files.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:24px\"><br><em>Create a Contact Score<\/em>: Every collision, scrape, and slide is logged in a structured timeline, ready for the pbrAudioShaders synthesis engines.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" style=\"font-size:24px\">Need Help?<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\" style=\"font-size:24px\">For questions or issues, please open an issue in the repository.<\/h1>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons is-horizontal is-content-justification-center is-nowrap is-layout-flex wp-container-core-buttons-is-layout-60eede3f wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-text-align-center wp-element-button\" href=\"https:\/\/github.com\/Malcom3D\/pbrAudioRender\/releases\" target=\"_blank\" rel=\"noreferrer noopener\">Download<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/Malcom3D\/pbrAudioShaders\/tree\/main\/src\/physicsSolver\" target=\"_blank\" rel=\"noreferrer noopener\">Get Source<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Physical dynamics reverse-engineer engine. physicsSolver is the engine behind pbrAudioShaders and pbrAudioRender. It takes your 3D animation sequences and reconstructs the hidden physics, like forces, collisions and contact events, that standard frame rates miss. The output is audio-force data that drives physically-based sound synthesis, bringing your animations to life with physically based audio. Why physicsSolver? &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/pbraudio.org\/index.php\/physicssolver\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;physicsSolver&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-302","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/pbraudio.org\/index.php\/wp-json\/wp\/v2\/pages\/302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pbraudio.org\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pbraudio.org\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pbraudio.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pbraudio.org\/index.php\/wp-json\/wp\/v2\/comments?post=302"}],"version-history":[{"count":58,"href":"https:\/\/pbraudio.org\/index.php\/wp-json\/wp\/v2\/pages\/302\/revisions"}],"predecessor-version":[{"id":1018,"href":"https:\/\/pbraudio.org\/index.php\/wp-json\/wp\/v2\/pages\/302\/revisions\/1018"}],"wp:attachment":[{"href":"https:\/\/pbraudio.org\/index.php\/wp-json\/wp\/v2\/media?parent=302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}