Added osg::CameraView to help application/modellers position their cameras in scenes. Note,
CameraView is *not* a camera, it isn't an active object, but a passive one that camera must track each frame to following the path of the CameraView.
This commit is contained in:
53
src/osg/CameraView.cpp
Normal file
53
src/osg/CameraView.cpp
Normal file
@@ -0,0 +1,53 @@
|
||||
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2005 Robert Osfield
|
||||
*
|
||||
* This library is open source and may be redistributed and/or modified under
|
||||
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
|
||||
* (at your option) any later version. The full license is in LICENSE file
|
||||
* included with this distribution, and on the openscenegraph.org website.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* OpenSceneGraph Public License for more details.
|
||||
*/
|
||||
#include <osg/CameraView>
|
||||
|
||||
using namespace osg;
|
||||
|
||||
CameraView::CameraView():
|
||||
_fieldOfView(60.0),
|
||||
_fieldOfViewMode(VERTICAL),
|
||||
_focalLength(0.0)
|
||||
{
|
||||
}
|
||||
|
||||
bool CameraView::computeLocalToWorldMatrix(Matrix& matrix,NodeVisitor*) const
|
||||
{
|
||||
if (_referenceFrame==RELATIVE_RF)
|
||||
{
|
||||
matrix.preMult(osg::Matrix::rotate(_attitude)*
|
||||
osg::Matrix::translate(_position));
|
||||
}
|
||||
else // absolute
|
||||
{
|
||||
matrix = osg::Matrix::rotate(_attitude)*
|
||||
osg::Matrix::translate(_position);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool CameraView::computeWorldToLocalMatrix(Matrix& matrix,NodeVisitor*) const
|
||||
{
|
||||
if (_referenceFrame==RELATIVE_RF)
|
||||
{
|
||||
matrix.postMult(osg::Matrix::translate(-_position)*
|
||||
osg::Matrix::rotate(_attitude.inverse()));
|
||||
}
|
||||
else // absolute
|
||||
{
|
||||
matrix = osg::Matrix::translate(-_position)*
|
||||
osg::Matrix::rotate(_attitude.inverse());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -16,6 +16,7 @@ CXXFILES =\
|
||||
BoundingSphere.cpp\
|
||||
BufferObject.cpp\
|
||||
CameraNode.cpp\
|
||||
CameraView.cpp\
|
||||
ClearNode.cpp\
|
||||
ClipNode.cpp\
|
||||
ClipPlane.cpp\
|
||||
|
||||
Reference in New Issue
Block a user