Thread Rating:
  • 2 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Project 'NextSim'
#21
I have started the creation process. As a first step I'll only write the maths. After that me and Only a Petr will work on implementing it in Rigs of Rods core. Before that I'm writing it in my well-known environment - Blender - using Python. The mathematical part progress ir pretty well. I'll do pefrormance tests, but note that Python is slower than C++ and thus the results in my current environment will be slower than the final results in Rigs of Rods. Also note that this is just the early wip and there are still lots of features to be done.

The video:




I'll keep working on it as much as I can. Any feedback acceptedWink

I came across one more question that I wanna ask to community. I need your opinions in order to decide which is better solution.

Current system is based of SI units(mass = kg, stiffness = N/m, damping = N/m/s).
However, you can note an interesting case. Let's study 2 examples:
1)Object consists of 100 kg heavy nodes.
Nodes are connected by springs with 10 000 N/m stiffness and 1 000 N/m/s damping.
2)Object consists of 1 kg heavy nodes.
Nodes are connected by springs with 1 000 N/m stiffness and 10 N/m/s damping.

Now let's study both of cases.

In case 1 the springs have got bigger stiffness than in case 2. However, guess in which case the object acts stiffer? Lemme tell for you - in 2nd case. At first moment you may think that it doesn't make sense, but note that the force that springs exert on nodes is equal to stiffness multiplied by compression, however, the acceleration is equal to force divided by mass. And thus the acceleration is lower for 1st case. And this means it acts less stiff and is softer(less rigid) than 2nd object.

There is different system for springs which isn't based on SI units, but is way more intuitive(mass = kg, stiffness = omega 0, damping = zeta).
In this system:
omega 0 = sqrt(k / m)
And so we can get k out of it:
k = omega 0 ^ 2 * mass
And:
zeta = c / (2 * sqrt(k * m))
Ans so we can get the c out of it:
c = 2 * sqrt(k*m) * zeta

How does this work?
User can define any number as omega 0 and we get stiffness out of it depending on mass. And this means that no matter what mass you have, the stiffness will match it. We could also use omega^2 and thus we wouldn't need the square conversion. This would still work correctly and be a bit more simple as it'd be linear.

In terms of damping this makes all extra easy. The zeta is the damping coefficient which works in the very comfortable system where:
zeta = 0  -  non-damped
zeta < 1  -  underdamped
zeta = 1  -  critically damped
zeta > 1  -  overdamped

