[Opensim-dev] PRIM_PHYSICS_SHAPE_TYPE and PRIM_PHYSICS_SHAPE_CONVEX missing.

GarminKawaguichi garmin.kawaguichi at magalaxie.com
Thu Dec 27 09:07:42 UTC 2012


About llSetKeyframedMotion there is a Mantis from SignpostMarv, if it 
can help you:

	

http://opensimulator.org/mantis/view.php?id=6112

Joined: lsl script used to test llSetKeyframedMotion  in its actual state.

GCI

Le 26/12/2012 21:49, R.Gunther a écrit :
> Hello robert,
>
> I where testing if the LlSetKeyframedMotion worked in opensim, still 
> sofar i see best command to move verhicles.
> the wiki example use the convex hull . 
> http://wiki.secondlife.com/wiki/LlSetKeyframedMotion The used it in 
> the "Universal Hinged Motion in 8 Key Frames" example.
>
>
> On 2012-12-26 17:19, Adams, Robert wrote:
>> BulletSim uses convex hulls for all physical objects. It does not use 
>> the convex hull that may have been defined in the mesh but it 
>> generates an approximate convex hull using the HACD algorithm 
>> (http://codesuppository.blogspot.com/2011/05/hacd-hierarchical-approximate-convex.html).
>>
>> What do you require of the convex hulls?
>>
>> -- ra
>>
>> *From:*opensim-dev-bounces at lists.berlios.de 
>> [mailto:opensim-dev-bounces at lists.berlios.de] *On Behalf Of *Dahlia 
>> Trimble
>> *Sent:* Friday, December 21, 2012 5:16 PM
>> *To:* opensim-dev at lists.berlios.de
>> *Subject:* Re: [Opensim-dev] PRIM_PHYSICS_SHAPE_TYPE and 
>> PRIM_PHYSICS_SHAPE_CONVEX missing.
>>
>> standard opensim with ODE physics does not support convex hull 
>> collision shapes. I believe BulletSim does but I don't know if it's 
>> been extended into the LSL API.
>>
>> On Fri, Dec 21, 2012 at 4:43 PM, R.Gunther <rigun at rigutech.nl 
>> <mailto:rigun at rigutech.nl>> wrote:
>>
>> i just wanted to try a default example ofllSetKeyframedMotion script 
>> on http://wiki.secondlife.com/wiki/LlSetKeyframedMotion 
>> <http://wiki.secondlife.com/wiki/LlSetKeyframedMotion>
>> The "Universal Hinged Motion in 8 Key Frames" is useing
>>
>>  llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_PHYSICS_SHAPE_TYPE, 
>> PRIM_PHYSICS_SHAPE_CONVEX]);
>>
>> It seems opensim dopnt support [PRIM_PHYSICS_SHAPE_TYPE, 
>> PRIM_PHYSICS_SHAPE_CONVEX] as setting ?
>> Time to dig my own example script up....
>>
>>
>> _______________________________________________
>> Opensim-dev mailing list
>> Opensim-dev at lists.berlios.de <mailto:Opensim-dev at lists.berlios.de>
>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>
>>
>>
>> _______________________________________________
>> Opensim-dev mailing list
>> Opensim-dev at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
>
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20121227/8fedde1d/attachment-0001.html>
-------------- next part --------------
integer gON;
integer i; integer j;
integer iNbEtapes; integer iEtapCour;
list lChemin = [<116.549, 110.279, 22.000>,
                <106.930, 127.863, 28.123>,
                <106.930, 127.863, 28.123>,
                <147.038, 136.838, 28.000>,
                <147.038, 136.838, 28.000>,
                <149.787, 114.013, 20.464>,
                <149.787, 114.013, 20.464>,
                <145.222, 108.113, 33.351>,
                <145.222, 108.113, 33.351>,
                <128.000, 128.000, 26.000>,
                <128.000, 128.000, 26.000>,
                <116.549, 110.279, 22.000>];
list lFrames;
float fVitS = 4.1666; //en mètre(s) par seconde = 15 km/h
float fPause = 10.0;
float fTerminus = 15.0;
float fDelay;
float fFrameVit;
vector vMann;
vector vDist;

rotation gkOrientation(vector vDestination)
{
    vector vLocalX = llVecNorm(vDestination - llGetPos());
    vector vLocalY = llVecNorm(<-vLocalX.y, vLocalX.x, 0.00>);
    vector vLocalZ = vLocalX % vLocalY;
    //rotation rRott = llAxes2Rot(vLocalX, vLocalY, vLocalZ);
    //vector vRott = llRot2Euler(rRott) * RAD_TO_DEG;
    //llOwnerSay((string)vRott);
               
    return llAxes2Rot(vLocalX, vLocalY, vLocalZ);
//llSetRot(gkOrientation((vector) sMessage));
}

