Request RASSOR - Regolith Advanced Surface Systems Operations Robot

Well I have for the code.

Code:
ANIMATIONCOMPONENT_HANDLE parentFRONT,parentREAR,PARENT,PARENTR;

	static UINT FM[20] = {2,3,4,5,10,11,12,13,14,15,16,17,18,19,20,21,22,23,26,27 };//BODY
	static MGROUP_ROTATE FRONT(0, FM, 19, _V(0, .4882646, .5906365), _V(1, 0, 0), (float)(360 * RAD)); // -2 .. +145
	anim_FRONTBODY = CreateAnimation(0.5);

	parentFRONT = AddAnimationComponent(anim_FRONTBODY, 0, 1, &FRONT);

		static UINT FARM[2] = { 9,25 };//FRONT ARM
	static MGROUP_ROTATE FRONTARM(0, FARM, 2, _V(0, .4882646,  .5906365), _V(1, 0, 0), (float)(220 * RAD)); // -2 .. +145
	anim_FRONTARM = CreateAnimation(0.5);

	PARENT=AddAnimationComponent(anim_FRONTARM, 0, 1, &FRONTARM,parentFRONT);

	static UINT FDRUM[2] = { 7,1 };//FRONT DRUM
	static MGROUP_ROTATE FRONTDRUM(0, FDRUM, 2, _V(0, .5812749,  2.202556), _V(-1, 0, 0), (float)(360 * RAD)); // -2 .. +145
	anim_DRUMFRONT = CreateAnimation(0.0);
	AddAnimationComponent(anim_DRUMFRONT, 0, 1, &FRONTDRUM, PARENT);

	//REAR BODY ROTATE


	static MGROUP_ROTATE REAR(0, FM, 20, _V(0, .4881342, -.6023377), _V(1, 0, 0), (float)(360 * RAD)); // -2 .. +145
	anim_REARBODY = CreateAnimation(0.5);
	parentREAR = AddAnimationComponent(anim_REARBODY, 0, 1, &REAR);

	static UINT RARM[2] = { 8, 24 };//REAR ARM
	static MGROUP_ROTATE REARARM(0, RARM, 2, _V(0, .4881342, - .6023377), _V(-1, 0, 0), (float)(220 * RAD)); // -2 .. +145
	anim_REARARM = CreateAnimation(0.5);

	PARENTR = AddAnimationComponent(anim_REARARM, 0, 1, &REARARM, parentREAR);

	static UINT RDRUM[2] = { 0,6 };// REAR DRUM
	static MGROUP_ROTATE REARDRUM(0, RDRUM, 2, _V(0, .5621216 ,- 2.207251), _V(1, 0, 0), (float)(360 * RAD)); // -2 .. +145
	anim_DRUMREAR = CreateAnimation(0.0);
	AddAnimationComponent(anim_DRUMREAR, 0, 1, &REARDRUM, PARENTR);

eSSJmQ8.jpg


But this messes the rear animation

---------- Post added 03-15-17 at 06:20 AM ---------- Previous post was 03-14-17 at 03:12 PM ----------

I redid the animation in the front. Like in the drawing above. I made the rod that would drive the arm a parent.

Then for the arm. I made it a parent and a child of the drive parent
then the drum are a child of this.

So now I can rotate the arm, drum and body.

But not sure how to rear would work?

But I guess the touchdown points need to be adjusted based on the drums?
 
So now I can rotate the arm, drum and body.

But not sure how to rear would work?

Exactly the same as the front drum, just mirrored. usually it moves by the tracks, the drums are only used for special maneuvers, like unloading.
 
YXloxUw.jpg


