remove camera methods from FilamentViewer
This commit is contained in:
@@ -190,10 +190,6 @@ namespace thermion_filament
|
|||||||
_view->setScene(_scene);
|
_view->setScene(_scene);
|
||||||
_view->setCamera(_mainCamera);
|
_view->setCamera(_mainCamera);
|
||||||
|
|
||||||
_cameraFocalLength = 28.0f;
|
|
||||||
_mainCamera->setLensProjection(_cameraFocalLength, 1.0f, _near,
|
|
||||||
_far);
|
|
||||||
|
|
||||||
const float aperture = _mainCamera->getAperture();
|
const float aperture = _mainCamera->getAperture();
|
||||||
const float shutterSpeed = _mainCamera->getShutterSpeed();
|
const float shutterSpeed = _mainCamera->getShutterSpeed();
|
||||||
const float sens = _mainCamera->getSensitivity();
|
const float sens = _mainCamera->getSensitivity();
|
||||||
@@ -851,68 +847,6 @@ namespace thermion_filament
|
|||||||
mtx.unlock();
|
mtx.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
|
||||||
/// Set the exposure for the current active camera.
|
|
||||||
///
|
|
||||||
void FilamentViewer::setCameraExposure(float aperture, float shutterSpeed, float sensitivity)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
cam.setExposure(aperture, shutterSpeed, sensitivity);
|
|
||||||
}
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Set the focal length of the active camera.
|
|
||||||
///
|
|
||||||
void FilamentViewer::setCameraFocalLength(float focalLength)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
_cameraFocalLength = focalLength;
|
|
||||||
const auto &vp = _view->getViewport();
|
|
||||||
if (vp.height == 0)
|
|
||||||
{
|
|
||||||
Log("Viewport height has not yet been set, returning");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
auto aspect = vp.width / vp.height;
|
|
||||||
|
|
||||||
cam.setLensProjection(_cameraFocalLength, aspect, _near,
|
|
||||||
_far);
|
|
||||||
}
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Set the focal length of the active camera.
|
|
||||||
///
|
|
||||||
void FilamentViewer::setCameraCulling(double near, double far)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
_near = near;
|
|
||||||
_far = far;
|
|
||||||
const auto &vp = _view->getViewport();
|
|
||||||
auto aspect = vp.width / vp.height;
|
|
||||||
cam.setLensProjection(_cameraFocalLength, aspect, _near, _far);
|
|
||||||
}
|
|
||||||
|
|
||||||
double FilamentViewer::getCameraCullingNear()
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
return cam.getNear();
|
|
||||||
}
|
|
||||||
double FilamentViewer::getCameraCullingFar()
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
return cam.getCullingFar();
|
|
||||||
}
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Set the focus distance of the active camera.
|
|
||||||
///
|
|
||||||
void FilamentViewer::setCameraFocusDistance(float focusDistance)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
_cameraFocusDistance = focusDistance;
|
|
||||||
cam.setFocusDistance(_cameraFocusDistance);
|
|
||||||
}
|
|
||||||
|
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
@@ -1386,157 +1320,21 @@ namespace thermion_filament
|
|||||||
this->_recording = recording;
|
this->_recording = recording;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FilamentViewer::updateViewportAndCameraProjection(
|
Camera* FilamentViewer::getCamera(EntityId entity) {
|
||||||
int width, int height, float contentScaleFactor)
|
return _engine->getCameraComponent(Entity::import(entity));
|
||||||
|
}
|
||||||
|
|
||||||
|
void FilamentViewer::updateViewport(
|
||||||
|
uint32_t width, uint32_t height)
|
||||||
{
|
{
|
||||||
if (!_view || !_mainCamera)
|
_view->setViewport({0, 0, width, height});
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const uint32_t _width = width * contentScaleFactor;
|
|
||||||
const uint32_t _height = height * contentScaleFactor;
|
|
||||||
_view->setViewport({0, 0, _width, _height});
|
|
||||||
|
|
||||||
const double aspect = (double)width / height;
|
|
||||||
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
|
|
||||||
cam.setLensProjection(_cameraFocalLength, aspect, _near,
|
|
||||||
_far);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FilamentViewer::setViewFrustumCulling(bool enabled)
|
void FilamentViewer::setViewFrustumCulling(bool enabled)
|
||||||
{
|
{
|
||||||
_view->setFrustumCullingEnabled(enabled);
|
_view->setFrustumCullingEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
float FilamentViewer::getCameraFov(bool horizontal)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
return cam.getFieldOfViewInDegrees(horizontal ? Camera::Fov::HORIZONTAL : Camera::Fov::VERTICAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FilamentViewer::setCameraFov(double fovInDegrees, bool horizontal)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
const auto &vp = _view->getViewport();
|
|
||||||
const float aspect = static_cast<float>(vp.width) / static_cast<float>(vp.height);
|
|
||||||
cam.setProjection(fovInDegrees, aspect, _near, _far, horizontal ? Camera::Fov::HORIZONTAL : Camera::Fov::VERTICAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FilamentViewer::setCameraPosition(float x, float y, float z)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
|
|
||||||
_cameraPosition = math::mat4f::translation(math::float3(x, y, z));
|
|
||||||
cam.setModelMatrix(_cameraRotation * _cameraPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FilamentViewer::moveCameraToAsset(EntityId entityId)
|
|
||||||
{
|
|
||||||
auto asset = _sceneManager->getAssetByEntityId(entityId);
|
|
||||||
if (!asset)
|
|
||||||
{
|
|
||||||
Log("Failed to find asset attached to specified entity id.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const filament::Aabb bb = asset->getBoundingBox();
|
|
||||||
auto corners = bb.getCorners();
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
auto eye = corners.vertices[0] * 1.5;
|
|
||||||
auto lookAt = corners.vertices[7];
|
|
||||||
cam.lookAt(eye, lookAt);
|
|
||||||
Log("Moved camera to %f %f %f, lookAt %f %f %f, near %f far %f", eye[0], eye[1], eye[2], lookAt[0], lookAt[1], lookAt[2], cam.getNear(), cam.getCullingFar());
|
|
||||||
}
|
|
||||||
|
|
||||||
void FilamentViewer::setCameraRotation(float w, float x, float y, float z)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
_cameraRotation = math::mat4f(math::quatf(w, x, y, z));
|
|
||||||
cam.setModelMatrix(_cameraRotation * _cameraPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FilamentViewer::setCameraModelMatrix(const float *const matrix)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
|
|
||||||
mat4 modelMatrix(
|
|
||||||
matrix[0],
|
|
||||||
matrix[1],
|
|
||||||
matrix[2],
|
|
||||||
matrix[3],
|
|
||||||
matrix[4],
|
|
||||||
matrix[5],
|
|
||||||
matrix[6],
|
|
||||||
matrix[7],
|
|
||||||
matrix[8],
|
|
||||||
matrix[9],
|
|
||||||
matrix[10],
|
|
||||||
matrix[11],
|
|
||||||
matrix[12],
|
|
||||||
matrix[13],
|
|
||||||
matrix[14],
|
|
||||||
matrix[15]);
|
|
||||||
cam.setModelMatrix(modelMatrix);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FilamentViewer::setCameraProjectionMatrix(const double *const matrix, double near, double far)
|
|
||||||
{
|
|
||||||
Camera &cam = _view->getCamera();
|
|
||||||
|
|
||||||
mat4 projectionMatrix(
|
|
||||||
matrix[0],
|
|
||||||
matrix[1],
|
|
||||||
matrix[2],
|
|
||||||
matrix[3],
|
|
||||||
matrix[4],
|
|
||||||
matrix[5],
|
|
||||||
matrix[6],
|
|
||||||
matrix[7],
|
|
||||||
matrix[8],
|
|
||||||
matrix[9],
|
|
||||||
matrix[10],
|
|
||||||
matrix[11],
|
|
||||||
matrix[12],
|
|
||||||
matrix[13],
|
|
||||||
matrix[14],
|
|
||||||
matrix[15]);
|
|
||||||
cam.setCustomProjection(projectionMatrix, projectionMatrix, near, far);
|
|
||||||
}
|
|
||||||
|
|
||||||
const math::mat4 FilamentViewer::getCameraModelMatrix()
|
|
||||||
{
|
|
||||||
const auto &cam = _view->getCamera();
|
|
||||||
return cam.getModelMatrix();
|
|
||||||
}
|
|
||||||
|
|
||||||
const math::mat4 FilamentViewer::getCameraViewMatrix()
|
|
||||||
{
|
|
||||||
const auto &cam = _view->getCamera();
|
|
||||||
return cam.getViewMatrix();
|
|
||||||
}
|
|
||||||
|
|
||||||
const math::mat4 FilamentViewer::getCameraProjectionMatrix()
|
|
||||||
{
|
|
||||||
const auto &cam = _view->getCamera();
|
|
||||||
return cam.getProjectionMatrix();
|
|
||||||
}
|
|
||||||
|
|
||||||
const math::mat4 FilamentViewer::getCameraCullingProjectionMatrix()
|
|
||||||
{
|
|
||||||
const auto &cam = _view->getCamera();
|
|
||||||
return cam.getCullingProjectionMatrix();
|
|
||||||
}
|
|
||||||
|
|
||||||
const filament::Frustum FilamentViewer::getCameraFrustum()
|
|
||||||
{
|
|
||||||
const auto &cam = _view->getCamera();
|
|
||||||
return cam.getFrustum();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FilamentViewer::_createManipulator()
|
void FilamentViewer::_createManipulator()
|
||||||
{
|
{
|
||||||
Camera &cam = _view->getCamera();
|
Camera &cam = _view->getCamera();
|
||||||
|
|||||||
Reference in New Issue
Block a user