Readit News logoReadit News
merlincorey · 3 years ago
This 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 · 3 years ago
You’ll love this then, using a similar mass-spring approach to model vehicle dynamics in a PS1 game: 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 · 3 years ago
Some 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

[1] https://i.imgur.com/UVS4TYv.gif

gatane · 3 years ago
UniverseHacker · 3 years ago
Cool projects. This guy makes RMS seem like a sell out / conformist.

Deleted Comment

drummyfish · 3 years ago
thank you for mentioning my other projects, for completeness I will shamelessly add

https://codeberg.org/drummyfish/small3dlib

https://codeberg.org/drummyfish/smallchesslib

Dead Comment

Dead Comment

Dead Comment

drummyfish · 3 years ago
Someone 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.
atan2 · 3 years ago
I 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 · 3 years ago
the 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 · 3 years ago
I 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 · 3 years ago
I was looking for a tiny physics library for a DC homebrew project and this might be it. Thanks!
hwers · 3 years ago
Seems really useful in a wasm context
keepquestioning · 3 years ago
Can this be done in OpenCL?
dekken_ · 3 years ago
You can do physics/computations in OpenCL, but not the graphics part
pjmlp · 3 years ago
Kind of, you could render to buffer and use it as texture for drawing, like in the old blitter days, and that is an approach being used by some rendering solutions like OTOY.
joshspankit · 3 years ago
Double points for “no floating point”

I wish all 3D engines threw out floats.