MADEAPPS / newton-dynamics

Newton Dynamics is an integrated solution for real time simulation of physics environments.
http://www.newtondynamics.com
Other
936 stars 182 forks source link

The player capsule doesn't collide with the chassis. #246

Closed BenjaminGu closed 3 years ago

BenjaminGu commented 3 years ago

image

The player capsule collides with tires. However, it doesn't collide with the chassis. Why is this happening?

BenjaminGu commented 3 years ago

image

And player capsule doesn't collide with a scene created by BuildCompoundScene().

JulioJerez commented 3 years ago

I don't know, my guess is that the chassis is a compound shape and the player capsule post contact process code has a bug there. It should collide, that's a bug that need fixing.

Thanks for the report. I will debug it.

On Mon, Aug 9, 2021, 2:38 AM BenjaminGu @.***> wrote:

[image: image] https://user-images.githubusercontent.com/16999381/128686806-de0c6561-a060-4bcb-bf1b-32bab2f293ab.png

The player capsule collides with tires. However, it doesn't collide with the chassis. Why is this happening?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/MADEAPPS/newton-dynamics/issues/246, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB6EPJBOZMTLAYUFZXJ3S3TT36OY7ANCNFSM5BZUTP2Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

JulioJerez commented 3 years ago

the bug was here

            //if (contact->m_isIntersetionTestOnly)
            if (contactSolver.m_intersectionTestOnly)
            {
                ndBodyTriggerVolume* const trigger = body1->GetAsBodyTriggerVolume();
                if (trigger)
                {
                    body1->GetAsBodyTriggerVolume()->OnTriggerExit(body0, m_timestep);
                }
                //contact->m_isIntersetionTestOnly = 0;
                contact->m_isIntersetionTestOnly = 1;
            }

I was testing the flag on the contact joint in order to report collision test on the same joint, when is should test the flag on the contact solver.

ok fixed. please check again and thanks for the report.

JulioJerez commented 3 years ago

It like that you mixing thing up. I never tried player reacting with the vehicle. :) I assumed it would work, but it did not. now I put with player capsule in the basics vehicle so that is can be push around.

I did not test the player pushing the vehicle, because there is not camera handling for that in that demo, but I think it should works. anyway this was a good catch, thanks

BenjaminGu commented 3 years ago

It works. Thank you for your immediate help.