本文整理汇总了C++中dWorldCreate函数的典型用法代码示例。如果您正苦于以下问题:C++ dWorldCreate函数的具体用法?C++ dWorldCreate怎么用?C++ dWorldCreate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dWorldCreate函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: main
int main (int argc, char **argv)
{
// setup pointers to drawstuff callback functions
dsFunctions fn;
fn.version = DS_VERSION;
fn.start = &start;
fn.step = &simLoop;
fn.command = &command;
fn.stop = 0;
fn.path_to_textures = "../../drawstuff/textures";
// create world
world = dWorldCreate();
space = dHashSpaceCreate (0);
contactgroup = dJointGroupCreate (0);
dWorldSetGravity (world,0,0,-0.5);
dWorldSetCFM (world,1e-5);
dWorldSetAutoDisableFlag (world,1);
dWorldSetContactMaxCorrectingVel (world,0.1);
dWorldSetContactSurfaceLayer (world,0.001);
dCreatePlane (space,0,0,1,0);
memset (obj,0,sizeof(obj));
// run simulation
dsSimulationLoop (argc,argv,352,288,&fn);
dJointGroupDestroy (contactgroup);
dSpaceDestroy (space);
dWorldDestroy (world);
return 0;
}
开发者ID:aliverobotics,项目名称:Pumas-SmallSize,代码行数:33,代码来源:test_boxstack.cpp
示例2: main
int main( int argc, char **argv )
{
// setup pointers to drawstuff callback functions
dsFunctions fn;
fn.version = DS_VERSION;
fn.start = &start;
fn.step = &simLoop;
fn.command = &command;
fn.stop = 0;
fn.path_to_textures = DRAWSTUFF_TEXTURE_PATH;
// create world
dInitODE2( 0 );
world = dWorldCreate();
space = dSimpleSpaceCreate( 0 );
contactgroup = dJointGroupCreate( 0 );
dWorldSetGravity( world,0,0,-0.5 );
dWorldSetCFM( world,1e-5 );
dCreatePlane( space,0,0,1,0 );
memset( obj,0,sizeof( obj ) );
// run simulation
dsSimulationLoop( argc,argv,352,288,&fn );
dJointGroupDestroy( contactgroup );
dSpaceDestroy( space );
dWorldDestroy( world );
dCloseODE();
return 0;
}
开发者ID:Belxjander,项目名称:Asuna,代码行数:31,代码来源:demo_moving_convex.cpp
示例3: dWorldCreate
// initialize server (supply world dimensions)
bool PhysicsServer::init(int groundSizeX, int groundSizeY)
{
if (groundSizeX <= 20 || groundSizeY <= 20)
return false;
// create global ODE world
_world = dWorldCreate();
// create global space
_space = dHashSpaceCreate(0);
// create group for handling collisions
_contactgroup = dJointGroupCreate (0);
// make ground a bit slippery :)
_envData.slip = 0.15;
// TODO: let user specify ground surface properties
// set world properties
dWorldSetGravity (_world,0,0,-(PHYS_GRAVITY*PHYS_MASS_SCALE));
dWorldSetERP (_world, 0.6);
// create ground and walls (0,0,0 is the ground's center)
// and put them in their own space
_envSpace = dSimpleSpaceCreate(_space);
_ground = dCreatePlane (_envSpace,0, 0, 1, 0);
dGeomSetData(_ground, (void*)&_envData);
_wall[0] = dCreatePlane(_envSpace, 1, 0, 0, -(groundSizeX/2.0) ); // a,b,c,d
_wall[1] = dCreatePlane(_envSpace, -1, 0, 0, -(groundSizeX/2.0) ); // a,b,c,d
_wall[2] = dCreatePlane(_envSpace, 0, 1, 0, -(groundSizeY/2.0) ); // a,b,c,d
_wall[3] = dCreatePlane(_envSpace, 0, -1, 0, -(groundSizeY/2.0) ); // a,b,c,d
return true;
}
开发者ID:gpertzov,项目名称:CarND,代码行数:36,代码来源:PhysicsServer.cpp
示例4: dWorldCreate
void RigidBodyEnvironment::createWorld(void)
{
// BEGIN SETTING UP AN OPENDE ENVIRONMENT
// ***********************************
bodyWorld = dWorldCreate();
space = dHashSpaceCreate(0);
dWorldSetGravity(bodyWorld, 0, 0, -0.981);
double lx = 0.2;
double ly = 0.2;
double lz = 0.1;
dMassSetBox(&m, 1, lx, ly, lz);
boxGeom = dCreateBox(space, lx, ly, lz);
boxBody = dBodyCreate(bodyWorld);
dBodySetMass(boxBody, &m);
dGeomSetBody(boxGeom, boxBody);
// *********************************
// END SETTING UP AN OPENDE ENVIRONMENT
setPlanningParameters();
}
开发者ID:danathughes,项目名称:ompl-release,代码行数:26,代码来源:OpenDERigidBodyPlanning.cpp
示例5: dInitODE2
Scene::Scene( void )
{
if( m_instance_count == 0 )
dInitODE2( 0 );
m_instance_count++;
m_obj_p = 0;
m_dworld = dWorldCreate();
collision_init();
for( int x = 0; x < 4; x++ )
{
for( int y = 0; y < 4; y++ )
{
float xpos = -160 + float(x)*76.0f + 46.5f;
float ypos = 240 - float(y)*88.0f - 61.5f;
SceneObj *arse_p = new SceneObj( this );
dBodySetPosition( arse_p->m_dbody, xpos, ypos, 0.0f );
arse_p->m_texid = x + y*4;
}
}
m_motion[0] = 0; m_motion_lopass[0] = 0; m_motion_hipass[0] = 0;
m_motion[1] = 0; m_motion_lopass[1] = 0; m_motion_hipass[1] = 0;
m_motion[2] = 0; m_motion_lopass[2] = 0; m_motion_hipass[2] = 0;
for( int t = 0; t < 16; t++ )
m_textures[t] = 0;
}
开发者ID:mike-ferenduros,项目名称:Shakey,代码行数:31,代码来源:scene.cpp
示例6: SetParam
CPhysicManager::CPhysicManager(IEngine* _Engine):CBaseObject(_Engine){
SetParam("BaseClass","PhysicManager");
SetParam("Type","CPhysicManager");
SetParam("Name","-");
dSetErrorHandler (SilenceMessage); //затыкаем рот идиотским ошибкам
dSetDebugHandler (SilenceMessage); //затыкаем рот идиотским ошибкам
dSetMessageHandler (SilenceMessage); //затыкаем рот идиотским ошибкам
calc_time= 0.0f;
world = dWorldCreate();
dWorldSetGravity(world, 0, 0, -0.01 );
space=dHashSpaceCreate(0);
contactgroup = dJointGroupCreate(0);
LOGGER->LogMsg("+CPhysicManager");
ptr_world = world;
ptr_contactgroup = contactgroup;
dWorldSetCFM(world, 1e-5);
dWorldSetERP(world, 0.2);
dWorldSetContactMaxCorrectingVel(world, 0.9);
dWorldSetContactSurfaceLayer(world, 0.001);
dWorldSetAutoDisableFlag(world, 1);
// ground =
#define SHIRINA 1000
//dGeomID tmp = dCreateBox( space, SHIRINA, SHIRINA, 1);
//dGeomSetPosition(tmp, SHIRINA/2, SHIRINA/2, 0); // двигаем центр координат
//tmp = dCreateBox( space, 1, SHIRINA, SHIRINA);
//dGeomSetPosition(tmp, 0, SHIRINA/2, SHIRINA/2); // двигаем центр координат
//tmp = dCreateBox( space, SHIRINA, 1, SHIRINA);
//dGeomSetPosition(tmp, SHIRINA/2, 0, SHIRINA/2); // двигаем центр координат
dCreatePlane (space,0,0,1,0);
//dCreatePlane (space,1,1,0,0);
//dCreatePlane (space,0,1,0,0);
//dCreatePlane (space,1,0,0,0);
//dCreatePlane (space,0,0,20,0);
//dCreatePlane (space,0,10,0,0);
//dCreatePlane (space,10,0,0,0);
//dCreatePlane (space,0,0,1,0);
//dCreatePlane (space,0,0,1,0);
//dCreatePlane (space,0,0,1,0);
//dCreatePlane (space,0,0,1,0);
//dCreatePlane (space,0,0,1,0);
};
开发者ID:RandomAmbersky,项目名称:AmberSkyNet,代码行数:60,代码来源:CPhysicManager.cpp
示例7: dWorldCreate
void HarrierSim::start2()
{
// setDrawStuff();
world = dWorldCreate();
space = dHashSpaceCreate(0);
contactgroup = dJointGroupCreate(0);
ground = dCreatePlane(space, 0, 0, 1, 0);
dWorldSetGravity(world,0,0,-0.5);
dWorldSetCFM (world,1e-6);
dWorldSetERP (world,1);
//dWorldSetAutoDisableFlag (world,1);
dWorldSetContactMaxCorrectingVel (world,0.1);
//set the contact penetration
dWorldSetContactSurfaceLayer(world, 0.001);
makeHarrier();
itsHarrierObject = vp->load3DSObject("./etc/spaceship.3ds", "./etc/textures/spaceshiptexture.ppm");
itsHarrierObject.scale = 0.1;
//set the viewpoint
double xyz[3] = {0 , 25.0, 20};
double hpr[3] = {-90.0,-35,0.0};
vp->dsSetViewpoint (xyz,hpr);
vp->setZoom(1.5);
}
开发者ID:ulyssesrr,项目名称:carmen_lcad,代码行数:30,代码来源:HarrierSim.C
示例8: main
/* ------------------------
* メイン関数
------------------------ */
int main(int argc, char *argv[])
{
/* txtデータ読み込み */
LoadTxt("route.txt", routeX, routeY, routeZ, &lineRoute);
LoadTxt("obstacle.txt", obstX, obstY, obstZ, &lineObst);
/* ODEの初期化 */
dInitODE();
/* 描画関数の設定 */
setDrawStuff();
/* ワールド, スペース, 接触点グループの生成 */
world = dWorldCreate();
space = dHashSpaceCreate(0);
contactgroup = dJointGroupCreate(0);
/* 地面, 重力の生成 */
ground = dCreatePlane(space,0,0,1,0);
dWorldSetGravity(world, 0.0, 0.0, -9.8);
/* CFM, ERPの設定 */
dWorldSetCFM(world,1e-3);
dWorldSetERP(world,0.8);
/* 全方向移動ロボットの生成 */
t1 = clock();
MakeBox();
MakeOmni();
/* シミュレーションループ */
dsSimulationLoop(argc,argv,640,480,&fn);
/* 接触点グループ, スペース, ワールドの破壊, ODEの終了 */
dJointGroupDestroy(contactgroup);
dSpaceDestroy(space);
dWorldDestroy(world);
dCloseODE();
return 0;
}
开发者ID:PrinzEugen7,项目名称:Robotics,代码行数:35,代码来源:main.cpp
示例9: locker
/**
* \brief This function initializes the ode world.
*
* pre:
* - world_init = false
*
* post:
* - world, space and contactgroup should be created
* - the ODE world parameters should be set
* - at the end world_init have to become true
*/
void WorldPhysics::initTheWorld(void) {
MutexLocker locker(&iMutex);
// if world_init = true debug something
if (!world_init) {
//LOG_DEBUG("init physics world");
world = dWorldCreate();
space = dHashSpaceCreate(0);
contactgroup = dJointGroupCreate(0);
old_gravity = world_gravity;
old_cfm = world_cfm;
old_erp = world_erp;
dWorldSetGravity(world, world_gravity.x(), world_gravity.y(), world_gravity.z());
dWorldSetCFM(world, (dReal)world_cfm);
dWorldSetERP (world, (dReal)world_erp);
dWorldSetAutoDisableFlag (world,0);
// if usefull for some tests a ground can be created here
plane = 0; //dCreatePlane (space,0,0,1,0);
world_init = 1;
drawStruct draw;
draw.ptr_draw = (DrawInterface*)this;
if(control->graphics)
control->graphics->addDrawItems(&draw);
}
//printf("initTheWorld..\n");
}
开发者ID:envire,项目名称:simulation-envire_mars,代码行数:40,代码来源:WorldPhysics.cpp
示例10: logs
bool Physics::init(){
#ifdef LOOP_DEBUG
logs().main.write("START PHYSICS INIT");
#endif
#ifdef ODE
worldId=dWorldCreate();
#endif
#ifdef LOOP_DEBUG
logs().main.write("START PHYSICS INIT SCRIPT");
#endif
LuaType* luaa=script().add("physics");
LuaType* clua=script().add("gravity",luaa);
script().add("x",&gravity.x,clua);
script().add("y",&gravity.y,clua);
script().add("z",&gravity.z,clua);
script().add("collide",&collide,luaa);
script().add("trace",luaTrace,luaa);
#ifdef LOOP_DEBUG
logs().main.write("START PHYSICS INIT END");
#endif
return true;
}
开发者ID:jameshegarty,项目名称:bajaengine,代码行数:32,代码来源:physics.cpp
示例11: dInitODE
void PhysWorld::Initialize()
{
dInitODE();
mWorld = dWorldCreate();
mSpace = dSimpleSpaceCreate(0);
isInitialized = true;
}
开发者ID:SamBushman,项目名称:SlayADragon,代码行数:7,代码来源:CollisionDetection.cpp
示例12: RemoveChildren
void PhysicsServer::Init()
{
if (m_bInited)
{
return;
}
RemoveChildren();
m_Objects.clear();
dInitODE();
m_WorldID = dWorldCreate();
m_DefaultSpaceID = dHashSpaceCreate( NULL );
m_ContactGroupID = dJointGroupCreate( 0 );
dWorldSetAutoDisableFlag( m_WorldID, 1 );
dWorldSetAutoDisableAverageSamplesCount( m_WorldID, 1 );
if (m_WorldID)
{
SetERP( m_ERP );
SetCFM( m_CFM );
SetGravity( m_Gravity );
}
m_pDefMaterial = g_pObjectServer->FindObject<PhysMaterial>( "defaullt_mtl", this );
if (!m_pDefMaterial)
{
m_pDefMaterial = new PhysMaterial();
m_pDefMaterial->SetName( "defaullt_mtl" );
AddChild( m_pDefMaterial );
}
m_bInited = true;
} // PhysicsServer::Init
开发者ID:skopp,项目名称:rush,代码行数:35,代码来源:physicsserver.cpp
示例13: dInitODE
// Called by Physics::Server when the Level is attached to the server.
void CLevel::Activate()
{
TimeToSim = 0.0;
// Initialize ODE //???per-Level?
dInitODE();
ODEWorldID = dWorldCreate();
dWorldSetQuickStepNumIterations(ODEWorldID, 20);
// FIXME(enno): is a quadtree significantly faster? -- can't count geoms with quadtree
ODECommonSpaceID = dSimpleSpaceCreate(NULL);
ODEDynamicSpaceID = dSimpleSpaceCreate(ODECommonSpaceID);
ODEStaticSpaceID = dSimpleSpaceCreate(ODECommonSpaceID);
dWorldSetGravity(ODEWorldID, Gravity.x, Gravity.y, Gravity.z);
dWorldSetContactSurfaceLayer(ODEWorldID, 0.001f);
dWorldSetContactMaxCorrectingVel(ODEWorldID, 100.0f);
dWorldSetERP(ODEWorldID, 0.2f); // ODE's default value
dWorldSetCFM(ODEWorldID, 0.001f); // the default is 10^-5
// setup autodisabling
dWorldSetAutoDisableFlag(ODEWorldID, 1);
dWorldSetAutoDisableSteps(ODEWorldID, 5);
//dWorldSetAutoDisableTime(ODEWorldID, 1.f);
dWorldSetAutoDisableLinearThreshold(ODEWorldID, 0.05f); // default is 0.01
dWorldSetAutoDisableAngularThreshold(ODEWorldID, 0.1f); // default is 0.01
// create a Contact group for joints
ContactJointGroup = dJointGroupCreate(0);
}
开发者ID:moltenguy1,项目名称:deusexmachina,代码行数:31,代码来源:Level.cpp
示例14: constructWorldForTest
void constructWorldForTest (dReal gravity, int bodycount,
/* body 1 pos */ dReal pos1x, dReal pos1y, dReal pos1z,
/* body 2 pos */ dReal pos2x, dReal pos2y, dReal pos2z,
/* body 1 rotation axis */ dReal ax1x, dReal ax1y, dReal ax1z,
/* body 1 rotation axis */ dReal ax2x, dReal ax2y, dReal ax2z,
/* rotation angles */ dReal a1, dReal a2)
{
// create world
world = dWorldCreate();
dWorldSetERP (world,0.2);
dWorldSetCFM (world,1e-6);
dWorldSetGravity (world,0,0,gravity);
dMass m;
dMassSetBox (&m,1,SIDE,SIDE,SIDE);
dMassAdjust (&m,MASS);
body[0] = dBodyCreate (world);
dBodySetMass (body[0],&m);
dBodySetPosition (body[0], pos1x, pos1y, pos1z);
dQuaternion q;
dQFromAxisAndAngle (q,ax1x,ax1y,ax1z,a1);
dBodySetQuaternion (body[0],q);
if (bodycount==2) {
body[1] = dBodyCreate (world);
dBodySetMass (body[1],&m);
dBodySetPosition (body[1], pos2x, pos2y, pos2z);
dQFromAxisAndAngle (q,ax2x,ax2y,ax2z,a2);
dBodySetQuaternion (body[1],q);
}
else body[1] = 0;
}
开发者ID:CentreForBioRobotics,项目名称:lpzrobots,代码行数:33,代码来源:test_joints.cpp
示例15: BaseDomain
ODEDomain::ODEDomain(char const *space_type, Input *input) : BaseDomain(input)
{
printf("ODEDomain constructor\n");
dInitODE();
world = dWorldCreate();
contactgroup = dJointGroupCreate (0);
//dWorldSetAutoDisableFlag(world,1);
//dWorldSetCFM(world,1e-5);
//Set and get the global CFM (constraint force mixing) value. Typical values are in the range 10-9 -- 1. The default is 10-5 if single precision is being used, or 10-10 if double precision is being used.
//TODO HERE HAS TO BE ANOTHER PARAMETR
//dWorldSetContactSurfaceLayer(world,0.001);
//dWorldSetQuickStepNumIterations (world,ITERS);
dRandSetSeed (time(NULL));
setGravity(m_input->gravity_v[0],m_input->gravity_v[1],m_input->gravity_v[2]);
if (space_type == std::string("quad"))
{
dVector3 Center = {boundaries[0][0]+delta[0]*0.5, boundaries[1][0]+delta[1]*0.5, boundaries[2][0]+delta[2]*0.5, 0};
dVector3 Extents = {delta[0] * 0.55, delta[1] * 0.55, delta[2] * 0.55, 0};
printf(":::: Using Quad Tree Space\n");
space = dQuadTreeSpaceCreate (0, Center, Extents, 6);
}
else if (space_type == std::string("hash"))
{
printf(":::: Using Hash Space\n");
space = dHashSpaceCreate (0);
//dHashSpaceSetLevels (space,-10,10);
}
else if (space_type == std::string("sap"))
{
printf(":::: Using Sweep And Prune Space\n");
space = dSweepAndPruneSpaceCreate (0, dSAP_AXES_XYZ);
}
else if (space_type == std::string("simple"))
{
printf(":::: Using Simple Space\n");
space = dSimpleSpaceCreate(0);
}
if (!space)
{
printf(":::: Using Sweep And Prune Space\n");
space = dSweepAndPruneSpaceCreate (0, dSAP_AXES_XYZ);
}
//TODO redo tests
//I did tests: deposition of 10000 particles without& (~catBits[PARTICLES])& (~catBits[PARTICLES]) collisions.
//SWAP: 6 sec
//HASH: 7.15 sec
//QUAD: 41.8 sec
//SIMLE: 59 sec
printf("ODE conf: %s", dGetConfiguration());
printf("\n:::: sizeof(dReal)=%lu\n\n", sizeof(dReal));
}
开发者ID:saneku,项目名称:PODE2.0,代码行数:60,代码来源:ODEDomain.cpp
示例16: main
int main(int argc, char** argv)
{
init_gfx();
init_2d();
// create world and set gravity
world = dWorldCreate();
dWorldSetGravity(world, 0, -5, 0);
// create a body for our ball
dBodyID body = dBodyCreate(world);
dBodySetPosition(body, 0, 0, 0);
for (;;) { // infinite loop
// get the position and move there in OpenGL
const dReal* pos = dBodyGetPosition(body);
glTranslatef(pos[0], pos[1], pos[2]);
draw_circle();
// integrate all bodies
dWorldQuickStep(world, 0.01);
// redraw screen
step();
}
}
开发者ID:luqui,项目名称:luqui-misc,代码行数:28,代码来源:falling_ball.cpp
示例17: main
int main(int argc, char** argv)
{
init_gfx();
init_2d();
world = dWorldCreate();
dBodyID ball = dBodyCreate(world);
dBodySetPosition(ball, 0, 0, 0);
for (;;) {
Uint8* chars = SDL_GetKeyState(NULL);
if (chars[SDLK_LEFT]) {
dBodyAddForce(ball, -force, 0, 0);
}
if (chars[SDLK_RIGHT]) {
dBodyAddForce(ball, +force, 0, 0);
}
if (chars[SDLK_UP]) {
dBodyAddForce(ball, 0, +force, 0);
}
if (chars[SDLK_DOWN]) {
dBodyAddForce(ball, 0, -force, 0);
}
const dReal* pos = dBodyGetPosition(ball);
glTranslatef(pos[0], pos[1], pos[2]);
draw_circle();
dWorldQuickStep(world, 0.01);
step();
}
}
开发者ID:luqui,项目名称:luqui-misc,代码行数:34,代码来源:force.cpp
示例18: Simulator_Initialize
void Simulator_Initialize(void) {
dInitODE2(0);
world = dWorldCreate();
space = dHashSpaceCreate (0);
contactgroup = dJointGroupCreate (0);
dWorldSetGravity (world,0,0,-0.5);
ground = dCreatePlane (space,0,0,1,0);
}
开发者ID:jbongard,项目名称:ISCS,代码行数:9,代码来源:M3.cpp
示例19: main
int main (int argc, char **argv)
{
// setup pointers to drawstuff callback functions
dsFunctions fn;
fn.version = DS_VERSION;
fn.start = &start;
fn.step = &simLoop;
fn.command = &command;
fn.stop = 0;
fn.path_to_textures = DRAWSTUFF_TEXTURE_PATH;
// create world
dInitODE();
world = dWorldCreate();
#if 1
space = dHashSpaceCreate (0);
#elif 0
dVector3 center = {0,0,0}, extents = { 100, 100, 100};
space = dQuadTreeSpaceCreate(0, center, extents, 5);
#elif 0
space = dSweepAndPruneSpaceCreate (0, dSAP_AXES_XYZ);
#else
space = dSimpleSpaceCreate(0);
#endif
contactgroup = dJointGroupCreate (0);
dWorldSetGravity (world,0,0,-0.5);
dWorldSetCFM (world,1e-5);
dWorldSetLinearDamping(world, 0.00001);
dWorldSetAngularDamping(world, 0.005);
dWorldSetMaxAngularSpeed(world, 200);
dWorldSetContactSurfaceLayer (world,0.001);
ground = dCreatePlane (space,0,0,1,0);
memset (obj,0,sizeof(obj));
// create lift platform
platform = dCreateBox(space, 4, 4, 1);
dGeomSetCategoryBits(ground, 1ul);
dGeomSetCategoryBits(platform, 2ul);
dGeomSetCollideBits(ground, ~2ul);
dGeomSetCollideBits(platform, ~1ul);
// run simulation
dsSimulationLoop (argc,argv,352,288,&fn);
dJointGroupDestroy (contactgroup);
dSpaceDestroy (space);
dWorldDestroy (world);
dCloseODE();
return 0;
}
开发者ID:EdgarSun,项目名称:opende,代码行数:56,代码来源:demo_motion.cpp
示例20: main
int main (int argc, char **argv)
{
// setup pointers to drawstuff callback functions
dsFunctions fn;
fn.version = DS_VERSION;
fn.start = &start;
fn.step = &simLoop;
fn.command = &command;
fn.stop = 0;
fn.path_to_textures = DRAWSTUFF_TEXTURE_PATH;
if(argc==2)
{
fn.path_to_textures = argv[1];
}
// create world
dInitODE2(0);
world = dWorldCreate();
space = dSimpleSpaceCreate(0);
contactgroup = dJointGroupCreate (0);
dWorldSetGravity (world,0,0,-0.5);
dWorldSetCFM (world,1e-5);
dCreatePlane (space,0,0,1,0);
memset (obj,0,sizeof(obj));
// note: can't share tridata if intending to trimesh-trimesh collide
TriData1 = dGeomTriMeshDataCreate();
dGeomTriMeshDataBuildSingle(TriData1, &Vertices[0], 3 * sizeof(float), VertexCount, (dTriIndex*)&Indices[0], IndexCount, 3 * sizeof(dTriIndex));
TriData2 = dGeomTriMeshDataCreate();
dGeomTriMeshDataBuildSingle(TriData2, &Vertices[0], 3 * sizeof(float), VertexCount, (dTriIndex*)&Indices[0], IndexCount, 3 * sizeof(dTriIndex));
TriMesh1 = dCreateTriMesh(space, TriData1, 0, 0, 0);
TriMesh2 = dCreateTriMesh(space, TriData2, 0, 0, 0);
dGeomSetData(TriMesh1, TriData1);
dGeomSetData(TriMesh2, TriData2);
{dGeomSetPosition(TriMesh1, 0, 0, 0.9);
dMatrix3 Rotation;
dRFromAxisAndAngle(Rotation, 1, 0, 0, M_PI / 2);
dGeomSetRotation(TriMesh1, Rotation);}
{dGeomSetPosition(TriMesh2, 1, 0, 0.9);
dMatrix3 Rotation;
dRFromAxisAndAngle(Rotation, 1, 0, 0, M_PI / 2);
dGeomSetRotation(TriMesh2, Rotation);}
// run simulation
dsSimulationLoop (argc,argv,352,288,&fn);
dJointGroupDestroy (contactgroup);
dSpaceDestroy (space);
dWorldDestroy (world);
dCloseODE();
return 0;
}
开发者ID:4nakin,项目名称:awesomeball,代码行数:56,代码来源:demo_moving_trimesh.cpp
注:本文中的dWorldCreate函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论