implement pybullet.getDebugVisualizerCamera, width, height, providing viewmatrix, projection matrix
This commit is contained in:
@@ -1551,9 +1551,11 @@ void GLInstancingRenderer::renderSceneInternal(int renderMode)
|
||||
b3CreateOrtho(-shadowMapWorldSize,shadowMapWorldSize,-shadowMapWorldSize,shadowMapWorldSize,1,300,depthProjectionMatrix);//-14,14,-14,14,1,200, depthProjectionMatrix);
|
||||
float depthViewMatrix[4][4];
|
||||
b3Vector3 center = b3MakeVector3(0,0,0);
|
||||
float upf[3];
|
||||
m_data->m_activeCamera->getCameraUpVector(upf);
|
||||
b3Vector3 up = b3MakeVector3(upf[0],upf[1],upf[2]);
|
||||
//float upf[3];
|
||||
//m_data->m_activeCamera->getCameraUpVector(upf);
|
||||
b3Vector3 up, fwd;
|
||||
b3PlaneSpace1(gLightPos,up,fwd);
|
||||
// b3Vector3 up = b3MakeVector3(upf[0],upf[1],upf[2]);
|
||||
b3CreateLookAt(gLightPos,center,up,&depthViewMatrix[0][0]);
|
||||
//b3CreateLookAt(lightPos,m_data->m_cameraTargetPosition,b3Vector3(0,1,0),(float*)depthModelViewMatrix2);
|
||||
|
||||
|
||||
@@ -68,6 +68,8 @@ void SimpleCamera::setVRCamera(const float viewMat[16], const float projectionMa
|
||||
{
|
||||
m_data->m_viewMatrixVR[i] = viewMat[i];
|
||||
m_data->m_projectionMatrixVR[i] = projectionMatrix[i];
|
||||
m_data->m_frustumZNear = m_data->m_projectionMatrixVR[14]/(m_data->m_projectionMatrixVR[10]-1);
|
||||
m_data->m_frustumZFar = m_data->m_projectionMatrixVR[14]/(m_data->m_projectionMatrixVR[10]+1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,11 +348,37 @@ void SimpleCamera::setCameraUpVector(float x,float y ,float z)
|
||||
|
||||
void SimpleCamera::getCameraUpVector(float up[3]) const
|
||||
{
|
||||
up[0] = float(m_data->m_cameraUp[0]);
|
||||
up[1] = float(m_data->m_cameraUp[1]);
|
||||
up[2] = float(m_data->m_cameraUp[2]);
|
||||
if (m_data->m_enableVR)
|
||||
{
|
||||
float viewMatTotal[16];
|
||||
getCameraViewMatrix(viewMatTotal);
|
||||
up[0] = viewMatTotal[0];
|
||||
up[1] = viewMatTotal[4];
|
||||
up[2] = viewMatTotal[8];
|
||||
} else
|
||||
{
|
||||
up[0] = float(m_data->m_cameraUp[0]);
|
||||
up[1] = float(m_data->m_cameraUp[1]);
|
||||
up[2] = float(m_data->m_cameraUp[2]);
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleCamera::getCameraForwardVector(float fwd[3]) const
|
||||
{
|
||||
if (m_data->m_enableVR)
|
||||
{
|
||||
float viewMatTotal[16];
|
||||
getCameraViewMatrix(viewMatTotal);
|
||||
fwd[0] = viewMatTotal[2];
|
||||
fwd[1] = viewMatTotal[6];
|
||||
fwd[2] = viewMatTotal[10];
|
||||
} else
|
||||
{
|
||||
fwd[0] = float(m_data->m_cameraForward[0]);
|
||||
fwd[1] = float(m_data->m_cameraForward[1]);
|
||||
fwd[2] = float(m_data->m_cameraForward[2]);
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleCamera::setCameraYaw(float yaw)
|
||||
{
|
||||
|
||||
@@ -35,6 +35,10 @@ struct SimpleCamera : public CommonCameraInterface
|
||||
|
||||
virtual void setCameraUpVector(float x,float y, float z);
|
||||
void getCameraUpVector(float up[3]) const;
|
||||
|
||||
void getCameraForwardVector(float fwd[3]) const;
|
||||
|
||||
|
||||
///the setCameraUpAxis will call the 'setCameraUpVector' and 'setCameraForwardVector'
|
||||
virtual void setCameraUpAxis(int axis);
|
||||
virtual int getCameraUpAxis() const;
|
||||
|
||||
Reference in New Issue
Block a user