I think the issue is the body would be rotated from the front or rear. So they share the same parts?
Code:
	static UINT Fdrive[1] = { 26 };//FRONT ARM  fake parent
	static MGROUP_ROTATE FRONTdrive(0, Fdrive, 1, _V(0, .4882646, .5906365), _V(1, 0, 0), (float)(220 * RAD)); // -2 .. +145
	anim_FRONTARMparent = CreateAnimation(0.5);
	parentFRONT = AddAnimationComponent(anim_FRONTARMparent, 0, 1, &FRONTdrive);


		static UINT FARM[2] = { 9,25 };//FRONT ARM
	static MGROUP_ROTATE FRONTARM(0, FARM, 2, _V(0, .4882646,  .5906365), _V(1, 0, 0), (float)(220 * RAD)); // -2 .. +145
	anim_FRONTARM = CreateAnimation(0.5);

	PARENT = AddAnimationComponent(anim_FRONTARM, 0, 1, &FRONTARM, parentFRONT);

	static UINT FDRUM[2] = { 7,1 };//FRONT DRUM
	static MGROUP_ROTATE FRONTDRUM(0, FDRUM, 2, _V(0, .5812749,  2.202556), _V(-1, 0, 0), (float)(360 * RAD)); // -2 .. +145
	anim_DRUMFRONT = CreateAnimation(0.0);
	AddAnimationComponent(anim_DRUMFRONT, 0, 1, &FRONTDRUM, PARENT);

	static UINT FM[18] = { 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };//BODY
	static MGROUP_ROTATE FRONT(0, FM, 18, _V(0, .4882646, .5906365), _V(1, 0, 0), (float)(360 * RAD)); // -2 .. +145
	anim_FRONTBODY = CreateAnimation(0.5);
	AddAnimationComponent(anim_FRONTBODY, 0, 1, &FRONT, parentFRONT);



	//REAR BODY ROTATE

	static UINT Rdrive[1] = { 27 };//FRONT ARM  fake parent
	static MGROUP_ROTATE REARdrive(0, Rdrive, 1, _V(0, .4881342, -.6023377), _V(1, 0, 0), (float)(220 * RAD)); // -2 .. +145
	anim_REARARMparent = CreateAnimation(0.5);
	parentREAR = AddAnimationComponent(anim_REARARMparent, 0, 1, &REARdrive);



	//REAR ARM

	static UINT RARM[2] = { 8, 24 };//REAR ARM
	static MGROUP_ROTATE REARARM(0, RARM, 2, _V(0, .4881342, - .6023377), _V(-1, 0, 0), (float)(220 * RAD)); // -2 .. +145
	anim_REARARM = CreateAnimation(0.5);

	
	PARENTR = AddAnimationComponent(anim_REARARM, 0, 1, &REARARM, parentREAR);

	static UINT RDRUM[2] = { 0,6 };// REAR DRUM
	static MGROUP_ROTATE REARDRUM(0, RDRUM, 2, _V(0, .5621216 ,- 2.207251), _V(1, 0, 0), (float)(360 * RAD)); // -2 .. +145
	anim_DRUMREAR = CreateAnimation(0.0);
	AddAnimationComponent(anim_DRUMREAR, 0, 1, &REARDRUM, PARENTR);

	static MGROUP_ROTATE REARBODY(0, FM, 18, _V(0, .4881342, -.6023377), _V(1, 0, 0), (float)(360 * RAD)); //// -2 .. +145
	anim_REARBODY = CreateAnimation(0.5);
	AddAnimationComponent(anim_REARBODY, 0, 1, &REARBODY, PARENTR);

}
 
Looks like you simply mixed up the mesh groups and moved the rear mesh group around the reference axis of the front mesh
 
Code:
static MGROUP_ROTATE REARBODY(0, FM, 18, _V(0, .4881342, -.6023377), _V(1, 0, 0), (float)(360 * RAD)); //// -2 .. +145
	anim_REARBODY = CreateAnimation(0.5);
	AddAnimationComponent(anim_REARBODY, 0, 1, &REARBODY, PARENTR);

These are the shared main body parts. The front body rotation has a different reference point
 