This is very intuitive and easy to use. A big problem often is that people know that stiffness must be tweaked depending on mass, but they forget about the damping relation(which must be tweaked depending on stiffness and on mass. This system, however, does it automaticly and thus user only defines how the damping acts(either it's springy, soft, or clay-like and how much of each it is).
What I suggest is implementing this converter and allowing user to choose between SI units and this frequency and coefficient based system. The second system allows to define a material(e.g. steel, leather) and apply it's properties(stiffness and damping) on all springs, no matter what mass their supported nodes has.

What do you think about this? Smile




And a new video report.

What's changed?
+Added substepping
+Added material system(full override only yet)
+Added intuitive non-SI system
*Some tweaks and code cleanup.
Game developer; Like cars; Use Blender 3D a lot; Making a racing game; Want to make Rigs of Rods content
Project 'Next Sim'
Oh, yeah - I'm also a great PENGUIN!!!
[-] The following 14 users say Thank You to adriansnetlis for this post:
  • atv_123, bbbc-, birdsofsteel, concord, DevoutRain2500, Disloyalpick, masfilip, only_a_ptr, ParkAvenue, PenguinvilleRescue1, RavenAii, Sean, The Eradicator, Vido
Reply
#22
This is really impressive and I can't wait to see where it goes! At the moment I don't really have much to add other then saying that I really like what I am seeing and reading, so I am basically making this post so I can subscribe to this thread  Rolleyes 

Keep up the good work!
Reply
#23
Change of plans: This project will be based on current stable codebase rather than the experimental OGRE 2.1 port. Also, it'll be delayed until the prevailing upstream bugs are resolved.

More info: https://forum.rigsofrods.org/thread-577.html (Roadmap)
[-] The following 3 users say Thank You to only_a_ptr for this post:
  • atv_123, birdsofsteel, RavenAii
Reply
#24
This may be a bit off topic but I didn't know where else to put it. Is the weather system gonna get updated anytime soon or not?
Reply
#25
(08-09-2016, 02:50 PM)adriansnetlis Wrote: simp
The second system is a better solution when done right.
approved
Reply
#26
Hello people!

I just wanted to have a bit of report here on this topic.

So lastly I've been over-critically-busy with school as I've practicated in many olympiadees (mostly scoring first places  Tongue ) and also had to catch up with the class what I missed during them. But school doesn't only make me slow down a lot on this project. It is now actually giving a boost  Arrow ! How? Well, it's kinda simple. In my school there is a rule that every student must write a scientific research work about any topic(well, almost any, as there are the 'ethical norms'  Wink ). And so I chose to write it about spring-mass physics simulation in real-time applications. This involves: 
  • Coding the content(and, of course, in C++ due to performance requirements)
  • Wide and deep research of topic(thus finding many optimal solutions)
  • Research of material properties(I will use specific devices to measure stiffness and damping factors of different shaped, weighed and different material objects. I will make a table of results and share it with the nice content creators of Rigs of Rods for more realistic future cars  Cool )
  • Presentation(yea, I will share all my knowledgebase with you all once it's done)
The approximate deadline for my scientific research project is around the time of November, 2017. However, I expect, that coding part might get finished earlier, possibly at summer time.

I hope that you all are enjoying your time and that you are itching unpatiently to see this project done!  Big Grin
Game developer; Like cars; Use Blender 3D a lot; Making a racing game; Want to make Rigs of Rods content
Project 'Next Sim'
Oh, yeah - I'm also a great PENGUIN!!!
[-] The following 8 users say Thank You to adriansnetlis for this post:
  • atv_123, bbbc-, DirtGamer301, Disloyalpick, Michael10055, only_a_ptr, rents1977, Sean
Reply
#27
That's really great, and keep up the academic work! ( I remember that stood first in an Olympiad too in 5th grade!) So will the update be ready after summer or in summer? We need a good vacation...
Reply
#28
The exact time when it will be ready is not known yet. It depends on how well it goes. If I can make all the needed physics stuff and tools already before summer, than it'll just need around month or two to clean up things and make sure it's ready for the audience. So, I hope that I can get the first preview version already at the beggining of summer and the final version(well, bugfixes will follow, of course) around the mid/mid-end of the summer. Of course, things can go slower than expected so it may get delayed, but it should definetly be finished at the end of september(this is like the absolute deadline I set for myself).

Here are additional plans that will help the development progress and content creation: 
  • I should make an advanced, but easy to use tool for car creation. I think that having it similar to a modelling software(like Blender) would be good. Just make it have only needed features. But, of course, all of them. It means - node placement, beam creation, collision surface placement, applying visual model, additional component placement (e.g. motor, transmission gear, steering wheel mechanism etc. - things that nowadays computers wouldn't be able to handle if they were simulated with the built in system due to high amount of details needed). Also the editor will most likely contain all the specification adjustments - engine power, max rpms etc., transmission gear sizes, steering locks and transmission(if present) etc.
  • As I will get access to several machines, I will definetly do advanced testing of multiple machines and their materials. I will test different shapes to find the right values for simulation. Than I will make a big table of different suggested stiffness/damping values for different shaped different material car parts. So this tool will help content creators making cars as they will have very strong guidelines of how to adjust the material realisticly.
  • Lastly I will make some content for testing - 2 or 3 cars and a testing track(which will contain a racetrack, crash test zone and hillclimb zone). All of this content will be aviable public after the project is done.
Greetings to all!  Cool
Game developer; Like cars; Use Blender 3D a lot; Making a racing game; Want to make Rigs of Rods content
Project 'Next Sim'
Oh, yeah - I'm also a great PENGUIN!!!
[-] The following 4 users say Thank You to adriansnetlis for this post:
  • atv_123, graysonk95, Ton03, Whizkid
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)