add pybullet render API with yaw/pitch/roll option
add testrender.py file allow option to enable OpenGL hardware renderer in multithreaded sim b3RequestCameraImageSelectRenderer(commandHandle,ER_BULLET_HARDWARE_OPENGL);
This commit is contained in:
@@ -1154,20 +1154,21 @@ static PyObject* pybullet_renderImage(PyObject* self, PyObject* args)
|
||||
b3RequestCameraImageSetFOVProjectionMatrix(command, fov, aspect, nearVal, farVal);
|
||||
}
|
||||
}
|
||||
else if (size==10)
|
||||
else if (size==11)
|
||||
{
|
||||
int upAxisIndex=1;
|
||||
float camDistance,yaw,pitch;
|
||||
float camDistance,yaw,pitch,roll;
|
||||
|
||||
//sometimes more arguments are better :-)
|
||||
if (PyArg_ParseTuple(args, "iiOfffifff", &width, &height, &objTargetPos, &camDistance, &yaw, &pitch, &upAxisIndex, &nearVal, &farVal, &fov))
|
||||
if (PyArg_ParseTuple(args, "iiOffffifff", &width, &height, &objTargetPos, &camDistance, &yaw, &pitch, &roll, &upAxisIndex, &nearVal, &farVal, &fov))
|
||||
{
|
||||
|
||||
b3RequestCameraImageSetPixelResolution(command,width,height);
|
||||
if (pybullet_internalSetVector(objTargetPos, targetPos))
|
||||
{
|
||||
//printf("width = %d, height = %d, targetPos = %f,%f,%f, distance = %f, yaw = %f, pitch = %f, upAxisIndex = %d, near=%f, far=%f, fov=%f\n",width,height,targetPos[0],targetPos[1],targetPos[2],camDistance,yaw,pitch,upAxisIndex,nearVal,farVal,fov);
|
||||
|
||||
b3RequestCameraImageSetViewMatrix2(command,targetPos,camDistance,yaw,pitch,upAxisIndex);
|
||||
b3RequestCameraImageSetViewMatrix2(command,targetPos,camDistance,yaw,pitch,roll,upAxisIndex);
|
||||
aspect = width/height;
|
||||
b3RequestCameraImageSetFOVProjectionMatrix(command, fov, aspect, nearVal, farVal);
|
||||
} else
|
||||
@@ -1193,6 +1194,9 @@ static PyObject* pybullet_renderImage(PyObject* self, PyObject* args)
|
||||
{
|
||||
b3SharedMemoryStatusHandle statusHandle;
|
||||
int statusType;
|
||||
|
||||
//b3RequestCameraImageSelectRenderer(command,ER_BULLET_HARDWARE_OPENGL);
|
||||
|
||||
statusHandle = b3SubmitClientCommandAndWaitStatus(sm, command);
|
||||
statusType = b3GetStatusType(statusHandle);
|
||||
if (statusType==CMD_CAMERA_IMAGE_COMPLETED)
|
||||
|
||||
@@ -6,14 +6,16 @@ pybullet.connect(pybullet.GUI)
|
||||
pybullet.loadURDF("r2d2.urdf")
|
||||
|
||||
camTargetPos = [0,0,0]
|
||||
#cameraUp = [0,0,1]
|
||||
cameraPos = [3,3,3]
|
||||
yaw = 40.0
|
||||
pitch = 0.0
|
||||
upAxisIndex = 1
|
||||
camDistance = 3
|
||||
pixelWidth = 640
|
||||
pixelHeight = 480
|
||||
cameraUp = [0,0,1]
|
||||
cameraPos = [1,1,1]
|
||||
yaw = 40
|
||||
pitch = 10.0
|
||||
|
||||
roll=0
|
||||
upAxisIndex = 2
|
||||
camDistance = 4
|
||||
pixelWidth = 320
|
||||
pixelHeight = 240
|
||||
nearPlane = 0.01
|
||||
farPlane = 1000
|
||||
|
||||
@@ -22,19 +24,23 @@ fov = 60
|
||||
#img_arr = pybullet.renderImage(pixelWidth, pixelHeight)
|
||||
#renderImage(w, h, view[16], projection[16])
|
||||
#img_arr = pybullet.renderImage(pixelWidth, pixelHeight, cameraPos, camTargetPos, cameraUp, nearPlane, farPlane)
|
||||
img_arr = pybullet.renderImage(pixelWidth, pixelHeight, camTargetPos, camDistance, yaw, pitch, upAxisIndex, nearPlane, farPlane, fov)
|
||||
for pitch in range (0,360,10) :
|
||||
img_arr = pybullet.renderImage(pixelWidth, pixelHeight, camTargetPos, camDistance, yaw, pitch, roll, upAxisIndex, nearPlane, farPlane, fov)
|
||||
|
||||
w=img_arr[0] #width of the image, in pixels
|
||||
h=img_arr[1] #height of the image, in pixels
|
||||
rgb=img_arr[2] #color data RGB
|
||||
dep=img_arr[3] #depth data
|
||||
w=img_arr[0] #width of the image, in pixels
|
||||
h=img_arr[1] #height of the image, in pixels
|
||||
rgb=img_arr[2] #color data RGB
|
||||
dep=img_arr[3] #depth data
|
||||
|
||||
#print 'width = %d height = %d' % (w,h)
|
||||
|
||||
# reshape creates np array
|
||||
np_img_arr = np.reshape(rgb, (pixelHeight, pixelWidth, 4))
|
||||
np_img_arr = np_img_arr*(1./255.)
|
||||
# reshape creates np array
|
||||
np_img_arr = np.reshape(rgb, (h, w, 4))
|
||||
np_img_arr = np_img_arr*(1./255.)
|
||||
|
||||
#show
|
||||
plt.imshow(np_img_arr,interpolation='none')
|
||||
plt.show()
|
||||
p.resetSimulation()
|
||||
#show
|
||||
plt.imshow(np_img_arr,interpolation='none')
|
||||
#plt.show()
|
||||
plt.pause(0.01)
|
||||
|
||||
pybullet.resetSimulation()
|
||||
|
||||
Reference in New Issue
Block a user