From 2591c5ee3e675e7778c8032c5d19bddd7f31fe45 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 23 Feb 2016 10:12:22 -0800 Subject: [PATCH] cleanup names that use "keyhole" --- .../src/octree/OctreeQueryNode.cpp | 2 +- interface/src/Application.cpp | 2 +- libraries/octree/src/OctreeHeadlessViewer.cpp | 2 +- libraries/octree/src/OctreeHeadlessViewer.h | 2 +- libraries/octree/src/OctreeQuery.cpp | 10 +++++----- libraries/octree/src/OctreeQuery.h | 6 +++--- libraries/octree/src/ViewFrustum.cpp | 18 +++++++----------- libraries/octree/src/ViewFrustum.h | 16 +++++++++------- tests/octree/src/ViewFrustumTests.cpp | 18 +++++++++--------- 9 files changed, 37 insertions(+), 39 deletions(-) diff --git a/assignment-client/src/octree/OctreeQueryNode.cpp b/assignment-client/src/octree/OctreeQueryNode.cpp index 78a049edd6..55eddf9e13 100644 --- a/assignment-client/src/octree/OctreeQueryNode.cpp +++ b/assignment-client/src/octree/OctreeQueryNode.cpp @@ -153,7 +153,7 @@ bool OctreeQueryNode::updateCurrentViewFrustum() { newestViewFrustum.setPosition(getCameraPosition()); newestViewFrustum.setOrientation(getCameraOrientation()); - newestViewFrustum.setKeyholeRadius(getKeyholeRadius()); + newestViewFrustum.setCenterRadius(getCameraCenterRadius()); // Also make sure it's got the correct lens details from the camera float originalFOV = getCameraFov(); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0f7b84d8ab..95916f440d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3387,7 +3387,7 @@ void Application::queryOctree(NodeType_t serverType, PacketType packetType, Node _octreeQuery.setCameraNearClip(_viewFrustum.getNearClip()); _octreeQuery.setCameraFarClip(_viewFrustum.getFarClip()); _octreeQuery.setCameraEyeOffsetPosition(glm::vec3()); - _octreeQuery.setKeyholeRadius(_viewFrustum.getKeyholeRadius()); + _octreeQuery.setCameraCenterRadius(_viewFrustum.getCenterRadius()); auto lodManager = DependencyManager::get(); _octreeQuery.setOctreeSizeScale(lodManager->getOctreeSizeScale()); _octreeQuery.setBoundaryLevelAdjust(lodManager->getBoundaryLevelAdjust()); diff --git a/libraries/octree/src/OctreeHeadlessViewer.cpp b/libraries/octree/src/OctreeHeadlessViewer.cpp index b56181be75..b5c83447a3 100644 --- a/libraries/octree/src/OctreeHeadlessViewer.cpp +++ b/libraries/octree/src/OctreeHeadlessViewer.cpp @@ -52,7 +52,7 @@ void OctreeHeadlessViewer::queryOctree() { _octreeQuery.setCameraNearClip(_viewFrustum.getNearClip()); _octreeQuery.setCameraFarClip(_viewFrustum.getFarClip()); _octreeQuery.setCameraEyeOffsetPosition(glm::vec3()); - _octreeQuery.setKeyholeRadius(_viewFrustum.getKeyholeRadius()); + _octreeQuery.setCameraCenterRadius(_viewFrustum.getCenterRadius()); _octreeQuery.setOctreeSizeScale(_voxelSizeScale); _octreeQuery.setBoundaryLevelAdjust(_boundaryLevelAdjust); diff --git a/libraries/octree/src/OctreeHeadlessViewer.h b/libraries/octree/src/OctreeHeadlessViewer.h index bdfebd82f6..4efdb8546e 100644 --- a/libraries/octree/src/OctreeHeadlessViewer.h +++ b/libraries/octree/src/OctreeHeadlessViewer.h @@ -46,7 +46,7 @@ public slots: // setters for camera attributes void setPosition(const glm::vec3& position) { _viewFrustum.setPosition(position); } void setOrientation(const glm::quat& orientation) { _viewFrustum.setOrientation(orientation); } - void setKeyholeRadius(float keyholdRadius) { _viewFrustum.setKeyholeRadius(keyholdRadius); } + void setCenterRadius(float radius) { _viewFrustum.setCenterRadius(radius); } // setters for LOD and PPS void setVoxelSizeScale(float sizeScale) { _voxelSizeScale = sizeScale; } diff --git a/libraries/octree/src/OctreeQuery.cpp b/libraries/octree/src/OctreeQuery.cpp index 0e7f565c00..a69d88c693 100644 --- a/libraries/octree/src/OctreeQuery.cpp +++ b/libraries/octree/src/OctreeQuery.cpp @@ -64,8 +64,8 @@ int OctreeQuery::getBroadcastData(unsigned char* destinationBuffer) { memcpy(destinationBuffer, &_boundaryLevelAdjust, sizeof(_boundaryLevelAdjust)); destinationBuffer += sizeof(_boundaryLevelAdjust); - memcpy(destinationBuffer, &_keyholeRadius, sizeof(_keyholeRadius)); - destinationBuffer += sizeof(_keyholeRadius); + memcpy(destinationBuffer, &_cameraCenterRadius, sizeof(_cameraCenterRadius)); + destinationBuffer += sizeof(_cameraCenterRadius); return destinationBuffer - bufferStart; } @@ -109,9 +109,9 @@ int OctreeQuery::parseData(ReceivedMessage& message) { auto bytesRead = sourceBuffer - startPosition; auto bytesLeft = message.getSize() - bytesRead; - if (bytesLeft >= (int)sizeof(_keyholeRadius)) { - memcpy(&_keyholeRadius, sourceBuffer, sizeof(_keyholeRadius)); - sourceBuffer += sizeof(_keyholeRadius); + if (bytesLeft >= (int)sizeof(_cameraCenterRadius)) { + memcpy(&_cameraCenterRadius, sourceBuffer, sizeof(_cameraCenterRadius)); + sourceBuffer += sizeof(_cameraCenterRadius); } return sourceBuffer - startPosition; } diff --git a/libraries/octree/src/OctreeQuery.h b/libraries/octree/src/OctreeQuery.h index 7e157c4252..e446e1abc7 100644 --- a/libraries/octree/src/OctreeQuery.h +++ b/libraries/octree/src/OctreeQuery.h @@ -58,7 +58,7 @@ public: float getCameraNearClip() const { return _cameraNearClip; } float getCameraFarClip() const { return _cameraFarClip; } const glm::vec3& getCameraEyeOffsetPosition() const { return _cameraEyeOffsetPosition; } - float getKeyholeRadius() const { return _keyholeRadius; } + float getCameraCenterRadius() const { return _cameraCenterRadius; } glm::vec3 calculateCameraDirection() const; @@ -70,7 +70,7 @@ public: void setCameraNearClip(float nearClip) { _cameraNearClip = nearClip; } void setCameraFarClip(float farClip) { _cameraFarClip = farClip; } void setCameraEyeOffsetPosition(const glm::vec3& eyeOffsetPosition) { _cameraEyeOffsetPosition = eyeOffsetPosition; } - void setKeyholeRadius(float keyholeRadius) { _keyholeRadius = keyholeRadius; } + void setCameraCenterRadius(float radius) { _cameraCenterRadius = radius; } // related to Octree Sending strategies int getMaxQueryPacketsPerSecond() const { return _maxQueryPPS; } @@ -90,7 +90,7 @@ protected: float _cameraAspectRatio = 1.0f; float _cameraNearClip = 0.0f; float _cameraFarClip = 0.0f; - float _keyholeRadius { 0.0f }; + float _cameraCenterRadius { 0.0f }; glm::vec3 _cameraEyeOffsetPosition = glm::vec3(0.0f); // octree server sending items diff --git a/libraries/octree/src/ViewFrustum.cpp b/libraries/octree/src/ViewFrustum.cpp index f720283d21..b0503c54aa 100644 --- a/libraries/octree/src/ViewFrustum.cpp +++ b/libraries/octree/src/ViewFrustum.cpp @@ -115,10 +115,6 @@ void ViewFrustum::calculate() { // Our ModelViewProjection : multiplication of our 3 matrices (note: model is identity, so we can drop it) _ourModelViewProjectionMatrix = _projection * view; // Remember, matrix multiplication is the other way around - - // Set up our keyhole bounding box... - glm::vec3 corner = _position - _keyholeRadius; - _keyholeBoundingCube = AACube(corner,(_keyholeRadius * 2.0f)); } //enum { TOP_PLANE = 0, BOTTOM_PLANE, LEFT_PLANE, RIGHT_PLANE, NEAR_PLANE, FAR_PLANE }; @@ -207,14 +203,14 @@ ViewFrustum::location ViewFrustum::cubeInKeyhole(const AACube& cube) const { float distance = glm::length(cubeOffset); if (distance > EPSILON) { glm::vec3 vertex = cube.getFarthestVertex(cubeOffset) - _position; - if (glm::dot(vertex, cubeOffset) < _keyholeRadius * distance) { + if (glm::dot(vertex, cubeOffset) < _centerSphereRadius * distance) { // the most outward cube vertex is inside central sphere return INSIDE; } - if (!cube.touchesSphere(_position, _keyholeRadius)) { + if (!cube.touchesSphere(_position, _centerSphereRadius)) { sphereResult = OUTSIDE; } - } else if (_keyholeRadius > HALF_SQRT_THREE * cube.getScale()) { + } else if (_centerSphereRadius > HALF_SQRT_THREE * cube.getScale()) { // the cube is in center of sphere and its bounding radius is inside return INSIDE; } @@ -227,7 +223,7 @@ ViewFrustum::location ViewFrustum::cubeInKeyhole(const AACube& cube) const { bool ViewFrustum::sphereTouchesKeyhole(const glm::vec3& center, float radius) const { // check positive touch against central sphere - if (glm::length(center - _position) <= (radius + _keyholeRadius)) { + if (glm::length(center - _position) <= (radius + _centerSphereRadius)) { return true; } // check negative touches against frustum planes @@ -241,7 +237,7 @@ bool ViewFrustum::sphereTouchesKeyhole(const glm::vec3& center, float radius) co bool ViewFrustum::cubeTouchesKeyhole(const AACube& cube) const { // check positive touch against central sphere - if (cube.touchesSphere(_position, _keyholeRadius)) { + if (cube.touchesSphere(_position, _centerSphereRadius)) { return true; } // check negative touches against frustum planes @@ -256,7 +252,7 @@ bool ViewFrustum::cubeTouchesKeyhole(const AACube& cube) const { bool ViewFrustum::boxTouchesKeyhole(const AABox& box) const { // check positive touch against central sphere - if (box.touchesSphere(_position, _keyholeRadius)) { + if (box.touchesSphere(_position, _centerSphereRadius)) { return true; } // check negative touches against frustum planes @@ -448,7 +444,7 @@ void ViewFrustum::printDebugDetails() const { qCDebug(octree, "_right=%f,%f,%f", (double)_right.x, (double)_right.y, (double)_right.z ); qCDebug(octree, "_fieldOfView=%f", (double)_fieldOfView); qCDebug(octree, "_aspectRatio=%f", (double)_aspectRatio); - qCDebug(octree, "_keyHoleRadius=%f", (double)_keyholeRadius); + qCDebug(octree, "_centerSphereRadius=%f", (double)_centerSphereRadius); qCDebug(octree, "_nearClip=%f", (double)_nearClip); qCDebug(octree, "_farClip=%f", (double)_farClip); qCDebug(octree, "_focalLength=%f", (double)_focalLength); diff --git a/libraries/octree/src/ViewFrustum.h b/libraries/octree/src/ViewFrustum.h index cd440676fe..c7e3429366 100644 --- a/libraries/octree/src/ViewFrustum.h +++ b/libraries/octree/src/ViewFrustum.h @@ -27,12 +27,15 @@ #include "OctreeConstants.h" #include "OctreeProjectedPolygon.h" -const float DEFAULT_KEYHOLE_RADIUS = 3.0f; +const float DEFAULT_CENTER_SPHERE_RADIUS = 3.0f; const float DEFAULT_FIELD_OF_VIEW_DEGREES = 45.0f; const float DEFAULT_ASPECT_RATIO = 16.0f/9.0f; const float DEFAULT_NEAR_CLIP = 0.08f; const float DEFAULT_FAR_CLIP = (float)HALF_TREE_SCALE; +// the "ViewFrustum" has a "keyhole" shape: a regular frustum for stuff that is "visible" with +// a central sphere for stuff that is nearby (for physics simulation). + class ViewFrustum { public: // setters for camera attributes @@ -83,9 +86,9 @@ public: const glm::vec3& getNearBottomLeft() const { return _cornersWorld[BOTTOM_LEFT_NEAR]; } const glm::vec3& getNearBottomRight() const { return _cornersWorld[BOTTOM_RIGHT_NEAR]; } - // get/set for keyhole attribute - void setKeyholeRadius(float keyholdRadius) { _keyholeRadius = keyholdRadius; } - float getKeyholeRadius() const { return _keyholeRadius; } + // get/set for central spherek attribute + void setCenterRadius(float radius) { _centerSphereRadius = radius; } + float getCenterRadius() const { return _centerSphereRadius; } void calculate(); @@ -96,6 +99,7 @@ public: ViewFrustum::location cubeInFrustum(const AACube& cube) const; ViewFrustum::location boxInFrustum(const AABox& box) const; + /// @return INSIDE, INTERSECT, or OUTSIDE depending on how cube intersects the keyhole shape ViewFrustum::location cubeInKeyhole(const AACube& cube) const; // more efficient methods when only need boolean result @@ -151,9 +155,7 @@ private: glm::vec3 _up = IDENTITY_UP; glm::vec3 _right = IDENTITY_RIGHT; - // keyhole attributes - float _keyholeRadius = DEFAULT_KEYHOLE_RADIUS; - AACube _keyholeBoundingCube; + float _centerSphereRadius = DEFAULT_CENTER_SPHERE_RADIUS; // Calculated values glm::mat4 _inverseProjection; diff --git a/tests/octree/src/ViewFrustumTests.cpp b/tests/octree/src/ViewFrustumTests.cpp index a5149d689c..fe28806283 100644 --- a/tests/octree/src/ViewFrustumTests.cpp +++ b/tests/octree/src/ViewFrustumTests.cpp @@ -50,7 +50,7 @@ void ViewFrustumTests::testInit() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); // check frustum dimensions @@ -96,7 +96,7 @@ void ViewFrustumTests::testPointInFrustum() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); float delta = 0.1f; @@ -190,7 +190,7 @@ void ViewFrustumTests::testSphereInFrustum() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); float delta = 0.1f; @@ -319,7 +319,7 @@ void ViewFrustumTests::testCubeInFrustum() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); float delta = 0.1f; @@ -465,7 +465,7 @@ void ViewFrustumTests::testBoxInFrustum() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); float delta = 0.1f; @@ -610,7 +610,7 @@ void ViewFrustumTests::testCubeInKeyhole() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); float delta = 0.1f; @@ -808,7 +808,7 @@ void ViewFrustumTests::testSphereTouchesKeyhole() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); float delta = 0.1f; @@ -976,7 +976,7 @@ void ViewFrustumTests::testCubeTouchesKeyhole() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); float delta = 0.1f; @@ -1170,7 +1170,7 @@ void ViewFrustumTests::testBoxTouchesKeyhole() { view.setProjection(glm::perspective(fovX, aspect, nearClip, farClip)); view.setPosition(center); view.setOrientation(rotation); - view.setKeyholeRadius(holeRadius); + view.setCenterRadius(holeRadius); view.calculate(); float delta = 0.1f;