- Joined
- Jul 7, 2012
- Messages
- 1,519
- Reaction score
- 1,542
- Points
- 128
- Location
- Monte Hermoso - Argentina
- Website
- github.com
- Preferred Pronouns
- he/him
Dear friends, I've restarted the UCFO project and fixed a lot of serious errors. Most of them were due to my typing errors when writing variables.
I've tested the General Vehicle code, but since I don't have @fred18 permission, I can't use it. That's why I've reverted to the code adapted from Thunder Chicken in Lua for the VW Thing.
However, I'm still getting an error because I seem to be doing the animations wrong.
This is the error. Maybe @Gondos could take a look:
And this is the code for the animations:
I've tested the General Vehicle code, but since I don't have @fred18 permission, I can't use it. That's why I've reverted to the code adapted from Thunder Chicken in Lua for the VW Thing.
However, I'm still getting an error because I seem to be doing the animations wrong.
This is the error. Maybe @Gondos could take a look:
Code:
Thread 1 "Orbiter" received signal SIGSEGV, Segmentation fault.
0x00007ffff76c2f78 in OGLMesh::TransformGroup(int, glm::mat<4, 4, float, (glm::qualifier)0> const*) ()
from Modules/Plugin/libOGLClient.so
(gdb)
(gdb) bt
#0 0x00007ffff76c2f78 in OGLMesh::TransformGroup(int, glm::mat<4, 4, float, (glm::qualifier)0> const*) ()
from Modules/Plugin/libOGLClient.so
#1 0x00007ffff76ccca6 in vVessel::AnimateComponent(ANIMATIONCOMP*, glm::mat<4, 4, float, (glm::qualifier)0> const&) () from Modules/Plugin/libOGLClient.so
#2 0x00007ffff76cc6c0 in vVessel::Animate(unsigned int, double, unsigned int) ()
from Modules/Plugin/libOGLClient.so
#3 0x00007ffff76c803f in vVessel::UpdateAnimations(unsigned int) () from Modules/Plugin/libOGLClient.so
#4 0x00007ffff76c6fb7 in vVessel::Update() () from Modules/Plugin/libOGLClient.so
#5 0x00007ffff76b678c in Scene::Update() () from Modules/Plugin/libOGLClient.so
#6 0x00007ffff76b6b8f in Scene::Render() () from Modules/Plugin/libOGLClient.so
#7 0x00007ffff76fb960 in OGLClient::clbkRenderScene() () from Modules/Plugin/libOGLClient.so
#8 0x0000555555725a8b in Orbiter::Render3DEnvironment() ()
#9 0x0000555555725db6 in Orbiter::Run() ()
#10 0x000055555572255a in main ()
(gdb)
#0 0x00007ffff76c2f78 in OGLMesh::TransformGroup(int, glm::mat<4, 4, float, (glm::qualifier)0> const*) ()
from Modules/Plugin/libOGLClient.so
#1 0x00007ffff76ccca6 in vVessel::AnimateComponent(ANIMATIONCOMP*, glm::mat<4, 4, float, (glm::qualifier)0> const&) () from Modules/Plugin/libOGLClient.so
#2 0x00007ffff76cc6c0 in vVessel::Animate(unsigned int, double, unsigned int) ()
from Modules/Plugin/libOGLClient.so
#3 0x00007ffff76c803f in vVessel::UpdateAnimations(unsigned int) () from Modules/Plugin/libOGLClient.so
#4 0x00007ffff76c6fb7 in vVessel::Update() () from Modules/Plugin/libOGLClient.so
#5 0x00007ffff76b678c in Scene::Update() () from Modules/Plugin/libOGLClient.so
#6 0x00007ffff76b6b8f in Scene::Render() () from Modules/Plugin/libOGLClient.so
#7 0x00007ffff76fb960 in OGLClient::clbkRenderScene() () from Modules/Plugin/libOGLClient.so
#8 0x0000555555725a8b in Orbiter::Render3DEnvironment() ()
#9 0x0000555555725db6 in Orbiter::Run() ()
#10 0x000055555572255a in main ()
(gdb) quit
A debugging session is active.
Inferior 1 [process 16537] will be killed.
And this is the code for the animations:
C++:
void UCFO::MakeAnim_LeftFrontWheel(){
unsigned int FrontLeftWheelGrp = front_left_wheel_id;
static MGROUP_ROTATE left_front_wheel_steer(
uimesh_UCFO,
&FrontLeftWheelGrp,
1,
front_left_wheel_axle,
_V(0, 1, 0),
(float)(45*RAD)
);
anim_left_front_wheel_steer = CreateAnimation(0.5);
ANIMATIONCOMPONENT_HANDLE parent = AddAnimationComponent(anim_left_front_wheel_steer, 0, 1, &left_front_wheel_steer);
auto left_front_wheel_travel = new MGROUP_TRANSLATE (
uimesh_UCFO,
&FrontLeftWheelGrp,
1,
_V(0, 2.0 * travel, 0)
);
anim_left_front_wheel_travel = CreateAnimation(0.5);
AddAnimationComponent(anim_left_front_wheel_travel, 0, 1, left_front_wheel_travel, parent);
auto left_front_wheel_rotate = new MGROUP_ROTATE (
uimesh_UCFO,
&FrontLeftWheelGrp,
1,
front_left_wheel_axle,
_V(1, 0, 0),
(float)(360*RAD)
);
anim_left_front_wheel_rotation = CreateAnimation(0.5);
AddAnimationComponent(anim_left_front_wheel_rotation, 0, 1, left_front_wheel_rotate, parent);
}
void UCFO::MakeAnim_RightFrontWheel(){
unsigned int FrontRightWheelGrp = front_right_wheel_id;
static MGROUP_ROTATE right_front_wheel_steer(
uimesh_UCFO,
&FrontRightWheelGrp,
1,
front_right_wheel_axle,
_V(0, 1, 0),
(float)(45*RAD)
);
anim_right_front_wheel_steer = CreateAnimation(0.5);
ANIMATIONCOMPONENT_HANDLE parent = AddAnimationComponent(anim_right_front_wheel_steer, 0, 1, &right_front_wheel_steer);
auto right_front_wheel_travel = new MGROUP_TRANSLATE (
uimesh_UCFO,
&FrontRightWheelGrp,
1,
_V(0, 2.0 * travel, 0)
);
anim_right_front_wheel_travel = CreateAnimation(0.5);
AddAnimationComponent(anim_right_front_wheel_travel, 0, 1, right_front_wheel_travel, parent);
auto right_front_wheel_rotate = new MGROUP_ROTATE (
uimesh_UCFO,
&FrontRightWheelGrp,
1,
front_right_wheel_axle,
_V(1, 0, 0),
(float)(360*RAD)
);
anim_right_front_wheel_rotation = CreateAnimation(0.5);
AddAnimationComponent(anim_right_front_wheel_rotation, 0, 1, right_front_wheel_rotate, parent);
}
void UCFO::MakeAnim_LeftRearWheel(){
unsigned int RearLeftWheelGrp = rear_left_wheel_id;
static MGROUP_TRANSLATE left_rear_wheel_travel(
uimesh_UCFO,
&RearLeftWheelGrp,
1,
_V(0, 2.0 * travel, 0)
);
anim_left_rear_wheel_travel = CreateAnimation(0.5);
ANIMATIONCOMPONENT_HANDLE parent = AddAnimationComponent(anim_left_rear_wheel_travel, 0, 1, &left_rear_wheel_travel);
auto left_rear_wheel_rotate = new MGROUP_ROTATE (
uimesh_UCFO,
&RearLeftWheelGrp,
1,
rear_left_wheel_axle,
_V(1, 0, 0),
(float)(360*RAD)
);
anim_left_rear_wheel_rotation = CreateAnimation(0.5);
AddAnimationComponent(anim_left_rear_wheel_rotation, 0, 1, left_rear_wheel_rotate, parent);
}
void UCFO::MakeAnim_RightRearWheel(){
unsigned int RearRightWheelGrp = rear_right_wheel_id;
static MGROUP_TRANSLATE right_rear_wheel_travel(
uimesh_UCFO,
&RearRightWheelGrp,
1,
_V(0, 2.0 * travel, 0)
);
anim_right_rear_wheel_travel = CreateAnimation(0.5);
ANIMATIONCOMPONENT_HANDLE parent = AddAnimationComponent(anim_right_rear_wheel_travel, 0, 1, &right_rear_wheel_travel);
auto right_rear_wheel_rotate = new MGROUP_ROTATE (
uimesh_UCFO,
&RearRightWheelGrp,
1,
rear_right_wheel_axle,
_V(1, 0, 0),
(float)(360*RAD)
);
anim_right_rear_wheel_rotation = CreateAnimation(0.5);
AddAnimationComponent(anim_right_rear_wheel_rotation, 0, 1, right_rear_wheel_rotate, parent);
}
C++:
void UCFO::SetAnim_RightFrontWheel(){
//Determine rotation speed of wheel
VECTOR3 speed;
GetGroundspeedVector(FRAME_LOCAL, speed);
double rotation_speed = speed.z / (2 * PI * wheel_radius);
// Actualización de la rotación de la rueda
right_front_wheel_rotation = fmod(right_front_wheel_rotation + oapiGetSimStep() * rotation_speed, 1.0);
//Set the rotation animation, steering animation linked to rudder
SetAnimation(anim_right_front_wheel_rotation, right_front_wheel_rotation);
SetAnimation(anim_right_front_wheel_steer, 0.5 + angle_right / (45*RAD));
SetAnimation(anim_right_front_wheel_travel, 0.5 + front_right_displacement / (2.0*travel));
}
void UCFO::SetAnim_LeftFrontWheel(){
VECTOR3 speed;
GetGroundspeedVector(FRAME_LOCAL, speed);
double rotation_speed = speed.z / (2 * PI * wheel_radius);
left_front_wheel_rotation = fmod(left_front_wheel_rotation + oapiGetSimStep() * rotation_speed, 1.0);
//Set the rotation animation, steering animation linked to rudder
SetAnimation(anim_left_front_wheel_rotation, left_front_wheel_rotation);
SetAnimation(anim_left_front_wheel_steer, 0.5 + angle_left / (45*RAD));
}
void UCFO::SetAnim_RightRearWheel(){
VECTOR3 speed;
GetGroundspeedVector(FRAME_LOCAL, speed);
double rotation_speed = speed.z / (2 * PI * wheel_radius);
right_rear_wheel_rotation = fmod(right_rear_wheel_rotation + oapiGetSimStep() * rotation_speed, 1.0);
SetAnimation(anim_right_rear_wheel_rotation, right_rear_wheel_rotation);
SetAnimation(anim_right_rear_wheel_travel, 0.5 + rear_right_displacement / (2.0 * travel));
}
void UCFO::SetAnim_LeftRearWheel(){
VECTOR3 speed;
GetGroundspeedVector(FRAME_LOCAL, speed);
double rotation_speed = speed.z / (2 * PI * wheel_radius);
left_rear_wheel_rotation = fmod(left_rear_wheel_rotation + oapiGetSimStep() * rotation_speed, 1.0);
SetAnimation(anim_left_rear_wheel_rotation, left_rear_wheel_rotation);
SetAnimation(anim_left_rear_wheel_travel, 0.5 + rear_left_displacement / (2.0*travel));
}

