A place to discuss everything related to Newton Dynamics.
Moderators: Sascha Willems, walaber
by Dave Gravel » Sun Oct 19, 2008 3:09 pm
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);
-
Dave Gravel
-
- Posts: 800
- Joined: Sat Apr 01, 2006 9:31 pm
- Location: Quebec in Canada.
-
by frankk » Mon Oct 20, 2008 11:25 am
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
- Location: Quebec, Canada
by frankk » Mon Oct 20, 2008 12:26 pm
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
- (114.47 KiB) Downloaded 302 times
-
frankk
-
- Posts: 32
- Joined: Thu Oct 09, 2008 2:40 pm
- Location: Quebec, Canada
by frankk » Wed Oct 22, 2008 8:02 am
Anyone has looked at it ?
-
frankk
-
- Posts: 32
- Joined: Thu Oct 09, 2008 2:40 pm
- Location: Quebec, Canada
by Julio Jerez » Wed Oct 22, 2008 10:18 am
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: 12249
- Joined: Sun Sep 14, 2003 2:18 pm
- Location: Los Angeles
-
by frankk » Wed Oct 22, 2008 10:38 am
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
- Location: Quebec, Canada
by Julio Jerez » Wed Oct 22, 2008 10:58 am
even compresses?
-
Julio Jerez
- Moderator
-
- Posts: 12249
- Joined: Sun Sep 14, 2003 2:18 pm
- Location: Los Angeles
-
by frankk » Wed Oct 22, 2008 11:01 am
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
- Location: Quebec, Canada
by frankk » Thu Oct 23, 2008 10:22 am
Anybody has an idea ?
-
frankk
-
- Posts: 32
- Joined: Thu Oct 09, 2008 2:40 pm
- Location: Quebec, Canada
by frankk » Thu Oct 23, 2008 10:20 pm
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
- Location: Quebec, Canada
by frankk » Fri Oct 24, 2008 8:41 am
Why doesn't anybody check it ?
It can be executed I think.
-
frankk
-
- Posts: 32
- Joined: Thu Oct 09, 2008 2:40 pm
- Location: Quebec, Canada
by Dave Gravel » Fri Oct 24, 2008 11:09 am
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.
-
Dave Gravel
-
- Posts: 800
- Joined: Sat Apr 01, 2006 9:31 pm
- Location: Quebec in Canada.
-
by frankk » Fri Oct 24, 2008 1:03 pm
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
- Location: Quebec, Canada
by frankk » Sun Oct 26, 2008 2:24 pm
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
- Location: Quebec, Canada
Return to General Discussion
Who is online
Users browsing this forum: No registered users and 22 guests