SIGGRAPH 2020 Technical Paper: N-Dimensional Rigid Body Dynamics

Excited to announce that my technical paper “N-Dimensional Rigid Body Dynamics” was accepted to SIGGRAPH 2020! Very proud to present research developed for 4D Toys & Miegakure at such a prestigious conference.

Here is the link to the paper and the abstract:

I present a formulation for Rigid Body Dynamics that is independent of the dimension of the space. I describe the state and equations of motion of rigid bodies using geometric algebra. Using collision detection algorithms extended to nD I resolve collisions and contact between bodies. My implementation is 4D, but the techniques described here apply to any number of dimensions. I display these four-dimensional rigid bodies by taking a three-dimensional slice through them. I allow the user to manipulate these bodies in real-time.

Btw I believe it is basically unheard of to have work from an indie game presented in the SIGGRAPH technical papers track?

The paper is full of really fun and beautiful math (obviously Geometric Algebra based, see my recent article) that makes me happy. One reviewer called the work “whimsical,” and they’re not wrong, ahah.

Most of this work (including writing the paper) is from ~2012, but I added a section on the (4D) Dzhanibekov effect at the suggestion of the reviewers. Many thanks to them for helping me greatly improve the paper.

25 Responses to “SIGGRAPH 2020 Technical Paper: N-Dimensional Rigid Body Dynamics”

  1. Sam says:

    Very cool!

    I’m also very curious about that Dzh… effect, and how it looks in 4D!

    • marc says:

      Yeah, the issue is that I could do entire videos on so many things like that it becomes overwhelming…

      • Mediocritus says:

        Speaking of which, thank you immensely for doing the video on GA and rotors! SO many seemingly contrived concepts like determinants and cross products suddenly have a natural and visual motivation.

        I don’t know how someone like 3Blue1Brown dude can keep up with life, work, and such a video production schedule as what he has, because it is clear putting together such a video (and accompanying article, and fancy interactive widgets) is an entire project in itself. We don’t expect you to do all things, especially when Miegakure alone is a lifetime achievement award already.

        Anyway, yours was one of the gentlest and most accessible introductions, and I appreciate especially all the detail in the “Asides” where needed, e.g. derivation of the double reflection formula and history.

        Please:

        – stay careful and safe during the Covid pandemic
        – get exercise and eat fruits and vegetables
        – reach out to friends and us random internet fans if you ever need to bounce thoughts off us, whether about Miegakure or otherwise (don’t let that monumental project weigh on you alone, that’s too much pressure / expectation)

        Basically take care!

  2. Sid_Cypher says:

    Congratulations! Independent applied research feels refreshingly different from many other papers, probably due to the lack of the usual “publish or perish” pressure or similar strong constraints.

    As a mere comp.sci graduate, I find the paper both accessible and inviting to delve deeper into the topic. Thanks!

  3. Pelle says:

    Wow! Inspiring work, thanks for sharing

  4. zippee100 says:

    Congrats marc! Keep up the good work!

  5. A. Ray says:

    I’m curious about the choice of rendering in the video.

    (Possible my intuitions here are wrong, I haven’t worked out the points on paper. Also I’m a graphics amateur.)

    If I imagine rendering a 3d object (cube) on a computer screen, two mechanisms come to mind:
    1) “slice” the 3d object with a 2d plane and view the slice
    2) “project” parallel rays from far away, and render the surface they come into contact with

    I think my intuition is we usually use (2) for drawing 3d objects on computer screens, and my intuition is the video uses something closer to (1).

    Is it possible to do (2) for 4d spaces? Is there something else entirely?

    In any case, I love the result! Hope to see more things using this!

    • Sam says:

      (2) Is quite common. Whenever you see a hypercube demonstrated as a little cube inside a bigger cube, that’s (2) rendering. Unfortunately this doesn’t handle complexity well before it starts getting confusing. It also doesn’t have simple answers for how you handle things like curved surfaces and occlusions. I hope that Marc implements a view like this for miegakure, if only to demonstrate just how complex his game is

  6. Paradox says:

    This is fascinating!

    I wonder, would it be possible to do a 4D -> 3D projection (like how 3D is projected to 2D for screens and print) to show more of what is happening outside the current 3D cross section?

    • Sam says:

      It’s not only possible, but it is common. Almost every rendering of a hypercube that looks like a small cube inside of a larger cube is this kind of projection. The smaller cube is merely further away from the viewer in the 4th dimension. I don’t know how a complex world like Miegakure would look like with this… I feel like it would be overwhelming.

  7. Severin Pappadeux says:

    Do you plan to put it on arxiv?

  8. Gabriel says:

    Hey Marc. 4D Toys really helped me understand what a 4D hyperspace would look like and I’m curious how the game development of Miegakure is going. I even did some drawings in which I depict a cube and a tesseract, a 3D being field of view and a 4D being one, 3D paper and a cube rotating in hyperspace, and I want to know if I interpreted them correctly. (Maybe you can use the 4D being ”field of view” in your future projects, maybe even in Miegakure.)

    https://prnt.sc/sgbmxi (Cube and tesseract)
    https://prnt.sc/sgbnik (3D and 4D being field of view)
    https://prnt.sc/sgbnzy (3D paper)
    https://prnt.sc/sgbo96 (Cube rotating in hyperspace)

    Anyways, I appreciate your effort to create such ”exotic” games like Miegakure. Regards.

    • Sam says:

      Hey Gabriel!

      Your tesseract and cube renderings are spot on! I’m not sure about your sunset/road image, there’s something odd about the sun being drawn over the horizon plane, but I could be wrong. I love the 3D piece of paper, this is one of my favourite things to imagine, along with 4D books.

  9. Gabriel says:

    Hi Marc! 4D Toys really helped me, along with projection methods, to understand 4D space better. I have done some images which depict different situations taking place in a 4D world, for example a cube rotating along the W axis and a 4D being field of view, and I hope they are correct (maybe you can use the 4D field of view thing in future projects, maybe even in Miegakure). Anyways, I really appreciate your work, and the thing that you bring such ‘exotic’ games. It is truly inspiring, and made me somewhat fall in love with the language of mathematics and abstract geometry. Regards.

    https://prnt.sc/sihryz – Cube/Hypercube in perspective
    https://prnt.sc/sihshb – 3D/4D being field of view
    https://prnt.sc/sihsqq – 2D/3D paper sheet
    https://prnt.sc/siht3v – Rotating square/cube along the z/w axis

  10. ColorCurious says:

    Marc,

    Forgive my potential ignorance, but is there a way that the 4th dimension could be projected onto the third dimension, similar to how we project 3-dimensions onto 2d space?

    In n-dimensional space, we actually have extra dimensions (they are not spatial though) due to sensory input. There’s sound, light, etc.

    It seems to me that we should be able to project 4D onto 3D by the use of color or possibly even space-warping somehow. I’m not sure how though, just an intuitive hunch while watching your videos. For example, I could see projecting 3D onto 2D by perhaps having a depth map projected onto the 2D surface by colorization. Giving more color and saturation to something that has a greater volume. You’d be able to “see” the 3D projection even strictly within a 2D space. It’s a different type of projection than spatial without this kind of depth mapping, in that the layers which would normally be hidden due to being obfuscated by other surfaces could still be made visible.

    I realize you’re already dedicated to solidifying the space itself, so this may be a lesser concern to you, but have you given any thought into this? Are there any intuitive or creative ways to project 4D onto 3D space?

    • marc says:

      I want to talk about this more, maybe in a video, but the short version is: Even if you project a 4D object to “just” 3D, your eye then projects it to 2D. So really you are doing a 4D -> 2D projection, and so things overlap very quickly to the point it is very hard to understand.

  11. Zach says:

    Congratulations!

  12. Sam says:

    I’m becoming curious about fluid dynamics in 4D space. Part of me thinks that the fluid situation is already so chaotic in 3D. “Unsolvable” to use the mathematical term, that a 4D solution is even further out of the realm of possible for a direct extrapolation.

    Marc, have you given some thought to this?

  13. Erick Weil says:

    Hello. I saw first in Two Minute Papers youtube channel, very cool indeed, congratulations for you paper publish.

    Do you have interest in a way to generate 4d surfaces using distance estimator functions? like Inigo Quilez does in 3d.

    I’ve implemented a algorithm that generalizes the idea of Dual Countouring of Hermite Data by Tao Ju from Rice University to 4 spatial dimentions. So i’m able to generate arbitrary complicated surfaces from distance estimators and CSG operations on then (Union, Intersection and Subtraction). See this video showing a (very low quality) demo: https://www.youtube.com/watch?v=wz7_SphKbpQ.

    The main difference between Dual Contour and Marching cubes is that Dual Contour allow sharp features in the resulting mesh, like the edges of a cube, while Marching cubes generates only smooth surfaces, needing very high quality grids to make detailed looking things. Also Dual Contour allows grid simplification and maybe solid multi material meshes( Not implemented ).

    This is the first iteration, so much can be done to improve it. The key part of Dual Contouring which is the solving of the QEF could be adressed in better ways, but the matrix math is just on another level. Also Octree (should i say 16-tree) simplification is something that could help to make high quality meshes without killing performance.

    The idea of this method is to edit and create a mesh using those CSG operations and distance funcions, then output a normal 4D mesh, which can be used the same way as others. Realtime editing is not feasible for high quality grids, thats why is such poor looking video.

    I know that maybe this can be useless, but i swear it helps in drawing smooth terrain and organic looking shapes in Four dimentions.

  14. Sager Chinkoe says:

    Hello, i quite like your project and im really interested in this topic. I am currently making a school project about the fourth dimension and I was really intrigued by your project so I had a question about it.
    What was your initial inspiration to start working on the game? and what inspired you to start working with a fourth dimension?

    Anyway im looking forward to your game.