default
{
    state_entry()
    {
        //llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);
        gON = FALSE; 
        llSetKeyframedMotion([], [(integer)KFM_COMMAND, (integer)KFM_CMD_STOP]);
        llSetKeyframedMotion([], []);
        do
        {
            llSetPos((vector)llList2String(lChemin, 0));
        }
        while(llFabs(llVecDist((vector)llList2String(lChemin, 0), llGetPos())) >= 0.05);
        llSetRot(ZERO_ROTATION);
        lFrames = [];
        iNbEtapes = llGetListLength(lChemin);
        for(i = 0; i < llGetListLength(lChemin) - 1; i++)
        {
            j = i + 1;
            if(j >= llGetListLength(lChemin))j = 0;
            vDist = (vector)llList2String(lChemin, j) - (vector)llList2String(lChemin, i);
            fFrameVit = llFabs(llVecDist((vector)llList2String(lChemin, j),
                                  (vector)llList2String(lChemin, i))) / fVitS;
            if(fFrameVit == 0.0)
            {
                //vMann = (vector)llList2String(lChemin, i);
                fFrameVit = fPause;
            }
            lFrames += [vDist, fFrameVit];
        }
        //llOwnerSay((string)lFrames);
        llOwnerSay("/me est prêt à circuler!");
    }
 
    touch_start(integer total_number)
    {
        if(llDetectedKey(0) != llGetOwner())return;
        if(gON)
        {
            llSetKeyframedMotion([], [(integer)KFM_COMMAND, (integer)KFM_CMD_STOP]);
            llSetKeyframedMotion([], []);
            llSetRot(ZERO_ROTATION);
            llSetTimerEvent(fTerminus);
            llSetTimerEvent(0.0);
            gON = FALSE;
        }
        else
        {
            do
            {
                llSetPos((vector)llList2String(lChemin, 0));
            }
            while(llFabs(llVecDist((vector)llList2String(lChemin, 0), llGetPos())) >= 0.05);
            llSetRot(gkOrientation((vector)llList2String(lChemin, 1)));
            llSetKeyframedMotion(lFrames, [(integer)KFM_DATA, (integer)KFM_TRANSLATION]);
            iEtapCour = 0;
            fDelay = llList2Float(lFrames, (iEtapCour * 2) + 1);
            llSetTimerEvent(fDelay);
            //llOwnerSay("touch: Delay départ = " + (string)fDelay);
            gON = TRUE;
        }
    }
    
    timer()
    {
        llSetTimerEvent(0.0);
        //llOwnerSay("timer1: iEtapCour = " + (string)iEtapCour);        
        if(gON == FALSE)
        {
            //llOwnerSay("timer: gON FALSE");
            llSetRot(gkOrientation((vector)llList2String(lChemin, 1)));
            llSetKeyframedMotion(lFrames, [(integer)KFM_DATA, (integer)KFM_TRANSLATION]);
            iEtapCour = 0;
            fDelay = llList2Float(lFrames, (iEtapCour * 2) + 1);
            llSetTimerEvent(fDelay);
            //llOwnerSay("timer: Delay départ = " + (string)fDelay);
            gON = TRUE;
            return;
        }
        
        iEtapCour++;
        //llOwnerSay("timer2: iEtapCour = " + (string)iEtapCour);
        if(iEtapCour >= iNbEtapes - 1)
        {
            gON = FALSE;
            llSetRot(ZERO_ROTATION);
            llSetTimerEvent(fTerminus);
            //llOwnerSay("timer: gON PAUSE");
            return;
        }
        
        fDelay = llList2Float(lFrames, (iEtapCour * 2) + 1);
        llSetTimerEvent(fDelay);
        //llOwnerSay("timer3: iEtapCour = " + (string)iEtapCour);
        //llOwnerSay("timer: Delay = " + (string)fDelay);
        if((vector)llList2String(lFrames, iEtapCour * 2) == ZERO_VECTOR)
        {
            vMann = llRot2Euler(llGetRot()) * RAD_TO_DEG;
            vMann.x = 0.0; vMann.y = 0.0;
            llSetRot(llEuler2Rot(vMann * DEG_TO_RAD));
        }
        else
        {
            llSetRot(gkOrientation((vector)llList2String(lChemin, iEtapCour + 1)));
        }

    }
    
    on_rez(integer iPNumb)
    {
        llResetScript();
    }
}



More information about the Opensim-dev mailing list