How to use: Change the values on the sliders, press "Update Pattern". Wait a few seconds and a new pattern will be rendered.
Suggestion: Run the software locally for a smoother and faster usage.
In Skrodzki et al. 2016 [1], the authors described the generation of 3D Chladni patterns. These are visually striking and find rich applications, e.g., in architecture or instrument design. While the paper shows several renderings, no open-source implementation is available. The project aims to create a web application that allows users to render and export their Chladni patterns. This will involve, e.g., handling implicit surface descriptions and the marching cubes algorithm. Ideally, the tool will enable researchers to investigate the relationship between Chladnis figures and eigenfunctions and help in answering the question of whether there are two different 3D shapes with the same Chladni figures (along the lines of the “Hear the shape of a drum” paper for 2D shapes).
Prerequisites: No strict prerequisites, knowledge of 3D web development / JavaScript / HTML5 is a bonus.
- cd ./chladni
- (node.js installation) (brew install node (for Mac))
- npm install (installs dependencies of node.js)
- (conda installation)
- conda env create -f environment.yml
- conda activate chladni
- cd ./chladni
- conda activate chladni
- python manage.py runserver
- open http://127.0.0.1:8000/ in your browser
In case you would like to render the Chladni surface in ShaderToy, an implementation can be found here based on an existing marching cubes implementation[4].
To apply your custom variable values to the shadertoy, perform the following:
Change the resolution according to your screen resolution in the "Common" tab of the shader program. You can see your viewer resolution in shadertoy. If you are using fullscreen to view the shader, instead put in your actual screen resolution. So for a viewer of resolution 768 x 432
, the resolution variables will be typed as follows:
These changes ensure you view the function in the bounds of (-1,-1,-1)
to (1,1,1)
To change variables for the resulting Chladni figure, go to "Buffer B" tab of the shader program.
In the tab, the map
function performs the calculation of the value of the pattern at a point in space. Here you can change the following variables to map your output in the webviewer.
To change boundary condition, change the value of type to either 0.0 for Dirichlet boundary condition or 1.0 for Neumann boundary condition for the function.
- [1] Chladni Figures Revisited: A Peek Into The Third Dimension, Martin Skrodzki, Ulrich Reitebuch, and Konrad Polthier
- [2] Marching Cubes ThreeJS
- [3] Chladni Figures: A Mathematical Exploration of Visual Music
- [4] Marching Cubes on Shader Toy
This project was made during the 6th week of the MIT SGI program in 2024 by SGI Fellows Nicolas Pigadas, Sachin Arvind Kishan and Bethlehem Tassew under the mentorship of Martin Skrodzki and teaching assistance of Alberto Tono. We are thankful to our mentors and the program for this opportunity.