6 ms·
Tinyphysicsengine: Minimalist 3D C99 single-header physics engine
- gatane 4y agoThis is from the same guy who wrote raycastlib, anarch and SAF. https://gitlab.com/drummyfish/raycastlib https://gitlab.com/drummyfish/raycastlib https://drummyfish.gitlab.io/anarch/ https://drummyfish.gitlab.io/anarch/ https://codeberg.org/drummyfish/SAF https://codeberg.org/drummyfish/SAF
- _yb2s 4y agoCool projects. This guy makes RMS seem like a sell out / conformist.
- deleted 4y ago[deleted]
- sdmike1 4y ago
- yellowapple 4y agoDamn, you weren't kidding lol Hopefully in his RMS-emulation speedrun he changes his mind on that like RMS did.
- throwaway22820 4y ago
- zxexz 4y ago
- bowsamic 4y ago
- deleted 4y ago[deleted]
- wtfiswrongwu 4y ago
- bowsamic 4y ago
- drummyfish 4y agothank you for mentioning my other projects, for completeness I will shamelessly add https://codeberg.org/drummyfish/small3dlib https://codeberg.org/drummyfish/small3dlib https://codeberg.org/drummyfish/smallchesslib https://codeberg.org/drummyfish/smallchesslib
- merlincorey 4y agoThis is brilliant work and I think their soft-body model is pretty simple and understandable why it "works": > The basic principles in short: TPE uses soft body physics, bodies are modelled as spheres connected by springs but the springs can be made stiff so that the bodies behave almost like rigid bodies, so you can simulate (fake) both soft and rigid physics. Environment in which bodies are placed is modelled by distance functions, i.e. you can in theory create any environment as long as you can create a function that for any point in space returns the closest point to the environment (functions for basic and some more complex shapes are included in TPE).
- meheleventyone 4y agoYou’ll love this then, using a similar mass-spring approach to model vehicle dynamics in a PS1 game: https://youtu.be/pwbwFdWBkU0 https://youtu.be/pwbwFdWBkU0 There’s a bunch of similar stuff with varying degrees of physical accuracy under Position Based Dynamics and the more physically correct eXtended Position Based dynamics. It’s a fun approach.
- badsectoracula 4y agoSome years ago i experimented with using springs for game physics[0] but while it looked nice with a single dynamic object against a static environment, collisions between dynamic objects quickly fell apart - objects intersected each other in weird ways and something as simple as stacking two boxes with imperfect placement (like a player would do, not the perfect stacking shown in the GIFs in the linked page) wasn't possible. I did consider using convex volumes for the collision mesh and making checks against the spring ends (point-in-convex is trivial to check) but then i realized that in 3D space convex objects can collide even if both have their vertices outside of each other (consider two cubes that are not aligned to each other having two of their edges touch with one edge being almost perpendicular to the other). The code was already getting too hairy and at that point might as well drop the whole spring idea and do full convex shape collisions with rotation (big can of worms). Though truth be told, the simplicity of using just springs and spheres is alluring and the issues might be solvable with a large number of spheres (IIRC Nvidia at some point years ago had a physics engine running on GPU where they modeled everything using small spheres). It does help avoid a bunch of stupid bugs that you can easily get with trying to do angular physics [1] :-P [0] https://www.youtube.com/watch?v=_dnveLj96xQ https://www.youtube.com/watch?v=_dnveLj96xQ [1] https://i.imgur.com/UVS4TYv.gif https://i.imgur.com/UVS4TYv.gif
- anthk 4y ago
- dekken_ 4y ago> Also, fusion based energy will get a boost. A boost in funding, or a boost in output? The latter is so uncertain you shouldn't be speaking like this.
- aaaaaaaaaaab 4y agoWhat is this comment about?
- dekken_ 4y agoI assume https://www.tastyfish.cz/ https://www.tastyfish.cz/
- matheusmoreira 4y agoWhat an interesting person. I don't agree with about half of it but I respect the courage to act on those beliefs. Looks like the software is in public domain, for example.
- wtfiswrongwu 4y ago
- 4y ago
- amelius 4y ago
- yuzuquat 4y agoaren’t games made “for entertainment purposes” by definition? :P
- keepquestioning 4y agoCan this be done in OpenCL?
- deleted 4y ago[deleted]
- hwers 4y agoSeems really useful in a wasm context
- amir734jj 4y agoimpress girls by showing them 3D physics running on embedded devices
- FeepingCreature 4y agoPlease stop making "header only libraries": they're nontrivial to bind to from non-C languages. You have to basically either split them up yourself or embed a C compiler in your compiler. See the top part of the header file, where all the function and type declarations are? That's the header. Just move everything below it to a c file.
- pjmlp 4y agoI really don't get this trend of using C and C++ as "scripting" languages, what a laziness to learn how to work with compilers.
- esrauch 4y agoIt turns out that regular libraries are nontrivial to use from C though, due to no standardized build system. Should a C library optimize for usage from C or non-C languages?
- deleted 4y ago[deleted]
- whateveracct 4y agoHm in Haskell I prefer single-header. I can just copy it into my repo and it Just Works. I guess Haskell does have really good C interop. Both the FFI and hsc2hs make for seamless interop. It even understands pkg-config - it doesn't embed anything in the compiler though. Just understands the ecosystem. It's to the point where I consider C a DSL you can use.
- kevin_thibedeau 4y agoThis is a C++-ism that has no place in C (and overused in C++).
- pjmlp 4y agoEven on C++, regardless of templates, most code doesn't need to be header only, other than laziness to properly learn how to work with compilers and build systems.
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- atan2 4y agoI absolutely love the approach, the code, and the motivation. Unfortunately, some things I read in the 'about me' page makes me worry about the author's future.
- fartsucker69 4y agothe page is somewhat sad. seems like an individual with a lot of forward looking and upbeat views on the world, but completely lacking a whole lot of perspective, some basic education regarding economics. and well, the pedophilia thing. he self-describes as non-competitive so probably doesn't care, but he could simply be so much more, as a person, and all the ingredients are there. but likely will waste away most of their life as a (in the best case) relatively benign weirdo. but they are likely in a social situation where nobody will give them that perspective and education. and society certainly isn't set up to detect and help these people on its own.
- zxexz 4y agoI wonder why all the comments pointing this out are getting flagged. I don’t think it’s anything malicious, maybe an edge case in HN’s moderation system. Anyway, I agree, excellent code, but I worry about this guy. His website(s) have a lot of worrying content - pro-pedophilia, misogynistic, racist, transphobic.
- klaussilveira 4y agoI was looking for a tiny physics library for a DC homebrew project and this might be it. Thanks!
- drummyfish 4y agoSomeone pointed out to me my library made it to HN, thanks to everyone for taking interest, it brightened my day to see some of you starred the library as this has been completely unexpected, I greatly appreciate it (trust me, I don't have much other joy in life than seeing someone like my projects). To be honest, I am actually not as satisfied with TPE as I've been with some of my other projects, mainly because this was really my first 3D physics engine and I lack a deep knowledge of this field, here and there I used a few not so elegant hacks, but I see TPE as a successful proof of concept that tells me a real expert on physics simulation could make a truly amazing library in this style, and it wouldn't even take as much effort as it took me. I certainly hope this might inspire someone to try to prove that "this can be done better" :) I would definitely love to see more people jump on the KISS train and make a library like this in whatever their field of expertise is (chess engine, machine learning, image processing, ...) -- there is an abundance of mainstream (big/bloated) libraries for basically everything nowadays, but almost no "KISS" alternatives to them, there are tons of opportunities for making something really nice here. And yes, I also have controversial opinions that I know look very scary, I wouldn't really like to discuss that here because that could kill the thread and it's hugely offtopic, let me just assure you I firmly believe in nonviolence, peace and I want to help all humans equally, be it with my programming or otherwise. For any questions I can be reached via email, I'll be glad to talk about anything. Once again thank you for your nice feedback.
- joshspankit 4y agoDouble points for “no floating point” I wish all 3D engines threw out floats.