IrrODE - an Irrlicht - ODE wrapper (now with SVN)
Thank you very much. Problem solved!
I recompile my ODE. (ode_single.dll)
--------------
Cool
My Compile version
http://vixen-brush.narod.ru/portfolio/i ... _1/bin.zip
My SRC version
http://vixen-brush.narod.ru/portfolio/i ... _1/src.zip
BSP map
Model
Russian forum
http://www.irrlicht.ru/forum/viewtopic.php?f=1&t=97
I recompile my ODE. (ode_single.dll)
--------------
Cool
My Compile version
http://vixen-brush.narod.ru/portfolio/i ... _1/bin.zip
My SRC version
http://vixen-brush.narod.ru/portfolio/i ... _1/src.zip
BSP map
Model
Russian forum
http://www.irrlicht.ru/forum/viewtopic.php?f=1&t=97
Last edited by Sky-Fox on Wed Feb 09, 2011 11:15 am, edited 1 time in total.
@Sky-Fox: for the car: don't use the "tutorial", I only started it a while ago but didn't finish it. Take a look at the IrrOdeCar demo instead. Making a car is not a big problem once you get to know certain things about the suspension:
- the hinge2 joint features a suspension along the steering axis, so no more things needed there
- I am using a rigid axis for the rear suspension. I do this by using a slide joint that connects the axis to the car body, setting the maximum and minimum position the the same value. Then you need to play around a little with the ERP and CFM parameters of that slider joint so that some actual suspension is there.
The rest is just basic stuff. Add some static nodes, or even some dynamic ones. I really recommend using the IrrEdit plugin for that.
@ulao: sorry, no news there. Maybe I'll find some time to take another look next weekend or so.
- the hinge2 joint features a suspension along the steering axis, so no more things needed there
- I am using a rigid axis for the rear suspension. I do this by using a slide joint that connects the axis to the car body, setting the maximum and minimum position the the same value. Then you need to play around a little with the ERP and CFM parameters of that slider joint so that some actual suspension is there.
The rest is just basic stuff. Add some static nodes, or even some dynamic ones. I really recommend using the IrrEdit plugin for that.
@ulao: sorry, no news there. Maybe I'll find some time to take another look next weekend or so.
Dustbin::Games on the web: https://www.dustbin-online.de/
Dustbin::Games on facebook: https://www.facebook.com/dustbingames/
Dustbin::Games on twitter: https://twitter.com/dustbingames
Dustbin::Games on facebook: https://www.facebook.com/dustbingames/
Dustbin::Games on twitter: https://twitter.com/dustbingames
I can not understand
How to Correctly install and use CIrrOdeMotor
Please tell us how to use motor...
-----------------------------------------------------------------------------------
How to Correctly install and use CIrrOdeJointHinge (SOLVED)
http://robot-alien.com/cesar/ode/
How to Correctly install and use CIrrOdeMotor
Please tell us how to use motor...
-----------------------------------------------------------------------------------
How to Correctly install and use CIrrOdeJointHinge (SOLVED)
http://robot-alien.com/cesar/ode/
Code: Select all
//JointHinge
//Body1 - Test_OdeBody
//Body2 - Test_OdeBody1
CIrrOdeJointHinge * test_JointHinge=reinterpret_cast<CIrrOdeJointHinge *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_JOINT_HINGE_NAME),Test_OdeBody));
test_JointHinge->setBody2(Test_OdeBody1);
test_JointHinge->setHingeAxis(vector3df(0,1,0));
Last edited by Sky-Fox on Sun Feb 13, 2011 12:48 am, edited 1 time in total.
My crazy car
http://www.youtube.com/watch?v=_DjtdQut9ss
http://www.youtube.com/watch?v=_DjtdQut9ss
Last edited by Sky-Fox on Mon Feb 14, 2011 3:56 pm, edited 2 times in total.
I'll take a look at your code when I'm back home (and find some time) ... I shouldn't watch youtube here at work
Dustbin::Games on the web: https://www.dustbin-online.de/
Dustbin::Games on facebook: https://www.facebook.com/dustbingames/
Dustbin::Games on twitter: https://twitter.com/dustbingames
Dustbin::Games on facebook: https://www.facebook.com/dustbingames/
Dustbin::Games on twitter: https://twitter.com/dustbingames
The problem with flying wheels solved
New problem...
Motors are not working...
Parameters of the surface incorrect...
New problem...
Motors are not working...
Parameters of the surface incorrect...
Code: Select all
struct Sky_Car{
vector3df Car_Position; /*Позиция Обьекта в Мире*/
vector3df Car_Rotation; /*Ротация Обьекта в Мире*/
vector3df Car_Scale; /*Размер Обьекта в Мире*/
bool Damage;
//Машинка Целая
CIrrOdeBody *Car_OdeBody; /*Здесь будит храниться Тело(Динамика)*/
IAnimatedMesh *Car_AnimatedMesh; /*Здесь будит храниться сама моделька*/
IAnimatedMeshSceneNode *Car_AnimatedMeshSceneNode; /*Это уже сама Мадельна на Сцене*/
CIrrOdeGeomBox *Car_OdeGeom; /*Здесь будит храниться Геом-Каробка(Динамика)*/
//Машинка Поврежденная
CIrrOdeBody *Car_d_OdeBody; /*Здесь будит храниться Тело(Динамика)*/
IAnimatedMesh *Car_d_AnimatedMesh; /*Здесь будит храниться сама моделька*/
IAnimatedMeshSceneNode *Car_d_AnimatedMeshSceneNode; /*Это уже сама Мадельна на Сцене*/
CIrrOdeGeomBox *Car_d_OdeGeom; /*Здесь будит храниться Геом-Каробка(Динамика)*/
//Калесo 1
CIrrOdeBody *Car_whell_1_OdeBody; /*Здесь будит храниться Тело(Динамика)*/
IAnimatedMesh *Car_whell_1_AnimatedMesh; /*Здесь будит храниться сама моделька*/
IAnimatedMeshSceneNode *Car_whell_1_AnimatedMeshSceneNode; /*Это уже сама Мадельна на Сцене*/
CIrrOdeGeomSphere *Car_whell_1_OdeGeom; /*Здесь будит храниться Геом-Сфера(Динамика)*/
CIrrOdeJointHinge2 *test_1_JointHinge;
//Калесo 2
CIrrOdeBody *Car_whell_2_OdeBody; /*Здесь будит храниться Тело(Динамика)*/
IAnimatedMesh *Car_whell_2_AnimatedMesh; /*Здесь будит храниться сама моделька*/
IAnimatedMeshSceneNode *Car_whell_2_AnimatedMeshSceneNode; /*Это уже сама Мадельна на Сцене*/
CIrrOdeGeomSphere *Car_whell_2_OdeGeom; /*Здесь будит храниться Геом-Сфера(Динамика)*/
CIrrOdeJointHinge2 *test_2_JointHinge;
//Калесo 3
CIrrOdeBody *Car_whell_3_OdeBody; /*Здесь будит храниться Тело(Динамика)*/
IAnimatedMesh *Car_whell_3_AnimatedMesh; /*Здесь будит храниться сама моделька*/
IAnimatedMeshSceneNode *Car_whell_3_AnimatedMeshSceneNode; /*Это уже сама Мадельна на Сцене*/
CIrrOdeGeomSphere *Car_whell_3_OdeGeom; /*Здесь будит храниться Геом-Сфера(Динамика)*/
CIrrOdeJointHinge *test_3_JointHinge;
//Калесo 4
CIrrOdeBody *Car_whell_4_OdeBody; /*Здесь будит храниться Тело(Динамика)*/
IAnimatedMesh *Car_whell_4_AnimatedMesh; /*Здесь будит храниться сама моделька*/
IAnimatedMeshSceneNode *Car_whell_4_AnimatedMeshSceneNode; /*Это уже сама Мадельна на Сцене*/
CIrrOdeGeomSphere *Car_whell_4_OdeGeom; /*Здесь будит храниться Геом-Сфера(Динамика)*/
CIrrOdeJointHinge *test_4_JointHinge;
};
Code: Select all
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Sky_Car MyCar;
MyCar.Car_Position=vector3df(0.0f,-100.0f,0.0f);
MyCar.Car_Scale=vector3df(30.0f,30.0f,30.0f);
MyCar.Damage=0;
MyCar.Car_OdeBody=reinterpret_cast<CIrrOdeBody *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_BODY_NAME),worldNode));
//MyCar.Car_OdeBody->setPosition(MyCar.Car_Position);
MyCar.Car_AnimatedMesh=smgr->getMesh("data/car_c.x");
MyCar.Car_AnimatedMeshSceneNode=smgr->addAnimatedMeshSceneNode(MyCar.Car_AnimatedMesh,MyCar.Car_OdeBody);
MyCar.Car_AnimatedMeshSceneNode->setMaterialTexture(0,driver->getTexture("data/car_c_c1.tga"));
MyCar.Car_AnimatedMeshSceneNode->setMaterialFlag(EMF_LIGHTING,false);
MyCar.Car_AnimatedMeshSceneNode->setScale(MyCar.Car_Scale);
MyCar.Car_AnimatedMeshSceneNode->setVisible(!MyCar.Damage);
MyCar.Car_AnimatedMeshSceneNode->setPosition(MyCar.Car_Position);
MyCar.Car_OdeGeom=reinterpret_cast<CIrrOdeGeomBox *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_BOX_NAME),MyCar.Car_AnimatedMeshSceneNode));
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setUseDefined(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeMu2(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeFDir1(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeBounce(true);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeSoftERP(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeSoftCFM(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeMotion1(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeMotion2(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeMotionN(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeSlip1(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeSlip2(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeApprox1_1(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setModeApprox1_2(false);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setMu(300.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setMu2(200.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setBounce(0.200000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setBounceVel(0.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setSoftErp(0.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setSoftCfm(0.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setMotion1(0.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setMotion2(0.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setMotionN(0.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setSlip1(0.000000);
MyCar.Car_OdeGeom->getSurfaceParameters(0)->setSlip2(0.000000);
MyCar.Car_OdeGeom->setMassTotal(1.000000);
MyCar.Car_OdeGeom->drop();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MyCar.Car_d_AnimatedMesh=smgr->getMesh("data/car_d.x");
MyCar.Car_d_AnimatedMeshSceneNode=smgr->addAnimatedMeshSceneNode(MyCar.Car_d_AnimatedMesh,MyCar.Car_OdeBody);
MyCar.Car_d_AnimatedMeshSceneNode->setMaterialTexture(0,driver->getTexture("data/car_d_c1.tga"));
MyCar.Car_d_AnimatedMeshSceneNode->setMaterialFlag(EMF_LIGHTING,false);
MyCar.Car_d_AnimatedMeshSceneNode->setScale(MyCar.Car_Scale);
MyCar.Car_d_AnimatedMeshSceneNode->setVisible(MyCar.Damage);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MyCar.test_1_JointHinge=reinterpret_cast<CIrrOdeJointHinge2 *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_JOINT_HINGE2_NAME),MyCar.Car_OdeBody));
MyCar.Car_whell_1_OdeBody=reinterpret_cast<CIrrOdeBody *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_BODY_NAME),MyCar.test_1_JointHinge));
MyCar.Car_whell_1_AnimatedMesh=smgr->getMesh("data/whell.x");
MyCar.Car_whell_1_AnimatedMeshSceneNode=smgr->addAnimatedMeshSceneNode(MyCar.Car_whell_1_AnimatedMesh,MyCar.Car_whell_1_OdeBody);
MyCar.Car_whell_1_AnimatedMeshSceneNode->setMaterialTexture(0,driver->getTexture("data/whell.tga"));
MyCar.Car_whell_1_AnimatedMeshSceneNode->setMaterialFlag(EMF_LIGHTING,false);
MyCar.Car_whell_1_AnimatedMeshSceneNode->setScale(MyCar.Car_Scale);
MyCar.Car_whell_1_AnimatedMeshSceneNode->setPosition((MyCar.Car_AnimatedMeshSceneNode->getPosition())+(MyCar.Car_Scale * (MyCar.Car_AnimatedMeshSceneNode->getJointNode("b_whee1")->getPosition())));
MyCar.Car_whell_1_OdeGeom=reinterpret_cast<CIrrOdeGeomSphere *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_SPHERE_NAME),MyCar.Car_whell_1_AnimatedMeshSceneNode));
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setUseDefined(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeMu2(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeFDir1(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeBounce(true);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeSoftERP(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeSoftCFM(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeMotion1(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeMotion2(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeMotionN(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeSlip1(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeSlip2(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeApprox1_1(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setModeApprox1_2(false);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setMu(200.000000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setMu2(125.000000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setBounce(0.250000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setBounceVel(0.000000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setSoftErp(0.000000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setSoftCfm(0.000000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setMotion1(0.000000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setMotion2(0.000000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setMotionN(0.000000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setSlip1(0.250000);
MyCar.Car_whell_1_OdeGeom->getSurfaceParameters(0)->setSlip2(0.250000);
MyCar.Car_whell_1_OdeGeom->setMassTotal(0.010000);
MyCar.Car_whell_1_OdeGeom->drop();
MyCar.test_1_JointHinge->setBody2(MyCar.Car_whell_1_OdeBody);
MyCar.test_1_JointHinge->setHingeAxis1(vector3df(0,1,0));
MyCar.test_1_JointHinge->setHingeAxis2(vector3df(1,0,0));
MyCar.test_1_JointHinge->setPosition((MyCar.Car_AnimatedMeshSceneNode->getPosition())+(MyCar.Car_Scale * (MyCar.Car_AnimatedMeshSceneNode->getJointNode("b_whee1")->getPosition())));
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eHiStop, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eLoStop, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eVel, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eMaxForce, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eFudge, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eBounce, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eCFM, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eStopERP, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eStopCFM, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eSuspensionERP, false);
MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eSuspensionCFM, false);
//MyCar.test_1_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eParamEnd, false);
CIrrOdeMotor * test_1_OdeMotor=reinterpret_cast<CIrrOdeMotor *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_MOTOR_NAME),MyCar.Car_whell_1_OdeBody));
test_1_OdeMotor->setJoint(MyCar.test_1_JointHinge);
test_1_OdeMotor->setAutomaticCulling(EAC_BOX);
test_1_OdeMotor->setAxis(0);
test_1_OdeMotor->setForce(500.000000);
test_1_OdeMotor->setVelocity(1.000000);
test_1_OdeMotor->setEnabled(true);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MyCar.test_2_JointHinge=reinterpret_cast<CIrrOdeJointHinge2 *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_JOINT_HINGE2_NAME),MyCar.Car_OdeBody));
MyCar.Car_whell_2_OdeBody=reinterpret_cast<CIrrOdeBody *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_BODY_NAME),MyCar.test_2_JointHinge));
MyCar.Car_whell_2_AnimatedMesh=smgr->getMesh("data/whell.x");
MyCar.Car_whell_2_AnimatedMeshSceneNode=smgr->addAnimatedMeshSceneNode(MyCar.Car_whell_1_AnimatedMesh,MyCar.Car_whell_2_OdeBody);
MyCar.Car_whell_2_AnimatedMeshSceneNode->setMaterialTexture(0,driver->getTexture("data/whell.tga"));
MyCar.Car_whell_2_AnimatedMeshSceneNode->setMaterialFlag(EMF_LIGHTING,false);
MyCar.Car_whell_2_AnimatedMeshSceneNode->setScale(MyCar.Car_Scale);
MyCar.Car_whell_2_AnimatedMeshSceneNode->setPosition((MyCar.Car_AnimatedMeshSceneNode->getPosition())+((MyCar.Car_AnimatedMeshSceneNode->getJointNode("b_whee2")->getPosition())*MyCar.Car_Scale));
MyCar.Car_whell_2_OdeGeom=reinterpret_cast<CIrrOdeGeomSphere *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_SPHERE_NAME),MyCar.Car_whell_2_AnimatedMeshSceneNode));
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setUseDefined(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeMu2(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeFDir1(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeBounce(true);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeSoftERP(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeSoftCFM(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeMotion1(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeMotion2(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeMotionN(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeSlip1(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeSlip2(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeApprox1_1(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setModeApprox1_2(false);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setMu(200.000000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setMu2(125.000000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setBounce(0.250000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setBounceVel(0.000000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setSoftErp(0.000000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setSoftCfm(0.000000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setMotion1(0.000000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setMotion2(0.000000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setMotionN(0.000000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setSlip1(0.250000);
MyCar.Car_whell_2_OdeGeom->getSurfaceParameters(0)->setSlip2(0.250000);
MyCar.Car_whell_2_OdeGeom->setMassTotal(0.010000);
MyCar.Car_whell_2_OdeGeom->drop();
MyCar.test_2_JointHinge->setBody2(MyCar.Car_whell_2_OdeBody);
MyCar.test_2_JointHinge->setHingeAxis1(vector3df(0,1,0));
MyCar.test_2_JointHinge->setHingeAxis2(vector3df(1,0,0));
MyCar.test_2_JointHinge->setPosition((MyCar.Car_AnimatedMeshSceneNode->getPosition())+((MyCar.Car_AnimatedMeshSceneNode->getJointNode("b_whee2")->getPosition())*MyCar.Car_Scale));
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eHiStop, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eLoStop, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eVel, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eMaxForce, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eFudge, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eBounce, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eCFM, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eStopERP, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eStopCFM, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eSuspensionERP, false);
MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eSuspensionCFM, false);
//MyCar.test_2_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eParamEnd, false);
CIrrOdeMotor * test_2_OdeMotor=reinterpret_cast<CIrrOdeMotor *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_MOTOR_NAME),MyCar.Car_whell_2_OdeBody));
test_2_OdeMotor->setJoint(MyCar.test_2_JointHinge);
test_2_OdeMotor->setAutomaticCulling(EAC_BOX);
test_2_OdeMotor->setAxis(0);
test_2_OdeMotor->setForce(500.000000);
test_2_OdeMotor->setVelocity(1.000000);
test_2_OdeMotor->setEnabled(true);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MyCar.test_3_JointHinge=reinterpret_cast<CIrrOdeJointHinge *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_JOINT_HINGE_NAME),MyCar.Car_OdeBody));
MyCar.Car_whell_3_OdeBody=reinterpret_cast<CIrrOdeBody *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_BODY_NAME),MyCar.test_3_JointHinge));
MyCar.Car_whell_3_AnimatedMesh=smgr->getMesh("data/whell.x");
MyCar.Car_whell_3_AnimatedMeshSceneNode=smgr->addAnimatedMeshSceneNode(MyCar.Car_whell_1_AnimatedMesh,MyCar.Car_whell_3_OdeBody);
MyCar.Car_whell_3_AnimatedMeshSceneNode->setMaterialTexture(0,driver->getTexture("data/whell.tga"));
MyCar.Car_whell_3_AnimatedMeshSceneNode->setMaterialFlag(EMF_LIGHTING,false);
MyCar.Car_whell_3_AnimatedMeshSceneNode->setScale(MyCar.Car_Scale);
MyCar.Car_whell_3_AnimatedMeshSceneNode->setPosition((MyCar.Car_AnimatedMeshSceneNode->getPosition())+((MyCar.Car_AnimatedMeshSceneNode->getJointNode("b_whee3")->getPosition())*MyCar.Car_Scale));
MyCar.Car_whell_3_OdeGeom=reinterpret_cast<CIrrOdeGeomSphere *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_SPHERE_NAME),MyCar.Car_whell_3_AnimatedMeshSceneNode));
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setUseDefined(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeMu2(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeFDir1(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeBounce(true);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeSoftERP(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeSoftCFM(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeMotion1(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeMotion2(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeMotionN(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeSlip1(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeSlip2(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeApprox1_1(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setModeApprox1_2(false);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setMu(200.000000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setMu2(125.000000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setBounce(0.250000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setBounceVel(0.000000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setSoftErp(0.000000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setSoftCfm(0.000000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setMotion1(0.000000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setMotion2(0.000000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setMotionN(0.000000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setSlip1(0.250000);
MyCar.Car_whell_3_OdeGeom->getSurfaceParameters(0)->setSlip2(0.250000);
MyCar.Car_whell_3_OdeGeom->setMassTotal(0.010000);
MyCar.Car_whell_3_OdeGeom->drop();
MyCar.test_3_JointHinge->setBody2(MyCar.Car_whell_3_OdeBody);
MyCar.test_3_JointHinge->setHingeAxis(vector3df(1,0,0));
MyCar.test_3_JointHinge->setPosition((MyCar.Car_AnimatedMeshSceneNode->getPosition())+((MyCar.Car_AnimatedMeshSceneNode->getJointNode("b_whee3")->getPosition())*MyCar.Car_Scale));
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eHiStop, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eLoStop, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eVel, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eMaxForce, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eFudge, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eBounce, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eCFM, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eStopERP, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eStopCFM, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eSuspensionERP, false);
MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eSuspensionCFM, false);
//MyCar.test_3_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eParamEnd, false);
CIrrOdeMotor * test_3_OdeMotor=reinterpret_cast<CIrrOdeMotor *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_MOTOR_NAME),MyCar.Car_whell_3_OdeBody));
test_3_OdeMotor->setJoint(MyCar.test_3_JointHinge);
test_3_OdeMotor->setAutomaticCulling(EAC_BOX);
test_3_OdeMotor->setAxis(0);
test_3_OdeMotor->setForce(500.000000);
test_3_OdeMotor->setVelocity(1.000000);
test_3_OdeMotor->setEnabled(true);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MyCar.test_4_JointHinge=reinterpret_cast<CIrrOdeJointHinge *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_JOINT_HINGE_NAME),MyCar.Car_OdeBody));
MyCar.Car_whell_4_OdeBody=reinterpret_cast<CIrrOdeBody *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_BODY_NAME),MyCar.test_4_JointHinge));
MyCar.Car_whell_4_AnimatedMesh=smgr->getMesh("data/whell.x");
MyCar.Car_whell_4_AnimatedMeshSceneNode=smgr->addAnimatedMeshSceneNode(MyCar.Car_whell_1_AnimatedMesh,MyCar.Car_whell_4_OdeBody);
MyCar.Car_whell_4_AnimatedMeshSceneNode->setMaterialTexture(0,driver->getTexture("data/whell.tga"));
MyCar.Car_whell_4_AnimatedMeshSceneNode->setMaterialFlag(EMF_LIGHTING,false);
MyCar.Car_whell_4_AnimatedMeshSceneNode->setScale(MyCar.Car_Scale);
MyCar.Car_whell_4_AnimatedMeshSceneNode->setPosition((MyCar.Car_AnimatedMeshSceneNode->getPosition())+((MyCar.Car_AnimatedMeshSceneNode->getJointNode("b_whee4")->getPosition())*MyCar.Car_Scale));
MyCar.Car_whell_4_OdeGeom=reinterpret_cast<CIrrOdeGeomSphere *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_GEOM_SPHERE_NAME),MyCar.Car_whell_4_AnimatedMeshSceneNode));
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setUseDefined(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeMu2(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeFDir1(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeBounce(true);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeSoftERP(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeSoftCFM(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeMotion1(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeMotion2(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeMotionN(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeSlip1(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeSlip2(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeApprox1_1(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setModeApprox1_2(false);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setMu(200.000000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setMu2(125.000000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setBounce(0.250000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setBounceVel(0.000000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setSoftErp(0.000000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setSoftCfm(0.000000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setMotion1(0.000000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setMotion2(0.000000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setMotionN(0.000000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setSlip1(0.250000);
MyCar.Car_whell_4_OdeGeom->getSurfaceParameters(0)->setSlip2(0.250000);
MyCar.Car_whell_4_OdeGeom->setMassTotal(0.010000);
MyCar.Car_whell_4_OdeGeom->drop();
MyCar.test_4_JointHinge->setBody2(MyCar.Car_whell_4_OdeBody);
MyCar.test_4_JointHinge->setHingeAxis(vector3df(1,0,0));
MyCar.test_4_JointHinge->setPosition((MyCar.Car_AnimatedMeshSceneNode->getPosition())+((MyCar.Car_AnimatedMeshSceneNode->getJointNode("b_whee4")->getPosition())*MyCar.Car_Scale));
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eHiStop, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eLoStop, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eVel, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eMaxForce, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eFudge, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eBounce, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eCFM, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eStopERP, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eStopCFM, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eSuspensionERP, false);
MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eSuspensionCFM, false);
//MyCar.test_4_JointHinge->setParameter(0, irr::ode::CIrrOdeJoint::eParamEnd, false);
CIrrOdeMotor * test_4_OdeMotor=reinterpret_cast<CIrrOdeMotor *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_MOTOR_NAME),MyCar.Car_whell_4_OdeBody));
test_4_OdeMotor->setJoint(MyCar.test_4_JointHinge);
test_4_OdeMotor->setAutomaticCulling(EAC_BOX);
test_4_OdeMotor->setAxis(0);
test_4_OdeMotor->setForce(500.000000);
test_4_OdeMotor->setVelocity(10.000000);
test_4_OdeMotor->setEnabled(true);
Please tell us how to set "Anchor1" and "Anchor2" for Joint Hinge2
Code: Select all
MyCar.test_1_JointHinge=reinterpret_cast<CIrrOdeJointHinge2 *>(smgr->addSceneNode(CIrrOdeSceneNode::nodeNameToC8(IRR_ODE_JOINT_HINGE2_NAME),MyCar.Car_OdeBody));
MyCar.test_1_JointHinge->setBody2(MyCar.Car_whell_1_OdeBody);
MyCar.test_1_JointHinge->setHingeAxis1(vector3df(0,1,0));
MyCar.test_1_JointHinge->setHingeAxis2(vector3df(1,0,0));
Last edited by Sky-Fox on Mon Feb 14, 2011 3:57 pm, edited 1 time in total.
Sky-Fox, Brainsaw is a good guy and does this as a hobby. He knows his stuff and can/will help you in time. Its sort of difficult to do so with so many posts.
Few suggestions.
1) Try to edit posts and just add to them rather then make more.
2) Code examples are helpful but code pages?
3) Remember he created the wrapper not the engine. However I will admit he is the best resource for ODE info on the net.
Few suggestions.
1) Try to edit posts and just add to them rather then make more.
2) Code examples are helpful but code pages?
3) Remember he created the wrapper not the engine. However I will admit he is the best resource for ODE info on the net.
@ulao: thanks for the compliment, I guess I'm currently turning red (lucky me noone's around right now ).
@sky-fox: I have tried to get it working yesterday, and I partly succeeded. The car is working, but it still sinks into the ground a bit (maybe try to modify the size of the spheres you use for the wheels). You can download a modified version at http://bulletbyte.de/download/SkyFox_game.zip (I'll leave it there for a week or so). Here are some issues I stumbled upon:
- you don't need to set every parameter of the surfaces manually, by default the flags are disabled
- initialize the attributes in order. Add a hinge to the car and set it's position and the other stuff, and then add the wheel, not vice versa. If you don't do this in order it seems to confuse the wrapper quite a bit
- you shouldn't set the positions of the child nodes. If you attach a node to another (e.g. the hinges to the body) you set the position of the hinge to the right position and attach the wheels at (0,0,0)
- set the hi and lo stop of the steering axes of the hinge two joint, this way it stays in this position (or attach a CIrrOdeServo to those joints).
If you really want to hard-code the levels I have a tip: install IrrEdit and the IrrOdEdit plugin and save the scene before initializing physics (which breaks the scene graph tree), this way you can see where all the nodes are and might be able to figure out what's wrong. It also helps to give a unique name to every node.
@sky-fox: I have tried to get it working yesterday, and I partly succeeded. The car is working, but it still sinks into the ground a bit (maybe try to modify the size of the spheres you use for the wheels). You can download a modified version at http://bulletbyte.de/download/SkyFox_game.zip (I'll leave it there for a week or so). Here are some issues I stumbled upon:
- you don't need to set every parameter of the surfaces manually, by default the flags are disabled
- initialize the attributes in order. Add a hinge to the car and set it's position and the other stuff, and then add the wheel, not vice versa. If you don't do this in order it seems to confuse the wrapper quite a bit
- you shouldn't set the positions of the child nodes. If you attach a node to another (e.g. the hinges to the body) you set the position of the hinge to the right position and attach the wheels at (0,0,0)
- set the hi and lo stop of the steering axes of the hinge two joint, this way it stays in this position (or attach a CIrrOdeServo to those joints).
If you really want to hard-code the levels I have a tip: install IrrEdit and the IrrOdEdit plugin and save the scene before initializing physics (which breaks the scene graph tree), this way you can see where all the nodes are and might be able to figure out what's wrong. It also helps to give a unique name to every node.
Dustbin::Games on the web: https://www.dustbin-online.de/
Dustbin::Games on facebook: https://www.facebook.com/dustbingames/
Dustbin::Games on twitter: https://twitter.com/dustbingames
Dustbin::Games on facebook: https://www.facebook.com/dustbingames/
Dustbin::Games on twitter: https://twitter.com/dustbingames
@Brainsaw: thanks!
My Video ^_^
http://www.youtube.com/watch?v=veWZIMrMTvs
http://www.youtube.com/watch?v=6wm10jEFZEY
update 16.02.2011 21:43
http://www.youtube.com/watch?v=qeaIa1xgEew
My Video ^_^
http://www.youtube.com/watch?v=veWZIMrMTvs
http://www.youtube.com/watch?v=6wm10jEFZEY
update 16.02.2011 21:43
http://www.youtube.com/watch?v=qeaIa1xgEew
I have uploaded a new version. The only change is that there are now two forests (created with my "Random Forest Plugin" for IrrEdit - http://irrlicht.sourceforge.net/phpBB2/ ... hp?t=43067) in the IrrOdeCar demo. This also shows a nice feature of that new plugin: I have added IrrOde geoms as children of the tree templates, and these are also copied so that you can collide with the trees generated by the plugin.
Dustbin::Games on the web: https://www.dustbin-online.de/
Dustbin::Games on facebook: https://www.facebook.com/dustbingames/
Dustbin::Games on twitter: https://twitter.com/dustbingames
Dustbin::Games on facebook: https://www.facebook.com/dustbingames/
Dustbin::Games on twitter: https://twitter.com/dustbingames