b3CreateBoxCommandSetColorRGBA: allow to specify color when creating bodies through shared memory API
Parse and use colors from URDF file (single rgba color per link, not per visual) Rename btMultiBody 'stepVelocities' to 'computeAccelerationsArticulatedBodyAlgorithmMultiDof' btHashMap, add const Value* operator[] remove a few more obsolete btMultiBody methods (on the non-multi-dof path) fix spelling typo in fillConstraintJacobianMultiDof (fil -> fill) Add mention to Jakub Stepien for his work on btMultiBody
This commit is contained in:
@@ -284,6 +284,18 @@ int b3CreateBoxCommandSetCollisionShapeType(b3SharedMemoryCommandHandle commandH
|
||||
return 0;
|
||||
}
|
||||
|
||||
int b3CreateBoxCommandSetColorRGBA(b3SharedMemoryCommandHandle commandHandle, double red,double green,double blue, double alpha)
|
||||
{
|
||||
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle;
|
||||
b3Assert(command);
|
||||
b3Assert(command->m_type == CMD_CREATE_BOX_COLLISION_SHAPE);
|
||||
command->m_updateFlags |=BOX_SHAPE_HAS_COLOR;
|
||||
command->m_createBoxShapeArguments.m_colorRGBA[0] = red;
|
||||
command->m_createBoxShapeArguments.m_colorRGBA[1] = green;
|
||||
command->m_createBoxShapeArguments.m_colorRGBA[2] = blue;
|
||||
command->m_createBoxShapeArguments.m_colorRGBA[3] = alpha;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int b3CreateBoxCommandSetStartOrientation(b3SharedMemoryCommandHandle commandHandle, double startOrnX,double startOrnY,double startOrnZ, double startOrnW)
|
||||
{
|
||||
|
||||
@@ -94,6 +94,7 @@ int b3CreateBoxCommandSetStartOrientation(b3SharedMemoryCommandHandle commandHan
|
||||
int b3CreateBoxCommandSetHalfExtents(b3SharedMemoryCommandHandle commandHandle, double halfExtentsX,double halfExtentsY,double halfExtentsZ);
|
||||
int b3CreateBoxCommandSetMass(b3SharedMemoryCommandHandle commandHandle, double mass);
|
||||
int b3CreateBoxCommandSetCollisionShapeType(b3SharedMemoryCommandHandle commandHandle, int collisionShapeType);
|
||||
int b3CreateBoxCommandSetColorRGBA(b3SharedMemoryCommandHandle commandHandle, double red,double green,double blue, double alpha);
|
||||
|
||||
|
||||
///Initialize (teleport) the pose of a body/robot. You can individually set the base position, base orientation and joint angles.
|
||||
|
||||
@@ -211,6 +211,7 @@ void PhysicsClientExample::prepareAndSubmitCommand(int commandId)
|
||||
{
|
||||
b3SharedMemoryCommandHandle commandHandle = b3CreateBoxShapeCommandInit(m_physicsClientHandle);
|
||||
b3CreateBoxCommandSetStartPosition(commandHandle,0,0,-3);
|
||||
b3CreateBoxCommandSetColorRGBA(commandHandle,0,0,1,1);
|
||||
b3SubmitClientCommand(m_physicsClientHandle, commandHandle);
|
||||
break;
|
||||
}
|
||||
@@ -220,6 +221,7 @@ void PhysicsClientExample::prepareAndSubmitCommand(int commandId)
|
||||
b3CreateBoxCommandSetStartPosition(commandHandle,0,0,0);
|
||||
b3CreateBoxCommandSetMass(commandHandle,1);
|
||||
b3CreateBoxCommandSetCollisionShapeType(commandHandle,COLLISION_SHAPE_TYPE_CYLINDER_Y);
|
||||
b3CreateBoxCommandSetColorRGBA(commandHandle,1,1,0,1);
|
||||
double radius = 0.2;
|
||||
double halfHeight = 0.5;
|
||||
b3CreateBoxCommandSetHalfExtents(commandHandle,radius,halfHeight,radius);
|
||||
|
||||
@@ -1684,7 +1684,17 @@ void PhysicsServerSharedMemory::processClientCommands()
|
||||
bool isDynamic = (mass>0);
|
||||
btRigidBody* rb = worldImporter->createRigidBody(isDynamic,mass,startTrans,shape,0);
|
||||
rb->setRollingFriction(0.2);
|
||||
m_data->m_guiHelper->autogenerateGraphicsObjects(this->m_data->m_dynamicsWorld);
|
||||
//m_data->m_guiHelper->autogenerateGraphicsObjects(this->m_data->m_dynamicsWorld);
|
||||
btVector4 colorRGBA(1,0,0,1);
|
||||
if (clientCmd.m_updateFlags & BOX_SHAPE_HAS_COLOR)
|
||||
{
|
||||
colorRGBA[0] = clientCmd.m_createBoxShapeArguments.m_colorRGBA[0];
|
||||
colorRGBA[1] = clientCmd.m_createBoxShapeArguments.m_colorRGBA[1];
|
||||
colorRGBA[2] = clientCmd.m_createBoxShapeArguments.m_colorRGBA[2];
|
||||
colorRGBA[3] = clientCmd.m_createBoxShapeArguments.m_colorRGBA[3];
|
||||
}
|
||||
m_data->m_guiHelper->createCollisionShapeGraphicsObject(rb->getCollisionShape());
|
||||
m_data->m_guiHelper->createCollisionObjectGraphicsObject(rb,colorRGBA);
|
||||
|
||||
SharedMemoryStatus& serverCmd =m_data->createServerStatus(CMD_RIGID_BODY_CREATION_COMPLETED,clientCmd.m_sequenceNumber,timeStamp);
|
||||
int bodyUniqueId = m_data->allocHandle();
|
||||
|
||||
@@ -205,6 +205,7 @@ enum EnumBoxShapeFlags
|
||||
BOX_SHAPE_HAS_HALF_EXTENTS=4,
|
||||
BOX_SHAPE_HAS_MASS=8,
|
||||
BOX_SHAPE_HAS_COLLISION_SHAPE_TYPE=16,
|
||||
BOX_SHAPE_HAS_COLOR=32,
|
||||
};
|
||||
///This command will be replaced to allow arbitrary collision shape types
|
||||
struct CreateBoxShapeArgs
|
||||
@@ -218,6 +219,7 @@ struct CreateBoxShapeArgs
|
||||
|
||||
double m_initialPosition[3];
|
||||
double m_initialOrientation[4];
|
||||
double m_colorRGBA[4];
|
||||
};
|
||||
|
||||
struct SharedMemoryCommand
|
||||
|
||||
Reference in New Issue
Block a user