69 is an extremely funny number. I'm glad you agree. Try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/AngeTheGreat/. The first 200 of you will get 20% off Brilliant’s annual premium subscription.
11:21 "If we slowly open the throttle, we can hear what this engine sounds like at a higher RPM" *Proceeds to simulate the sound of the Earth's End Times*
It's so interesting to get a deeper look at the inner workings of the simulator. Gives me a much greater appreciation for the project and how far its come already. Also, a 420 L V69 is the most internet engine I've ever seen haha well done, Ange.
Glad you like the video 🙏 The next video will be a return to more regular style content where I'll have more to show. Thanks for supporting the project!
Can you make something like Rendering - that will render sound into a file with much more physics cycles and not realtime. It will create something like “ground truth” to compare.
I was thinking that too, didn't know if it was possible or if it already worked like that, but I'd totally rather spend 40 minutes rendering my X49 engine at 20000 rpm and play it afterwards.
XPBD is what you need if you want more physically accurate results from PBD, for "infinitely stiff" materials you can simply use the regular PBD algorithm, restrict it to a single iteration, and then divide the timestep by the "iteration count" (now called substeps). Miles Macklin and Matthias Müller both have made articles and videos explaining their research papers on the subject. Edit: Since the fluid sim is the main bottleneck now, that should be the highest priority.
@@JoonasHaapala Yes, and regular PBD using a single iteration is a subset of XPBD, equal to setting the constraint compliance to 0, substeps is the same as making the timestep of the entire algorithm loop smaller.
Your engine is knocking. You might want to check if there's engine bearing debris or metallic fragments on the oil, or if the oil is overall milky. Also, test your fuel pump's pressure and your 69 spark plugs.
The advantage of this engine is that it will run happily when you shut down one cylinder bank. So you can check and change spark plugs while it's running. Yep, that'll be noisy, but convenient. Next up on this channel: twin-spark version, for aircrafts. 138 spark plugs.
11:12 - it's definitely not fake. It's sympathetic resonance that comes with every engine ever made. This is honestly proof that your physics code is operating at least somewhat properly.
09:30 ah yes, just a few of the many non-official measurement units of the United Nations of the Internet. Now we need to know what 22 feet equals to in unicorn horns, bananas, washing machines, giraffe necks, freedom eagle wingspans, capybaras and subway sandwiches.
I had a whole math course on linear solvers for partial differential equations sooooo: The reason that conjugate gradient (CG) does not work for some of the system of equations is because the matrix has to be symmetric positive definite (SPD, wiki is your friend) for CG to work. Some differential equations give a positive definite matrix but others don’t. This is a bummer because CG is really fast, especially for sparse matrice, way faster than SSOR which does not require positive definitiveness. So if you still want to have a iterative solver for the equations you would have to look in to “iterive methods for systems with a non symmetric positive definite matrix”. There are a lot of these solvers but they all have their problems and advantages. Since solving the matrix is no longer the main problem this information may not be needed but yeah. If you would want to have some good reference materials please ask!
I just had an idea. If you could give me (an example) of the matrix to solve (or I look in the source code) I could test different solvers on them. Since SciPy all have them pre-programmed would could quite easily test which one is fastest. You can then integrate it your seld in C++ if you would want to.
The wiki page on iterative methods summarizes the options good options quit well under Krylov Subspace Methods: Krylov subspace methods work by forming a basis of the sequence of successive matrix powers times the initial residual (the Krylov sequence). The approximations to the solution are then formed by minimizing the residual over the subspace formed. The prototypical method in this class is the conjugate gradient method (CG) which assumes that the system matrix A is symmetric positive-definite. For symmetric (and possibly indefinite) one works with the minimal residual method (MINRES). In the case of non-symmetric matrices, methods such as the generalized minimal residual method (GMRES) and the biconjugate gradient method (BiCG) have been derived.
there is extended positional based dynamics (XPBD) that improves on the accuracy but is still missing the forces as far as i know but it shouldn't be too hard to reverse calculate the forces from position and velocity changes
Or instead of adjusting accuracy, scale time. Physics stay stable just shown at a fraction of real speed. Eg at 1000 rpm, maybe it takes a minute to simulate 500 rotations so you see only 30 seconds of simulated time over the course of a minute.
As an Automotive Technician of 10+ years and Mechanical Engineer, it legit sounded as if it was running lean on a good portion of those cylinders. This is extremely interesting man! Please keep the content coming and thank you for the content so far. I just stumbled upon your amazing content in the last day or two here.
"It's a stormy day in Toronto" Surreal hearing that on the first summer-like day of the year in Toronto so far, this musta been recorded a little while ago.
Fascinating! The sound has so many layers to it as the engine goes up in rpm. It's also crazy to see the fuel consumption going up so fast on the right, this would not be cheap to run.
It's always cool to see the stuff you learn at uni actually getting used in real life. Or at least your own life, not some company at the other side of the world. Hopefully my exam of numerical mathematics goes somewhat well this summer...
When I seen the connecting rods bug out like that on 1:14 it made me wonder if there was a way to simulate a catastrophic failure of the engine, like spun bearings, bad rings, rod knock, and throwing rod. If there is that would pretty neat
There's no way I would have understood anything without the conversation to Egyptian cubits. However I feel a little let down that you didn't convert to my primary measuring unit, plank lengths
Talking about fluid simulations have you seen SpaceX's talk "GPUs to Mars: Full-Scale Simulation of SpaceX's Mars Rocket Engine" ? It has some cool tricks for spending compute power strategically where you actually need the precision. Instead of just the same amount of compute getting used everywhere in the simulation.
This is really the most interesting videos I have seen on the internet. It is mind boggling that a single person can create such amazing software. What mountains have you climbed, what roads have you traversed to have gained this knowledge? Asking for us mere mortals.
I spent some time creating a hybrid rocket engine simulator. That was pain. Can't imagine doing something like this. I've got a lot of respect for you.
Some aircraft piston engines would be an interesting application of this. Being able to run at variable barometric pressures, duel magneto running, single magneto failures or fouling, etc. Turbojet engines and high bypass jet engines would also be an interesting simulation.
Ange, this truly is Great. I've known a few brilliant devs, all of whom make me feel really dumb, but you have leveled up on them with this. Thank you for posting these.
I am a total noob and have no clue what most of those fancy words mean, but i downloaded the free version and all i can say is simply: I love You for creating this
Evaluating the matrices symbolically first could lead to massive gains, think FFT vs standard DFT. Also utilising double derivatives projected as the predictive value gives a good enough baseline, that it becomes possible to use 16bit frames for SIMD and still keeping good accuracy. Especially with reciprocating simulations where there is a self correction factor by the nature of the machine before the simulated. If you can get away with 16 Bit corrections on a 32bit data path you have an instant 2x speed increase.
For working with sparse matrices there is a header-only library called Eigen. It's rather fast, threaded, uses enhanced instruction set and setting up a sparse matrix is fairly straightforward. And it has a decent documentation.
The fact that all of the people giving Ange ideas start with "have you considered" insted of insulting and telling him he "should've used -" is so sweet.
Could be an interesting challenge to obtain one of those little simple RC airplane engines, which are relatively cheap and easy to run on a workbench, and see how close you can get in simulating its sound and behavior to the real thing. Or maybe a grass mower engine could be a convenient one to try, though a more complex engine to emulate.
My man started making a proof of concept for realistic engine sound in video game just for fun and endend up creating a tool that could be used by the whole automotive industry
Cool simulation! I think what you're hearing is that at low speeds, this engine is putting out a quite audible tone. At 730rpm the engine produces an exhaust note who's fundamental frequency is 420hz (assuming perfect equal length headers and firing order). I think from there as we hear it rev up it generates a sub harmonic at the engine's combustion cycle (IE fundamental equal to 1/2 RPS) due to uneven bank counts and pairings. Much like the thrum of a cross plane V8, but more severe.
11:21 "If we slowly open the throttle, we can hear what this engine sounds like at higher RPM" Ah, yes. The unmistakable sound of an external combustion engine.
Hey Ange, I recently wrote a 3D position based dynamics (physically accurate through extended position based dynamics) where I also use and calculate forces. I simulate a car with suspension and some other constraints. It is unconditionally stable with possibility of infinitely stiff springs. Working with xpbd was a breeze and the math is far easier then global solvers. I'm not one for showing my work often and the visuals aren't all that pleasing but I can show it to you and eleborate on the methods and papers use. I'm not so sure how to contact you directly but let me know if you like to talk.
Feel free to join my community Discord server (link is in the description). I'd be interested to hear more about what resources you used and about XPBD technique. Thanks for watching!
Awesome. I happened to find myself making engine sounds in puredata the other day and of course thought of your project, which I first came across while I was into BeamNG. Very impressive stuff, as always.
huh, around 10 hours ago I commented that this devblog was late, just a few minutes later, I went to sleep, and 4 hours later, here it is (nice, thanks)
I believe you already have convolution implemented for your audio engine. Could you add the ability to load impulse responses so we can hear what the engine sounds like in different environments (garage, tunnel, open road, etc.)?
When thinking about your engine simulator, everything comes down to matrix operations. why isn't it possible to outsource the heavy parts to the gpu since gpus are made to deal with matrices in the first place, aren't they?
it IS possible but might not be worth it - the RAM-VRAM latency might kill any possible gains. You have to remember that you need to move all the data to the GPU's ram and then move the results back to main ram and this takes not-insignificant amount of time. Many numerical simulations software moved entirely to GPUs for that very reason - meaning he would have to rewrite EVERYTHING to GPU and that might be a LOT of work
Instead of solving for position using Newton's three laws directly, you could use other formalisms such as Lagrangian mechanics, or Hamiltonian mechanics. Constraints are handled there directly, instead of having them as an afterthought.
If you want to try PBD, you can still derive forces with two rounds of the finite difference method on the positions of each 'mass'. I think you have to do one round to update the velocity in PBD anyway; a second round to update accelerations isn't going to eat up the rest of the CPU budget. The accumulated errors from that double differentiation would probably be fine for UI elements, but if they're critical inputs in the fluid simulation it might be too much.
Can you make a video explaining what that extensive dashboard in the game is, like the indicators that you see next to the engine? Sorry for my horrible english. Im still learning
If someone wanted to use the simulator just to generate some sound samples and performance curves for a given engine, is it a possibility to basically put the simulation in slo-mo (e.g. each second of simulated time is simulated over five seconds of real time) to achieve higher fidelity? I.e. each simulation timestep stays the same length, but just gets more real time to calculate. This would of course make live audio output impossible, but I think could be a viable method for certain applications of the program to still be doable on slower computers.
I'd like to see some big Diesel engines simulated, like the EMD 16-710-G3C-T2, a 16 cylinder, turbocharged diesel engine with 710 cubic inches of displacement and a really neat sound. The EMD 20-645E3 is another neat turbocharged engine, with 20 cylinders and 645 cubic inches of displacement. The two engines make 4,300 and 3,600 horsepower, respectively. They're also both two-stroke engines.
"Now, this will be on the quiz that is next Monday so pay attention!" Joking aside, this is awesome from a non math background to see the ins and outs expressed so easily like its common knowledge. Now I know how people feel when I try to explain I.T to them :)
This was a really interesting video. Currently studying computer science and game dev. Didn't know how complex matrixs could go was really well explained.
First of all huge congratulations on the engine. I think you smashed it out of the park. But I have some concerns about the performance, cause I'm thinking that this is the next step in racing simulators, bit if 50% of the resources are being used just for the engine alone, then we are very far from using it. Again, kudos for the engine. I hope that my comment does encourage you to keep working on it. I understand it has some limitations and that improving it could reduce the quality of the sound you are working on, which is a blast
I watched the original video on Simulating an Entire Car Engine, and my first thought at the end of that video was "We need a V69 simulation." Little did I know it was already done 😂
You should look into a way to 'bake' the audio if you're serious about using it for games. Once an engine has been designed, you could run through a range of scenarios that capture most engine sounds and then use them in the game similar to most other racing games.
69 is an extremely funny number. I'm glad you agree.
Try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/AngeTheGreat/. The first 200 of you will get 20% off Brilliant’s annual premium subscription.
Funni
i agree
hehe
That's the sex number! Similarly, 420 is the weed number.
@@tyttuut Yes that is correct.
Now we just need an Inline-420 with 69L displacement
wait until it becomes obsolete by a decade
or...6.9L PER CYLINDER
Nobody else like this comment
6 More likes, come on guys.
Edit: GO BACK, GO BACK!
You're both dangerously and hilariously close to dad joke territory.
11:21 "If we slowly open the throttle, we can hear what this engine sounds like at a higher RPM"
*Proceeds to simulate the sound of the Earth's End Times*
I have never been terrified by an engine sound before. An engine of this configuration can only be used for forces of evil. It's psychological horror.
sounds like this type of engine inside a wooden shack with concrete floor recorded with webcam
ruclips.net/video/T2YyJpwu4jM/видео.html
To me tho, it sounds somewhat like a class M2 locomotive engine.
it sounds like someone is running 10 engines on top of each other
it honestly sounds like a washing machine
It's so interesting to get a deeper look at the inner workings of the simulator. Gives me a much greater appreciation for the project and how far its come already. Also, a 420 L V69 is the most internet engine I've ever seen haha well done, Ange.
Glad you like the video 🙏 The next video will be a return to more regular style content where I'll have more to show. Thanks for supporting the project!
@@AngeTheGreatWould a W69 work as good? Is the W engine more complicated to simulate?
always a good day when there's a new engine sim devlog
🙏
Valve Hammer units are the optimal measurement standard
Agreed. Unfortunately the world hasn't caught up yet
I'm pretty sure you can actually use them in engine simulator since you can define values in any units.
I wont snitch but iirc, hammer units are technically inches :)
@@MCSteve_ my hammer unit’s definitely bigger than an inch…
@@ethanpicken6992 Sounds like someone is in denial
1:20 bocchi the engine block
Can you make something like Rendering - that will render sound into a file with much more physics cycles and not realtime.
It will create something like “ground truth” to compare.
Great idea, thanks for the suggestion
I was thinking that too, didn't know if it was possible or if it already worked like that, but I'd totally rather spend 40 minutes rendering my X49 engine at 20000 rpm and play it afterwards.
And next would be to render an array of files based on throttle and speed, essentially baking the engine so it can be imported into a game.
agreed
@@AngeTheGreat Oh Yeah It can be so handful for video maker, when you have to recreate the sound engine in post !
XPBD is what you need if you want more physically accurate results from PBD, for "infinitely stiff" materials you can simply use the regular PBD algorithm, restrict it to a single iteration, and then divide the timestep by the "iteration count" (now called substeps).
Miles Macklin and Matthias Müller both have made articles and videos explaining their research papers on the subject.
Edit: Since the fluid sim is the main bottleneck now, that should be the highest priority.
For infinitely stiff constraints in XPBD it's best to use many substeps and set the constraint compliance to 0
@@JoonasHaapala Yes, and regular PBD using a single iteration is a subset of XPBD, equal to setting the constraint compliance to 0, substeps is the same as making the timestep of the entire algorithm loop smaller.
Your engine is knocking. You might want to check if there's engine bearing debris or metallic fragments on the oil, or if the oil is overall milky. Also, test your fuel pump's pressure and your 69 spark plugs.
And given how much it uses, also check the fuel pump's flow. It might not be able to do the GPM that it needs.
It could also be an exhaust restriction - try increasing the exhaust to 69 in.
Sounds like a ratial airplane engine.
@@peejay1981 Or try being original instead of overplaying the obvious.
The advantage of this engine is that it will run happily when you shut down one cylinder bank.
So you can check and change spark plugs while it's running. Yep, that'll be noisy, but convenient.
Next up on this channel: twin-spark version, for aircrafts. 138 spark plugs.
11:12 - it's definitely not fake. It's sympathetic resonance that comes with every engine ever made. This is honestly proof that your physics code is operating at least somewhat properly.
it's crazy how well you explain this stuff. I'm blown away by how simply you summarize so much raw info; well done!
Your content is so interesting! Thanks for making all of these
Thanks for watching 🙏
You know you're a programmer when you write a script that writes a script that gets used by a program to do a thing :P love this video
Recursive metaprogramming, or something
4:26 *looks away for five seconds to grab water*
"What did I miss--"
09:30 ah yes, just a few of the many non-official measurement units of the United Nations of the Internet. Now we need to know what 22 feet equals to in unicorn horns, bananas, washing machines, giraffe necks, freedom eagle wingspans, capybaras and subway sandwiches.
9:29 that "Valve Hammer Units" made me happy as an HL2 fan
This homie just brushed over Doctoral level mathematics like it was scrambled eggs......
HEY MA... LOOK I'M ON TV!!
🎉
I had a whole math course on linear solvers for partial differential equations sooooo:
The reason that conjugate gradient (CG) does not work for some of the system of equations is because the matrix has to be symmetric positive definite (SPD, wiki is your friend) for CG to work. Some differential equations give a positive definite matrix but others don’t. This is a bummer because CG is really fast, especially for sparse matrice, way faster than SSOR which does not require positive definitiveness. So if you still want to have a iterative solver for the equations you would have to look in to “iterive methods for systems with a non symmetric positive definite matrix”. There are a lot of these solvers but they all have their problems and advantages.
Since solving the matrix is no longer the main problem this information may not be needed but yeah. If you would want to have some good reference materials please ask!
I just had an idea. If you could give me (an example) of the matrix to solve (or I look in the source code) I could test different solvers on them. Since SciPy all have them pre-programmed would could quite easily test which one is fastest. You can then integrate it your seld in C++ if you would want to.
The wiki page on iterative methods summarizes the options good options quit well under Krylov Subspace Methods:
Krylov subspace methods work by forming a basis of the sequence of successive matrix powers times the initial residual (the Krylov sequence). The approximations to the solution are then formed by minimizing the residual over the subspace formed. The prototypical method in this class is the conjugate gradient method (CG) which assumes that the system matrix A is symmetric positive-definite. For symmetric (and possibly indefinite) one works with the minimal residual method (MINRES). In the case of non-symmetric matrices, methods such as the generalized minimal residual method (GMRES) and the biconjugate gradient method (BiCG) have been derived.
great to see the progress
If there's anyone who could make use of these improvements, it would be you haha
When you like a content creator enough to listen to a Brilliant sponsor slot for the billionth time to show support... lol
Thanks for being a legend 🙏
"warning: video contains math"
"Nyeh, I can handle some numbers!"
As it turns out he, in fact, could not handle some numbers.
Admit it, this video was the true reason you built this sophisticated Bocchi engine simulator 😂
I would be lying if I said a V69 simulation wasn't the plan from the start...
@@AngeTheGreat OMG HAHAHA
there is extended positional based dynamics (XPBD) that improves on the accuracy but is still missing the forces as far as i know but it shouldn't be too hard to reverse calculate the forces from position and velocity changes
Good to know, thanks for the suggestion!
XPBD is a wonderful method due to its simplicity and efficiency (no global solver necessary). It does converge to the same solutions
Forces can be read directly from the constraint lambdas by multiplying by dt^-2.
Unless I'm missing something, the paper literally shows accurate force measurements.
A useful feature might be dynamic adjustment of accuracy to keep the RT/DT in an acceptable range.
Or instead of adjusting accuracy, scale time. Physics stay stable just shown at a fraction of real speed. Eg at 1000 rpm, maybe it takes a minute to simulate 500 rotations so you see only 30 seconds of simulated time over the course of a minute.
@@Jon-yh3gb yep, and render to video, allow scripted inputs. So many possibilities.
Sounds like a heavy duty boat engine lol
I noticed that too lol
As an Automotive Technician of 10+ years and Mechanical Engineer, it legit sounded as if it was running lean on a good portion of those cylinders. This is extremely interesting man! Please keep the content coming and thank you for the content so far. I just stumbled upon your amazing content in the last day or two here.
I never cease to be more and more entertained by your content. You've become the RUclipsr I look forward to videos from the most.
"It's a stormy day in Toronto"
Surreal hearing that on the first summer-like day of the year in Toronto so far, this musta been recorded a little while ago.
I was not prepared to sit in 30 degree heat in traffic today. Made me wish for that thunder again.
1:19
Bocchi The Engine
Fascinating! The sound has so many layers to it as the engine goes up in rpm. It's also crazy to see the fuel consumption going up so fast on the right, this would not be cheap to run.
It's always cool to see the stuff you learn at uni actually getting used in real life. Or at least your own life, not some company at the other side of the world. Hopefully my exam of numerical mathematics goes somewhat well this summer...
When I seen the connecting rods bug out like that on 1:14 it made me wonder if there was a way to simulate a catastrophic failure of the engine, like spun bearings, bad rings, rod knock, and throwing rod. If there is that would pretty neat
Taking into account the strength of different alloys and calculating the forces applied.. i think that would be a very handy tool for engine tuners
Ironic how I am currently watching during a thunderstorm
There's no way I would have understood anything without the conversation to Egyptian cubits. However I feel a little let down that you didn't convert to my primary measuring unit, plank lengths
Talking about fluid simulations have you seen SpaceX's talk "GPUs to Mars: Full-Scale Simulation of SpaceX's Mars Rocket Engine" ? It has some cool tricks for spending compute power strategically where you actually need the precision. Instead of just the same amount of compute getting used everywhere in the simulation.
This is really the most interesting videos I have seen on the internet. It is mind boggling that a single person can create such amazing software. What mountains have you climbed, what roads have you traversed to have gained this knowledge? Asking for us mere mortals.
I spent some time creating a hybrid rocket engine simulator. That was pain. Can't imagine doing something like this. I've got a lot of respect for you.
Bocchi the piston
Some aircraft piston engines would be an interesting application of this. Being able to run at variable barometric pressures, duel magneto running, single magneto failures or fouling, etc. Turbojet engines and high bypass jet engines would also be an interesting simulation.
7:10 well it seems that engine sim is like halfway done! i wish you all the best during development ange!
everywhere I go
I see her face
💕🟨🟦
The Rock
@@jaypab🗿
Ange, this truly is Great. I've known a few brilliant devs, all of whom make me feel really dumb, but you have leveled up on them with this. Thank you for posting these.
350 Valve Hammer Units
THAT'S THE MEASURMENT WE NEEDED! THANK YOU!
BOCCHI THE MOTOR
I am a total noob and have no clue what most of those fancy words mean, but i downloaded the free version and all i can say is simply: I love You for creating this
Evaluating the matrices symbolically first could lead to massive gains, think FFT vs standard DFT.
Also utilising double derivatives projected as the predictive value gives a good enough baseline, that it becomes possible to use 16bit frames for SIMD and still keeping good accuracy. Especially with reciprocating simulations where there is a self correction factor by the nature of the machine before the simulated.
If you can get away with 16 Bit corrections on a 32bit data path you have an instant 2x speed increase.
My brain is always screaming that you are the guy from Casually Explained
The fact that a V69 sounds like a toilet flushing on startup is hilarious
For working with sparse matrices there is a header-only library called Eigen.
It's rather fast, threaded, uses enhanced instruction set and setting up a sparse matrix is fairly straightforward. And it has a decent documentation.
i am very thankful that you included Valve Hammer Units, i wouldnt know how big the engine was otherwise
Bocchi the V69 engine
Even though I don't know much about code, I always enjoy watching your videos! I love your passion and attention to detail with the project
Just found this channel. Absolutely in love!
Its amazing how far the project has come, can’t wait for the release of 3d!
nice math warning, i understood NOTHING but your voice is so nice i stayed. 10/10 i wish i wasn't dropped as a child.
Keep being awesome man! I'm so happy to see you get sponsored, you deserve it!
Thank god you converted to Hammer Units, the only true standard unit of measuring distance.
I love how the sponsor forces you to make regular video
This all looks amazing. Can’t wait for the full release on steam.
Now we need a carburetor simulator to go on top. Drag racers will pay big dollars for this.
Good idea, was thinking about a gear change simulator myself.
The fact that all of the people giving Ange ideas start with "have you considered" insted of insulting and telling him he "should've used -" is so sweet.
Could be an interesting challenge to obtain one of those little simple RC airplane engines, which are relatively cheap and easy to run on a workbench, and see how close you can get in simulating its sound and behavior to the real thing. Or maybe a grass mower engine could be a convenient one to try, though a more complex engine to emulate.
I mean the funniest thing is that the engine didn't say "nice" repeatedly as it idled.
You're doing great work, this is a groundbreaking piece of software and I'm so excited to see what changes every video!
i'm so excited for the next videos! this simulator has a sentimental value to me and i love it so much.
My man started making a proof of concept for realistic engine sound in video game just for fun and endend up creating a tool that could be used by the whole automotive industry
11:54 ngl that build up sounds insane, and I can imagine this coming from a huge 22ft engine
Cool simulation! I think what you're hearing is that at low speeds, this engine is putting out a quite audible tone. At 730rpm the engine produces an exhaust note who's fundamental frequency is 420hz (assuming perfect equal length headers and firing order). I think from there as we hear it rev up it generates a sub harmonic at the engine's combustion cycle (IE fundamental equal to 1/2 RPS) due to uneven bank counts and pairings. Much like the thrum of a cross plane V8, but more severe.
11:21 "If we slowly open the throttle, we can hear what this engine sounds like at higher RPM"
Ah, yes. The unmistakable sound of an external combustion engine.
Hey Ange, I recently wrote a 3D position based dynamics (physically accurate through extended position based dynamics) where I also use and calculate forces.
I simulate a car with suspension and some other constraints. It is unconditionally stable with possibility of infinitely stiff springs. Working with xpbd was a breeze and the math is far easier then global solvers.
I'm not one for showing my work often and the visuals aren't all that pleasing but I can show it to you and eleborate on the methods and papers use.
I'm not so sure how to contact you directly but let me know if you like to talk.
Feel free to join my community Discord server (link is in the description). I'd be interested to hear more about what resources you used and about XPBD technique. Thanks for watching!
Love your content! Can't wait to get to the point of being able to write my own turbo diesel simulator!
Awesome breakdown of the sim! Love this content
I just love the convertion table, i wouldn't have been able to picture the size of a v69 without the hamburger metric, thanks for that ❤️
Awesome. I happened to find myself making engine sounds in puredata the other day and of course thought of your project, which I first came across while I was into BeamNG. Very impressive stuff, as always.
huh, around 10 hours ago I commented that this devblog was late, just a few minutes later, I went to sleep, and 4 hours later, here it is (nice, thanks)
I believe you already have convolution implemented for your audio engine. Could you add the ability to load impulse responses so we can hear what the engine sounds like in different environments (garage, tunnel, open road, etc.)?
BOCCHI PISTON
BOCCHI PISTON
i was about to say that😂😂
Bocchi the Piston
Great vid as always! I love watching your thought process and your progress as it inspires me to continue working on my own fluid simulation!
When thinking about your engine simulator, everything comes down to matrix operations. why isn't it possible to outsource the heavy parts to the gpu since gpus are made to deal with matrices in the first place, aren't they?
it IS possible but might not be worth it - the RAM-VRAM latency might kill any possible gains. You have to remember that you need to move all the data to the GPU's ram and then move the results back to main ram and this takes not-insignificant amount of time.
Many numerical simulations software moved entirely to GPUs for that very reason - meaning he would have to rewrite EVERYTHING to GPU and that might be a LOT of work
Instead of solving for position using Newton's three laws directly, you could use other formalisms such as Lagrangian mechanics, or Hamiltonian mechanics. Constraints are handled there directly, instead of having them as an afterthought.
Interesting as always, such a cool unique project
If you want to try PBD, you can still derive forces with two rounds of the finite difference method on the positions of each 'mass'. I think you have to do one round to update the velocity in PBD anyway; a second round to update accelerations isn't going to eat up the rest of the CPU budget.
The accumulated errors from that double differentiation would probably be fine for UI elements, but if they're critical inputs in the fluid simulation it might be too much.
BOCCHI THE ENGINE
Can you make a video explaining what that extensive dashboard in the game is, like the indicators that you see next to the engine? Sorry for my horrible english. Im still learning
If someone wanted to use the simulator just to generate some sound samples and performance curves for a given engine, is it a possibility to basically put the simulation in slo-mo (e.g. each second of simulated time is simulated over five seconds of real time) to achieve higher fidelity? I.e. each simulation timestep stays the same length, but just gets more real time to calculate.
This would of course make live audio output impossible, but I think could be a viable method for certain applications of the program to still be doable on slower computers.
Incredible work. I'll be looking forward to future updates.
I'd like to see some big Diesel engines simulated, like the EMD 16-710-G3C-T2, a 16 cylinder, turbocharged diesel engine with 710 cubic inches of displacement and a really neat sound. The EMD 20-645E3 is another neat turbocharged engine, with 20 cylinders and 645 cubic inches of displacement. The two engines make 4,300 and 3,600 horsepower, respectively. They're also both two-stroke engines.
"Now, this will be on the quiz that is next Monday so pay attention!"
Joking aside, this is awesome from a non math background to see the ins and outs expressed so easily like its common knowledge. Now I know how people feel when I try to explain I.T to them :)
This was a really interesting video. Currently studying computer science and game dev. Didn't know how complex matrixs could go was really well explained.
First of all huge congratulations on the engine. I think you smashed it out of the park. But I have some concerns about the performance, cause I'm thinking that this is the next step in racing simulators, bit if 50% of the resources are being used just for the engine alone, then we are very far from using it. Again, kudos for the engine. I hope that my comment does encourage you to keep working on it. I understand it has some limitations and that improving it could reduce the quality of the sound you are working on, which is a blast
I watched the original video on Simulating an Entire Car Engine, and my first thought at the end of that video was "We need a V69 simulation." Little did I know it was already done 😂
Thanks for including barleycorns, I finally feel accepted.
Inspiring stuff as always ange ⭐
Did you implement your own sparse matrix solver? I thought standard practice is to use a library for the well-established linear algebra work
"Standard practice" is not the best way of describing how I do things...
I'm getting Rockwell Automation Retro Encabulator vibes.
Amazing work as usual Ange.
When UI 2.0 :)
Thanks 🙏 Working on it right now actually, keep an eye out for the next video!
i assumed by the title that it would be one bank of 6 and one bank of 9 cylinders but this is nice too i guess
You should look into a way to 'bake' the audio if you're serious about using it for games. Once an engine has been designed, you could run through a range of scenarios that capture most engine sounds and then use them in the game similar to most other racing games.