[ODE] Implementing a pick. worked in 0.39 but not in 0.5

Geoff Carlton gcarlton at iinet.net.au
Tue Feb 15 15:25:42 MST 2005


This is a bit of a stab in the dark (so to speak), but perhaps the ray 
code now assumes the direction is normalised?   Try normalising the 
(end-start) direction vector before passing it into RaySet(..).

Geoff


Hampus Soderstrom wrote:

> Hi,
>
> Could it be some problem with ray and spheres colliding?
>
> When I changed all my bodies  to boxes and cylinders it workes just fine.
>
> cheers
>
> Hampa
> SXP
>
> 2005-02-14 kl. 18.05 skrev Hampus Soderstrom:
>
>> Hi,
>>
>> I have the following code in response to a mouse click:
>>
>> It worked in 0.39 but now that I have upgraded to 0.5 my ray collides 
>> with alot of bodies.
>>
>> If I draw out the ray it has the correct length and direction.
>>
>> This is my picking code:
>>
>> //print out what body user clicked on
>> static void pick(float start[3], float end[3]){
>>
>>         dGeomID g = NULL;
>>         dContactGeom contact;
>>
>>         dGeomRaySet(ray, start[0], start[1], start[2], 
>> end[0]-start[0], end[1]-start[1], end[2]-start[2]);
>>         dGeomRaySetLength(ray, 100);
>>
>>     for(int i = 0; i < NUM_BODYS; i++){
>>
>>         g = box[i];
>>         if (int numc = dCollide (ray,g, 0,&contact, sizeof(dContact))) {
>>                        printf("collision with %s\n", get_body_name(i));
>>             dGeomRaySetLength(ray, 0);
>>             return;
>>         }
>>     }
>> }
>>
>> cheers
>> /Hampa
>> SXP
>>
>> _______________________________________________
>> ODE mailing list
>> ODE at q12.org
>> http://q12.org/mailman/listinfo/ode
>>
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>
>
>




More information about the ODE mailing list