## CustomMultiBodyVehicle joint - How to use it ?

A place to discuss everything related to Newton Dynamics.

Moderators: Sascha Willems, walaber

### Re: CustomMultiBodyVehicle joint - How to use it ?

It's surely because you set your steering torque so directly.
You need to make it pass in a procedure to make it updating one by one * your frame update.

If you have reproduce this procedure make sure it is correct.
void MultiBodyCar::ApplySteering (dFloat value)

In resumed if you try to use ApplyTireSteerAngle directly the value is surely so big and badly set to the matrix tire joint.
ApplyTireSteerAngle(0, m_steerAngle);
ApplyTireSteerAngle(1, m_steerAngle);
You search a nice physics solution, if you can read this message you're at the good place
OrionX3D Projects & Demos:

Dave Gravel

Posts: 725
Joined: Sat Apr 01, 2006 9:31 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

I have reproduced this procedure but it is exactly the same. (setting a member variable increasing by small steps instead of the value directly , etc.)
However, my vehicle turns right after a few seconds when I go straight. I have increased the tire rolling drag from 0 to 20 since at 0 the car seemed to be on the ice (so much drift ...)

I have verified that it's not the float imprecision that causes the problem (going at 0.1 instead of 0, for example). And it's not.

Also, my tires are made of simple DirectX cylinders, By default, they are oriented correctly (their height along the z axis, so they roll on the x axis, that's fine)
But when I receive the matrix from Newton SetTransform callback, it first rotate the cylinders by 90 degrees on the y axis, then rotates them for rolling and steering then translates them to the correct position. I need to pre-rotate the cylinders by 90 degrees before so they ae placed correctly. But why are they getting rotated by Newton ?

P.S. : I saw that I could send my code on this forum so somebody could see the driving with their eyes and be able to understand more esily what is the problem.
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

I saw in the Newton wiki that cylinders collision primitives are aligned with th x axis so that would explain why
Newton rotate them. Tell me if I'm wrong.

Now here's my project so far :

Note it works on windows, with the DirectX SDK 9.0 (March 2008) installed.
I have not included the Newton DLL, as you must have the newton 2.0 sdk installed. Also because this too big in the zip. So you just have to copy newton dll next to the exe file and it will work.
I've just provided the exe, so you may get a feeling of the driving and you'll probably know what's wrong.
The vehicle by the w, s, a, d keys.

P.S. : You must use winRAR to unzip the file
Attachments
Vehicle avec Newton 2.rar
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

Anyone has looked at it ?
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

it is better if you add teh libraries.
ussually the current library will not work because it mayb have new changes.
Julio Jerez
Moderator

Posts: 11154
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

### Re: CustomMultiBodyVehicle joint - How to use it ?

But just Newton DLL is 650 Kb and maximum allowed size on this site is 256 Kb !
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

even compresses?
Julio Jerez
Moderator

Posts: 11154
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

### Re: CustomMultiBodyVehicle joint - How to use it ?

Of course !
If I compress the whole thing (the exe and the dlls) in a zip archive, it is still 419 Kb.
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

So I've placed the zip file on my website, so it's bigger, there's all the code and the VC++ projects. Just missing the DirectX 9 SDK

http://frankdevelopper.com/newton/physicsvehicle.zip
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

Anybody has an idea ?
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

I've placed everything it needed in the zip file, including the DirectX DLLs. It has everything to work alone. The exe is already compiled, and there is the project files and the source code for those who wanna take a look at it.

Thanks in advance for someone who's gonna take time
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

Why doesn't anybody check it ?
It can be executed I think.
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

I have test but here the exe generate a error.
Same when I rebuild the code, and I don't have seen from where it happening.
The error happening when newton try to init.
You search a nice physics solution, if you can read this message you're at the good place
OrionX3D Projects & Demos:

Dave Gravel

Posts: 725
Joined: Sat Apr 01, 2006 9:31 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

Strange ...
I have Windows XP SP3
I have an x64 architecture and I'm using Win32 to manage window.
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm

### Re: CustomMultiBodyVehicle joint - How to use it ?

Since my code doesn't seem to work on other computers,

could you tell me if my matrix (for positioning the vehicle is correct ?
Code: Select all
`dVector front(1, 0, 0, 1);dVector up(0, 1, 0, 1);dVector right(0, 0, 1, 1);dVector vpos(0, 2, 0, 1);dMatrix mat(front, up, right, vpos);`

And I needed an offset for my tires, as it's not a mesh so I can't get the matrix there.

Code: Select all
`// Create the tires offset vectors.D3DVECTOR frOff = {  0.8f, -0.2f,  0.8f };D3DVECTOR flOff = {  0.8f, -0.2f, -0.8f };D3DVECTOR rrOff = { -0.8f, -0.2f,  0.8f };D3DVECTOR rlOff = { -0.8f, -0.2f, -0.8f };`

The vehicle is positionned facing the x axis, as I want, but it doesn't move correctly.
I've tried tweaking the params in all the possible way, but nothing worked.

Anybody can help ?
frankk

Posts: 32
Joined: Thu Oct 09, 2008 2:40 pm