And if yes, could you show me some example source ?

How much has changed in this version of OgreOde ?
Seriously? That does suck. Last month I managed to download nearly 6Gb so 2Mb is a drop in the ocean!my bandwith sucks and 2 mb for me is like 200 !!
Actually there is an ODE forum, it's here;...as there is no Ode Forum I'll just ask here.
Code: Select all
//*************************************************************************
Entity* shashka_entity;
shashka_entity=_mgr->createEntity("Shashka", "Cylinder04.mesh");
shashka_entity->setCastShadows(true);
SceneNode* shashka_node=_mgr->getRootSceneNode()->createChildSceneNode("Shashka");
shashka_node->attachObject(shashka_entity);
shashka_node->setPosition(0,4,0);
shashka_node->setScale(0.1,0.1,0.1);
OgreOde::SimpleSpace* shashka_space= new OgreOde::SimpleSpace(_space);
shashka_space->setInternalCollisions(false);
OgreOde::BoxMass shashka_mass(1.5,Vector3(1,1,1));
OgreOde::Body* shashka_body = new OgreOde::Body();
shashka_node->attachObject(shashka_body);
shashka_body->setMass(shashka_mass);
_bodies.push_back(shashka_body);
_last_node=shashka_node;
OgreOde::TransformGeometry* transformGeometry = new OgreOde::TransformGeometry(shashka_space);
OgreOde::BoxGeometry* shashka_geometry = new OgreOde::BoxGeometry(Vector3(1.0,1.0,1.0));
transformGeometry->setBody(shashka_body);
transformGeometry->setEncapsulatedGeometry(shashka_geometry);
shashka_geometry->setPosition(Vector3( 0,0,0));
_geoms.push_back(shashka_geometry);
_geoms.push_back(transformGeometry);
//**************************************************************************
Code: Select all
SimpleScenesApplication.cpp
..\..\include\SimpleScenes_Buggy.h(63) : error C3861: 'Radian': identifier not found, even with argument-dependent lookup
SimpleScenes.cpp
From the original post announcing this version;StringUtil::BLANK undeclared identifier - I figured this out myself, using Ogre 0.14
And from the post mentioning some of the changes;You should extract the Zip to your ogrenew (or whatever you've renamed it to) directory, remembering to preserve the directory structure. And that ogrenew directory should contain a reasonably recent CVS snapshot of Ogre, mine's from a couple of days ago.
So yes, the implication is that it will only work with a resaonably recent version of Ogre. It's targetted at the 0.15 release. Sorry, that should probably be in the readme.A few changes to make it work with the latest versions of ODE and Ogre.
You can't. Because ODE can't. There are some cylinder contributions available for ODE but at the moment the concensus seems to be that they're not really ready for prime time. Especially when colliding with trimeshes. If this changes, or if anyone would like to point out that it has changed already, then I'll be happy to incorporate a cylinder primitive into OgreOde.How I can create cilynder with ogreode
Yep, it should, if ODE does. Which it does. You have to make sure your geometries are in different spaces, or if they're in the same space, that you've got "internal collisions" switched on for that space.Do Ogreode support collision between two compound objects like helicopter
That looks like something I've missed out. Sorry about that. I'll look into it and add the missing bits as appropriate.7.5.1. Parameter Functions (setParameter)
These parameter names can be optionally followed by a digit (2 or 3)
Download updated. Now there's an optional parameter to Joint::setParameter called 'axis'. This specifies the axis you want the parameter to apply to. Effectively it's the 2 or 3 following the parameter name, but without making the enum massive. The default value for this parameter is 1. I've also added the joint addTorque/Force stuff that I seemed to have missed out.7.5.1. Parameter Functions (setParameter)
These parameter names can be optionally followed by a digit (2 or 3)
Strange... When I created objects in the same space -- all works,You have to make sure your geometries are in different spaces, or if they're in the same space, that you've got "internal collisions" switched on for that space.
Code: Select all
Entity* shashka_entity;
shashka_entity=_mgr->createEntity("Shashka", "Cylinder04.mesh");
shashka_entity->setCastShadows(true);
SceneNode* shashka_node=_mgr->getRootSceneNode()->createChildSceneNode("Shashka");
shashka_node->attachObject(shashka_entity);
shashka_node->setPosition(0,4,0);
shashka_node->setScale(0.1,0.1,0.1);
OgreOde::SimpleSpace* shashka_space= new OgreOde::SimpleSpace(_space);
shashka_space->setInternalCollisions(true);
shashka_space->setAutoCleanup(false);
//shashka_space->
OgreOde::BoxMass shashka_mass(1.5,Vector3(1,1,1));
OgreOde::Body* shashka_body = new OgreOde::Body();
shashka_node->attachObject(shashka_body);
shashka_body->setMass(shashka_mass);
_bodies.push_back(shashka_body);
_last_node=shashka_node;
OgreOde::TransformGeometry* transformGeometry = new OgreOde::TransformGeometry(shashka_space);
OgreOde::BoxGeometry* shashka_geometry = new OgreOde::BoxGeometry(Vector3(1.0,1.0,1.0));
transformGeometry->setBody(shashka_body);
transformGeometry->setEncapsulatedGeometry(shashka_geometry);
shashka_geometry->setPosition(Vector3( 0,0,0));
_geoms.push_back(shashka_geometry);
_geoms.push_back(transformGeometry);
//**************************************************************************
---- SKIP ----
---- SKIP ----
---- SKIP ----
_apache_space = new OgreOde::SimpleSpace(_space);
//WHEN THIS STRING IS AVAIBLE - ALL WORKS....
//_apache_space= shashka_space;
_apache_space->setInternalCollisions(true);
_apache_space->setAutoCleanup(false);
// Create the physical body of the helicopter
OgreOde::BoxMass apache_mass(1.5,Vector3(1.4,1.46,4.24));
_apache = new OgreOde::Body();
_apache_body_node->attachObject(_apache);
_apache->setMass(apache_mass);
_bodies.push_back(_apache);
_last_node = _apache_body_node;
// Create the geometry of the helicopter from several bits
// Main body
OgreOde::TransformGeometry* trans = new OgreOde::TransformGeometry(_apache_space);
OgreOde::BoxGeometry* geom = new OgreOde::BoxGeometry(Vector3(1.4,1.46,4.24));
trans->setBody(_apache);
trans->setEncapsulatedGeometry(geom);
geom->setPosition(Vector3(0.013,0.014,1.052));
_geoms.push_back(geom);
_geoms.push_back(trans);
I had the same problem with an earlier version of OgreODE, I don't know if this has been fixed, but my solution was to change:Strange... When I created objects in the same space -- all works,
but in diferent spaces objects still do not collids.
Code: Select all
void World::collisionCallback(void *data,dGeomID geom_a,dGeomID geom_b)
{
if( dGeomIsSpace(geom_a) || dGeomIsSpace(geom_b) )
{
if(dGeomIsSpace(geom_a)) ((Space*)(dGeomGetData(geom_a)))->collide(data);
else ((Space*)(dGeomGetData(geom_b)))->collide((Geometry*)(dGeomGetData(geom_a)),data);
if(dGeomIsSpace(geom_b)) ((Space*)(dGeomGetData(geom_b)))->collide(data);
else ((Space*)(dGeomGetData(geom_a)))->collide((Geometry*)(dGeomGetData(geom_b)),data);
}
else
{
((Geometry*)(dGeomGetData(geom_a)))->collide((Geometry*)(dGeomGetData(geom_b)),_collision_listener);
}
}
Code: Select all
void World::collisionCallback(void *data,dGeomID geom_a,dGeomID geom_b)
{
if( dGeomIsSpace(geom_a) || dGeomIsSpace(geom_b) )
{
// Colliding a space with something
((Space*)(dGeomGetData(geom_a)))->collide((Geometry*)(dGeomGetData(geom_b)),data);
// Collide all geoms internal to the space(s)
if (dGeomIsSpace(geom_a))
((Space*)(dGeomGetData(geom_a)))->collide(data);
if (dGeomIsSpace(geom_b))
((Space*)(dGeomGetData(geom_b)))->collide(data);
}
else
{
((Geometry*)(dGeomGetData(geom_a)))->collide((Geometry*)(dGeomGetData(geom_b)),_collision_listener);
}
}
The World::collisionCallback function has changed in this version of OgreOde it should do;This version also checks space/space rather than only geom/space and geom/geom.
hm... ups...Perhaps a stupid question, but you are using this latest version of OgreOde aren't you?
That's the one.I found ! This one...
LOL! Yeah, you have to compile ODE with the special terrain collision primitive.edit - NM, I RTFM.
Code: Select all
Linking...
LINK : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification\par
collision_kernel.obj : error LNK2019: unresolved external symbol
"int __cdecl dCollideTerrainCallback(struct dxGeom *,struct dxGeom *,int,struct dContactGeom *,int)"
(?dCollideTerrainCallback@@YAHPAUdxGeom@@0HPAUdContactGeom@@H@Z) referenced in function "void __cdecl initColliders(void)" (?initColliders@@YAXXZ)
..\\lib\\oded.dll : fatal error LNK1120: 1 unresolved externals
I don't think you should be compiling ODE as a dll?Open Dynamics Engine for OgreOde
================================
In the following documentation $OGRE_TOP is the directory to which you have
extracted your Ogre distribution. This directory is normally named 'ogrenew'.
You must build ODE, as detailed in it's documentation, in this directory.
Also, $ODE_TOP refers to the top level directory to which you have extracted
ODE. For the current stable release, and assuming you are using the correct
OgreOde directory structure, this will be $OGRE_TOP/OgreOde/ode-0.5
Building ODE
------------
To use ODE with OgreOde I recommend that you compile it with the following
options (in config/user-settings) set;
PLATFORM=msvc
Rather than msvc-dll, when compiling with MSVC.
Code: Select all
Linking...
Creating library ..\..\lib\Release/OgreOde.lib and object ..\..\lib\Release/OgreOde.exp
ode.lib(collision_kernel.obj) : error LNK2001: unresolved external symbol "int __cdecl dCollideTerrainCallback(struct dxGeom *,struct dxGeom *,int,struct dContactGeom *,int)" (?dCollideTerrainCallback@@YAHPAUdxGeom@@0HPAUdContactGeom@@H@Z)
..\..\lib\Release/OgreOde.dll : fatal error LNK1120: 1 unresolved externals
Code: Select all
int dCollideRayPlane (dxGeom *o1, dxGeom *o2, int flags,
dContactGeom *contact, int skip);
Code: Select all
int dCollideTerrainCallback(dxGeom *o1, dxGeom *o2, int flags,dContactGeom *contact, int skip);
Code: Select all
ODE_SRC = \
ode/src/array.cpp \
ode/src/error.cpp \
ode/src/memory.cpp \
ode/src/obstack.cpp \
ode/src/odemath.cpp \
ode/src/matrix.cpp \
ode/src/misc.cpp \
ode/src/rotation.cpp \
ode/src/mass.cpp \
ode/src/ode.cpp \
ode/src/step.cpp \
ode/src/stepfast.cpp \
ode/src/quickstep.cpp \
ode/src/util.cpp \
ode/src/lcp.cpp \
ode/src/joint.cpp \
ode/src/timer.cpp \
ode/src/mat.cpp \
ode/src/testing.cpp \
ode/src/export-dif.cpp \
ode/src/collision_kernel.cpp \
ode/src/collision_util.cpp \
ode/src/collision_std.cpp \
ode/src/collision_space.cpp \
ode/src/collision_transform.cpp \
ode/src/dTerrainCallback.cpp \
ode/src/collision_quadtreespace.cpp