Changeset 2222
- Timestamp:
- Apr 22, 2011, 6:07:24 PM (13 years ago)
- Location:
- trunk/packages/vizservers/vtkvis
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/vtkvis/RpVtkRenderer.cpp
r2214 r2222 1636 1636 } 1637 1637 1638 void Renderer::set SceneOrientation(double quat[4])1638 void Renderer::setCameraOrientation(double quat[4]) 1639 1639 { 1640 1640 vtkSmartPointer<vtkCamera> camera = _renderer->GetActiveCamera(); … … 1646 1646 memcpy((*mat4)[r], mat3[r], sizeof(double)*3); 1647 1647 } 1648 TRACE("Arcball camera matrix: %g %g %g %g %g %g %g %g %g", 1649 (*mat4)[0][0], (*mat4)[0][1], (*mat4)[0][2], 1650 (*mat4)[1][0], (*mat4)[1][1], (*mat4)[1][2], 1651 (*mat4)[2][0], (*mat4)[2][1], (*mat4)[2][2]); 1652 camera->SetPosition(0, 0, 1); 1653 camera->SetFocalPoint(0, 0, 0); 1654 camera->SetViewUp(0, 1, 0); 1655 camera->SetViewAngle(30); 1656 _renderer->ResetCamera(); 1657 camera->GetFocalPoint(_cameraFocalPoint); 1648 1658 trans->Translate(+_cameraFocalPoint[0], +_cameraFocalPoint[1], +_cameraFocalPoint[2]); 1649 1659 trans->Concatenate(mat4); 1650 1660 trans->Translate(-_cameraFocalPoint[0], -_cameraFocalPoint[1], -_cameraFocalPoint[2]); 1651 camera->SetPosition(0, 0, 1);1652 camera->SetFocalPoint(0, 0, 0);1653 camera->SetViewUp(0, 1, 0);1654 1661 camera->ApplyTransform(trans); 1655 1662 storeCameraOrientation(); 1663 if (_cameraZoomRatio != 1.0) { 1664 double z = _cameraZoomRatio; 1665 _cameraZoomRatio = 1.0; 1666 zoomCamera(z, true); 1667 } 1656 1668 if (_cameraPan[0] != 0.0 || _cameraPan[1] != 0.0) { 1657 panCamera(_cameraPan[0], _cameraPan[1], true); 1658 } 1669 double panx = _cameraPan[0]; 1670 double pany = -_cameraPan[1]; 1671 _cameraPan[0] = 0; 1672 _cameraPan[1] = 0; 1673 panCamera(panx, pany, true); 1674 } 1675 printCameraInfo(camera); 1659 1676 _needsRedraw = true; 1660 1677 } … … 1681 1698 } 1682 1699 1700 /** 1701 * \brief Saves the current camera orientation and position in order to 1702 * be able to later restore the saved orientation and position 1703 */ 1683 1704 void Renderer::storeCameraOrientation() 1684 1705 { … … 1689 1710 } 1690 1711 1712 /** 1713 * \brief Use the stored orientation and position to set the camera's 1714 * current state 1715 */ 1691 1716 void Renderer::restoreCameraOrientation() 1692 1717 { … … 1704 1729 void Renderer::resetCamera(bool resetOrientation) 1705 1730 { 1731 vtkSmartPointer<vtkCamera> camera = _renderer->GetActiveCamera(); 1706 1732 if (_cameraMode == IMAGE) { 1707 1733 initCamera(); 1708 1734 } else { 1709 1735 if (resetOrientation) { 1710 vtkSmartPointer<vtkCamera> camera = _renderer->GetActiveCamera();1711 1736 camera->SetPosition(0, 0, 1); 1712 1737 camera->SetFocalPoint(0, 0, 0); … … 1716 1741 restoreCameraOrientation(); 1717 1742 } 1743 camera->SetViewAngle(30); 1718 1744 _renderer->ResetCamera(); 1719 1745 _renderer->ResetCameraClippingRange(); 1720 1746 computeScreenWorldCoords(); 1721 1747 } 1748 1749 printCameraInfo(camera); 1750 1722 1751 _cameraZoomRatio = 1; 1723 1752 _cameraPan[0] = 0; … … 1761 1790 void Renderer::panCamera(double x, double y, bool absolute) 1762 1791 { 1792 TRACE("Enter panCamera: %g %g, current abs: %g %g", 1793 x, y, _cameraPan[0], _cameraPan[1]); 1794 1763 1795 if (_cameraMode == IMAGE) { 1764 1796 // Reverse x rather than y, since we are panning the camera, and client … … 1837 1869 computeScreenWorldCoords(); 1838 1870 } 1871 1872 TRACE("Leave panCamera: %g %g, current abs: %g %g", 1873 x, y, _cameraPan[0], _cameraPan[1]); 1874 1839 1875 _needsRedraw = true; 1840 1876 } … … 1848 1884 void Renderer::zoomCamera(double z, bool absolute) 1849 1885 { 1886 vtkSmartPointer<vtkCamera> camera = _renderer->GetActiveCamera(); 1887 TRACE("Enter Zoom: current abs: %g, z: %g, view angle %g", 1888 _cameraZoomRatio, z, camera->GetViewAngle()); 1889 1850 1890 if (absolute) { 1851 1891 assert(_cameraZoomRatio > 0.0); … … 1856 1896 _cameraZoomRatio *= z; 1857 1897 } 1898 1858 1899 if (_cameraMode == IMAGE) { 1859 1900 double dx = _imgWorldDims[0]; … … 1868 1909 _imgWorldDims[0], _imgWorldDims[1]); 1869 1910 } else { 1870 vtkSmartPointer<vtkCamera> camera = _renderer->GetActiveCamera();1871 1911 camera->Zoom(z); // Change perspective FOV angle or ortho parallel scale 1872 1912 //camera->Dolly(z); // Move camera forward/back … … 1874 1914 storeCameraOrientation(); 1875 1915 } 1916 1917 TRACE("Leave Zoom: rel %g, new abs: %g, view angle %g", 1918 z, _cameraZoomRatio, camera->GetViewAngle()); 1919 1876 1920 _needsRedraw = true; 1877 1921 } … … 2223 2267 void Renderer::printCameraInfo(vtkCamera *camera) 2224 2268 { 2225 TRACE("Parallel Scale: %g, Cam pos: %g %g %g, focal pt: %g %g %g, view up: %g %g %g, Clipping range: %g %g",2269 TRACE("Parallel Scale: %g, View angle: %g, Cam pos: %g %g %g, focal pt: %g %g %g, view up: %g %g %g, Clipping range: %g %g", 2226 2270 camera->GetParallelScale(), 2271 camera->GetViewAngle(), 2227 2272 camera->GetPosition()[0], 2228 2273 camera->GetPosition()[1], -
trunk/packages/vizservers/vtkvis/RpVtkRenderer.h
r2213 r2222 110 110 void rotateCamera(double yaw, double pitch, double roll); 111 111 112 void set SceneOrientation(double quat[4]);112 void setCameraOrientation(double quat[4]); 113 113 114 114 void setCameraOrientationAndPosition(double position[3], -
trunk/packages/vizservers/vtkvis/RpVtkRendererCmd.cpp
r2218 r2222 251 251 } 252 252 253 g_renderer->set SceneOrientation(quat);253 g_renderer->setCameraOrientation(quat); 254 254 return TCL_OK; 255 255 }
Note: See TracChangeset
for help on using the changeset viewer.