|
Selador Cellardoor
Registered User
Join date: 16 Nov 2003
Posts: 3,082
|
11-25-2006 07:58
I am trying to create an object in which prims orbit a central point, in one plane only, and collide, and pass through each other. The form of the rotating objects is that they have one prim, the face, linked with a long, horizontal prim, the shaft. The collisions need to be detected.
I tried using llVolumeDetect, llTargetOmega and collision_start, and I was informed that the reason it didn't work was that the script (in the face) was in the child prim and not the root one. So I decided to make the face the root prim. However, when I do that, I can't make the whole thing rotate as it should. The face merely rotates round its own centre point and the shaft stays where it is.
Is there any way at all of overcoming this problem? I have pulled out so much hair over the last couple of days that I now have enough to stuff a cushion.
|
|
Eloise Pasteur
Curious Individual
Join date: 14 Jul 2004
Posts: 1,952
|
11-25-2006 08:21
I may be proven wrong, but I think the answer is no, you can't do it.
The shaft + thing on the end and linked into a single object makes that basically impossible because we don't have hierarchical linking.
If you had separate linked sets for each rotating element you should be able to do that. Then... llTargetOmega doesn't really spin them, but makes it look like they're spinning (it's all client side). You could calculate the collision times etc. and fake the collisions that way.
As far as I can see to actually have it all working as you want you're going to have to make the items phsyical to generate actual collision events, which then leads to all kinds of fun with keeping them in position. Once you can solve that, the rest is relatively easy thankfully, as llVolumeDetect will do the work for you.
|
|
Newgate Ludd
Out of Chesse Error
Join date: 8 Apr 2005
Posts: 2,103
|
11-25-2006 08:38
What's your basic aim? You state that they should collide and then pass through each other, what sort of effect are you after when they collide?
As Eloise said you could quite possibly fake it by preprocessing the maths since you know the velocities and orbit paths
|
|
2k Suisei
Registered User
Join date: 9 Nov 2006
Posts: 2,150
|
11-25-2006 09:17
He's probably trying to make a big spanking machine
|
|
Newgate Ludd
Out of Chesse Error
Join date: 8 Apr 2005
Posts: 2,103
|
11-25-2006 09:26
Not another one.....
|
|
Selador Cellardoor
Registered User
Join date: 16 Nov 2003
Posts: 3,082
|
11-25-2006 10:11
No, not a spanking machine, although that's a great idea. This is to be an art object. The speed of rotation and direction would be random, and collisions would result in colour changes and sounds being triggered (as would be the case with a spanking machine, I suppose).
|
|
2k Suisei
Registered User
Join date: 9 Nov 2006
Posts: 2,150
|
11-25-2006 10:24
From: Selador Cellardoor No, not a spanking machine, although that's a great idea. This is to be an art object. The speed of rotation and direction would be random, and collisions would result in colour changes and sounds being triggered (as would be the case with a spanking machine, I suppose). Okay. Make it a physical object below 31 prims. Use llMoveToTarget() to keep it locked in position and use llSetTorque() or llApplyRotationalImpulse() to make it spin. Oh! and place collision events in the necessary prims. That should work lovely.
|
|
Seifert Surface
Mathematician
Join date: 14 Jun 2005
Posts: 912
|
11-25-2006 12:19
IIRC llVolumeDetect no longer works in physics prims. The removal of this feature is what broke Primmies.
_____________________
-Seifert Surface 2G!tGLf 2nLt9cG
|
|
2k Suisei
Registered User
Join date: 9 Nov 2006
Posts: 2,150
|
11-25-2006 12:37
From: Seifert Surface IIRC llVolumeDetect no longer works in physics prims. The removal of this feature is what broke Primmies. I've just tested it earlier and it did work. Yet there are issues with it. Two physical objects with llVolumeDetect(TRUE) wont detect eachother. But if just one of the physical objects has llVolumeDetect(FALSE) then it's fine.
|