[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