Camera::Camera(H3DRes pipeline) { _relative.x = -4.0; _relative.y = 12.0; _relative.z = -4.0; _target = Utils::Vec3f(0.0, 0.0, 0.0); handle = h3dAddCameraNode(H3DRootNode, nullptr, pipeline); h3dSetNodeParamI(handle, H3DCamera::ViewportXI, 0); h3dSetNodeParamI(handle, H3DCamera::ViewportYI, 0); h3dSetNodeParamI(handle, H3DCamera::ViewportWidthI, AppCtrl::screen_w); h3dSetNodeParamI(handle, H3DCamera::ViewportHeightI, AppCtrl::screen_h); h3dSetupCameraView(handle, _std_fov, AppCtrl::screen_aspect, 0.1, 30.0); float mat[16]; h3dGetCameraProjMat(handle, mat); _proj_mat = Utils::Matrix4f(mat); }
//== Установка размера поверхности отрисовки. void SH3DBind::SetSize(UI uiWidth, UI uiHeight) { h3dSetNodeParamI(gniCamera, H3DCamera::ViewportXI, 0); h3dSetNodeParamI(gniCamera, H3DCamera::ViewportYI, 0); h3dSetNodeParamI(gniCamera, H3DCamera::ViewportWidthI, uiWidth); h3dSetNodeParamI(gniCamera, H3DCamera::ViewportHeightI, uiHeight); h3dSetupCameraView(gniCamera, 45.0f, (PxReal)uiWidth / (PxReal)uiHeight, 0.1f, 2048.0f); h3dResizePipelineBuffers(griPipe, uiWidth, uiHeight); }
void TentacleApplication::resize( int width, int height ) { // Resize viewport h3dSetNodeParamI(_cam,H3DCamera::ViewportXI, 0); h3dSetNodeParamI(_cam,H3DCamera::ViewportYI, 0); h3dSetNodeParamI(_cam,H3DCamera::ViewportWidthI, width); h3dSetNodeParamI(_cam,H3DCamera::ViewportHeightI, height); // Set virtual camera parameters h3dSetupCameraView( _cam, 45.0f, (float)width / height, 0.1f, 1000.0f ); }
void resizeViewport(int width, int height) { // Set up viewport and render target sizes h3dSetNodeParamI(cam, H3DCamera::ViewportXI, 0); h3dSetNodeParamI(cam, H3DCamera::ViewportYI, 0); h3dSetNodeParamI(cam, H3DCamera::ViewportWidthI, width); h3dSetNodeParamI(cam, H3DCamera::ViewportHeightI, height); h3dSetupCameraView(cam, 45.0f, float(width) / height, 0.1f, 16384.0f); h3dResizePipelineBuffers(pipeRes, width, height); } // end resizeViewport
void Application::resize( int width, int height ) { // Resize viewport h3dSetNodeParamI( _cam, H3DCamera::ViewportXI, 0 ); h3dSetNodeParamI( _cam, H3DCamera::ViewportYI, 0 ); h3dSetNodeParamI( _cam, H3DCamera::ViewportWidthI, width ); h3dSetNodeParamI( _cam, H3DCamera::ViewportHeightI, height ); // Set virtual camera parameters h3dSetupCameraView( _cam, 45.0f, (float)width / height, 0.1f, 1000.0f ); h3dResizePipelineBuffers( _hdrPipeRes, width, height ); h3dResizePipelineBuffers( _forwardPipeRes, width, height ); }
void Camera::setView(const Vector2 &size, const float fovDegrees, const Vector2 &clipDistances) { this->viewSize = size; this->fovDegrees = fovDegrees; this->clipDistances = clipDistances; h3dSetNodeParamI(cameraNode, H3DCamera::ViewportXI, 0); h3dSetNodeParamI(cameraNode, H3DCamera::ViewportYI, 0); h3dSetNodeParamI(cameraNode, H3DCamera::ViewportWidthI, size.x); h3dSetNodeParamI(cameraNode, H3DCamera::ViewportHeightI, size.y); h3dSetupCameraView(cameraNode, fovDegrees, viewSize.x / viewSize.y, clipDistances.x, clipDistances.y); h3dResizePipelineBuffers(Modules::renderer().getPipelineHandle(), viewSize.x, viewSize.y); h3dSetNodeTransform(cameraNode, 0, 1.8f, 10.0f, 0 , 0, 0, 1, 1, 1); h3dGetCameraProjMat(cameraNode, projMat.ptr()); projMat = Matrix4::initPerspMat(fovDegrees, size.x / size.y, clipDistances.x, clipDistances.y); }