Code:
static MGROUP_ROTATE REARBODY(0, FM, 18, _V(0, .4881342, -.6023377), _V(1, 0, 0), (float)(360 * RAD)); //// -2 .. +145
    anim_REARBODY = CreateAnimation(0.5);
    AddAnimationComponent(anim_REARBODY, 0, 1, &REARBODY, PARENTR);
These are the shared main body parts. The front body rotation has a different reference point

"shared main body parts".... what do you mean with shared? And why is the main body not the parent?
 
Well because there is one main body so the the rotation of the body from the front and the rear share the same groups.

In this the parent is the cylinder in the body that rotates the body and arms.
 
Well because there is one main body so the the rotation of the body from the front and the rear share the same groups.

In this the parent is the cylinder in the body that rotates the body and arms.

"share the same groups" gives me a creepy feeling. Do you want to say two animation components share the same groups?
 
So maybe I am wrong:
This is what I have:
awbGYBF.jpg


In real life when the front drum is rotated the ground might stop it from going down so it lifts the body up?

Not sure where the touchdown point would be. Right now they are centered at the body
 
Not sure where the touchdown point would be. Right now they are centered at the body

Touchdown points = The plane where the vehicle touches the ground. Simple as it sounds, complex as it can get.
 
Touchdown points = The plane where the vehicle touches the ground. Simple as it sounds, complex as it can get.
Amen to that.

So the 3 animations sets I have are

Drum rotation
Arm rotating taking the drum
body rotating.
 
Amen to that.

So the 3 animations sets I have are

Drum rotation
Arm rotating taking the drum
body rotating.

Strike the third one. It serves no purpose.
 
Ok that was how the body was rotating. But that solves the sharing mesh groups.
 
Ok that was how the body was rotating. But that solves the sharing mesh groups.

Even if you wanted to make it one-ended (one drum/track pair always stays on the ground), it would have been possible without "sharing meshgroups". Whenever you think "I could share meshgroups" you should turn off your computer, get outside, relax, enjoy life. You don't need to do such kind of add-on development, so do something better.

No meshgroup should EVER be shared between two co-existing animation components. It creates a conflict between the two animation components, that you have to resolve and you should have resolved during design phase.

Sharing mesh groups only makes sense if you have multiple animation components, but only one is active at a time during the animation. Eg. component 1 from 0.0 to 0.5 and component 2 from 0.5 to 1.0. There you resolved the conflict by the animation range.
 
Even if you wanted to make it one-ended (one drum/track pair always stays on the ground), it would have been possible without "sharing meshgroups". Whenever you think "I could share meshgroups" you should turn off your computer, get outside, relax, enjoy life. You don't need to do such kind of add-on development, so do something better.

Well I am going to do that turn off computer and enjoy life.

I can add parts as needed.
 
Well I am going to do that turn off computer and enjoy life.

I can add parts as needed.

Exactly that. Its better to look at such problems with some distance and a fresh mind. I need to do the same pretty often. I watch the ships passing by here, when I feel insanity getting the upper hand. :lol:

Damn... now I have this old "Abwärts" song in my mind again.
 
So I guess the question is what we want it to do.

I can get drums to rotate and the arms to rotate.

It will also move around.

But if we want the arm to move the body that might taking some thinking and redesign.
 
But if we want the arm to move the body that might taking some thinking and redesign.

Well, I just wanted meshes that can be animated to have a basic vehicle to start with. The next iteration would be getting some Mars Propellant Factory that takes ice mined by such a robot and turns it into rocket fuel.

In first iteration, the current state would be good enough. We can lift the drums and lower them, we can dig or unload the contents of the drums.

In second iteration, a special body animation would not be needed except for eye candy. Just driving near a unload site and magically dumping the ice would be enough.

Of course, a proper unloading configuration of the RASSOR for both drums would be nice to watch, but its not automatically trivial.
 
Last edited:
Back
Top