Merge branch 'master' of https://github.com/erwincoumans/bullet3
This commit is contained in:
@@ -5501,6 +5501,19 @@ B3_SHARED_API void b3ConfigureOpenGLVisualizerSetShadowMapWorldSize(b3SharedMemo
|
||||
}
|
||||
|
||||
|
||||
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetRemoteSyncTransformInterval(b3SharedMemoryCommandHandle commandHandle, double remoteSyncTransformInterval)
|
||||
{
|
||||
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*)commandHandle;
|
||||
b3Assert(command);
|
||||
b3Assert(command->m_type == CMD_CONFIGURE_OPENGL_VISUALIZER);
|
||||
if (command->m_type == CMD_CONFIGURE_OPENGL_VISUALIZER)
|
||||
{
|
||||
command->m_updateFlags |= COV_SET_REMOTE_SYNC_TRANSFORM_INTERVAL;
|
||||
command->m_configureOpenGLVisualizerArguments.m_remoteSyncTransformInterval = remoteSyncTransformInterval;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetViewMatrix(b3SharedMemoryCommandHandle commandHandle, float cameraDistance, float cameraPitch, float cameraYaw, const float cameraTargetPosition[3])
|
||||
{
|
||||
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*)commandHandle;
|
||||
|
||||
@@ -210,6 +210,7 @@ extern "C"
|
||||
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetLightPosition(b3SharedMemoryCommandHandle commandHandle, const float lightPosition[3]);
|
||||
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetShadowMapResolution(b3SharedMemoryCommandHandle commandHandle, int shadowMapResolution);
|
||||
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetShadowMapWorldSize(b3SharedMemoryCommandHandle commandHandle, int shadowMapWorldSize);
|
||||
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetRemoteSyncTransformInterval(b3SharedMemoryCommandHandle commandHandle, double remoteSyncTransformInterval);
|
||||
|
||||
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetViewMatrix(b3SharedMemoryCommandHandle commandHandle, float cameraDistance, float cameraPitch, float cameraYaw, const float cameraTargetPosition[/*3*/]);
|
||||
|
||||
|
||||
@@ -1672,6 +1672,9 @@ struct PhysicsServerCommandProcessorInternalData
|
||||
b3ThreadPool* m_threadPool;
|
||||
btScalar m_defaultCollisionMargin;
|
||||
|
||||
double m_remoteSyncTransformTime;
|
||||
double m_remoteSyncTransformInterval;
|
||||
|
||||
PhysicsServerCommandProcessorInternalData(PhysicsCommandProcessorInterface* proc)
|
||||
: m_pluginManager(proc),
|
||||
m_useRealTimeSimulation(false),
|
||||
@@ -1705,7 +1708,9 @@ struct PhysicsServerCommandProcessorInternalData
|
||||
m_collisionFilterPlugin(-1),
|
||||
m_grpcPlugin(-1),
|
||||
m_threadPool(0),
|
||||
m_defaultCollisionMargin(0.001)
|
||||
m_defaultCollisionMargin(0.001),
|
||||
m_remoteSyncTransformTime(1. / 30.),
|
||||
m_remoteSyncTransformInterval(1. / 30.)
|
||||
{
|
||||
{
|
||||
//register static plugins:
|
||||
@@ -1769,8 +1774,6 @@ struct PhysicsServerCommandProcessorInternalData
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
m_vrControllerEvents.init();
|
||||
|
||||
m_bodyHandles.exitHandles();
|
||||
@@ -1868,7 +1871,6 @@ struct PhysicsServerCommandProcessorInternalData
|
||||
int dof = 7;
|
||||
int veldof = 7;
|
||||
|
||||
|
||||
for (int l = 0; l < multiBody->getNumLinks(); l++)
|
||||
{
|
||||
switch (multiBody->getLink(l).m_jointType)
|
||||
@@ -7763,7 +7765,13 @@ bool PhysicsServerCommandProcessor::processForwardDynamicsCommand(const struct S
|
||||
}
|
||||
serverCmd.m_type = CMD_STEP_FORWARD_SIMULATION_COMPLETED;
|
||||
|
||||
m_data->m_remoteSyncTransformTime += deltaTimeScaled;
|
||||
if (m_data->m_remoteSyncTransformTime >= m_data->m_remoteSyncTransformInterval)
|
||||
{
|
||||
m_data->m_remoteSyncTransformTime = 0;
|
||||
syncPhysicsToGraphics2();
|
||||
}
|
||||
|
||||
return hasStatus;
|
||||
}
|
||||
|
||||
@@ -9074,6 +9082,13 @@ bool PhysicsServerCommandProcessor::processConfigureOpenGLVisualizerCommand(cons
|
||||
m_data->m_guiHelper->getRenderInterface()->setShadowMapWorldSize(worldSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (clientCmd.m_updateFlags & COV_SET_REMOTE_SYNC_TRANSFORM_INTERVAL)
|
||||
{
|
||||
m_data->m_remoteSyncTransformInterval = clientCmd.m_configureOpenGLVisualizerArguments.m_remoteSyncTransformInterval;
|
||||
}
|
||||
|
||||
|
||||
return hasStatus;
|
||||
}
|
||||
|
||||
@@ -12047,6 +12062,7 @@ void PhysicsServerCommandProcessor::addTransformChangedNotifications()
|
||||
void PhysicsServerCommandProcessor::resetSimulation()
|
||||
{
|
||||
//clean up all data
|
||||
m_data->m_remoteSyncTransformTime = m_data->m_remoteSyncTransformInterval;
|
||||
|
||||
m_data->m_simulationTimestamp = 0;
|
||||
m_data->m_cachedVUrdfisualShapes.clear();
|
||||
|
||||
@@ -908,6 +908,7 @@ enum InternalOpenGLVisualizerUpdateFlags
|
||||
COV_SET_LIGHT_POSITION = 4,
|
||||
COV_SET_SHADOWMAP_RESOLUTION = 8,
|
||||
COV_SET_SHADOWMAP_WORLD_SIZE = 16,
|
||||
COV_SET_REMOTE_SYNC_TRANSFORM_INTERVAL = 32,
|
||||
};
|
||||
|
||||
struct ConfigureOpenGLVisualizerRequest
|
||||
@@ -919,6 +920,7 @@ struct ConfigureOpenGLVisualizerRequest
|
||||
double m_lightPosition[3];
|
||||
int m_shadowMapResolution;
|
||||
int m_shadowMapWorldSize;
|
||||
double m_remoteSyncTransformInterval;
|
||||
int m_setFlag;
|
||||
int m_setEnabled;
|
||||
};
|
||||
|
||||
@@ -12,6 +12,7 @@ radius=5
|
||||
t = 0
|
||||
p.configureDebugVisualizer(shadowMapWorldSize=5)
|
||||
p.configureDebugVisualizer(shadowMapResolution=8192)
|
||||
|
||||
while (1):
|
||||
t+=dt
|
||||
p.configureDebugVisualizer(lightPosition=[radius*math.sin(t),radius*math.cos(t),3])
|
||||
|
||||
@@ -5874,12 +5874,13 @@ static PyObject* pybullet_configureDebugVisualizer(PyObject* self, PyObject* arg
|
||||
int shadowMapResolution = -1;
|
||||
int shadowMapWorldSize = -1;
|
||||
int physicsClientId = 0;
|
||||
double remoteSyncTransformInterval = -1;
|
||||
PyObject* pyLightPosition = 0;
|
||||
b3PhysicsClientHandle sm = 0;
|
||||
static char* kwlist[] = {"flag", "enable", "lightPosition", "shadowMapResolution", "shadowMapWorldSize", "physicsClientId", NULL};
|
||||
static char* kwlist[] = {"flag", "enable", "lightPosition", "shadowMapResolution", "shadowMapWorldSize", "remoteSyncTransformInterval", "physicsClientId", NULL};
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iiOiii", kwlist,
|
||||
&flag, &enable, &pyLightPosition, &shadowMapResolution, &shadowMapWorldSize, &physicsClientId))
|
||||
if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iiOiidi", kwlist,
|
||||
&flag, &enable, &pyLightPosition, &shadowMapResolution, &shadowMapWorldSize, &remoteSyncTransformInterval, &physicsClientId))
|
||||
return NULL;
|
||||
|
||||
sm = getPhysicsClient(physicsClientId);
|
||||
@@ -5911,6 +5912,10 @@ static PyObject* pybullet_configureDebugVisualizer(PyObject* self, PyObject* arg
|
||||
{
|
||||
b3ConfigureOpenGLVisualizerSetShadowMapWorldSize(commandHandle, shadowMapWorldSize);
|
||||
}
|
||||
if (remoteSyncTransformInterval >= 0)
|
||||
{
|
||||
b3ConfigureOpenGLVisualizerSetRemoteSyncTransformInterval(commandHandle, remoteSyncTransformInterval);
|
||||
}
|
||||
|
||||
b3SubmitClientCommandAndWaitStatus(sm, commandHandle);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user