From 219d63784b7f6820a898b3b5b1852e4b54e40dba Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 22 Sep 2017 10:39:51 -0700 Subject: [PATCH 1/2] REmoving the extra variables in Linear3D and just use the _renderTRansform --- interface/src/ui/overlays/Line3DOverlay.cpp | 23 ++++++++++++++++----- interface/src/ui/overlays/Line3DOverlay.h | 4 ---- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/interface/src/ui/overlays/Line3DOverlay.cpp b/interface/src/ui/overlays/Line3DOverlay.cpp index d8a83fad49..87021cf852 100644 --- a/interface/src/ui/overlays/Line3DOverlay.cpp +++ b/interface/src/ui/overlays/Line3DOverlay.cpp @@ -133,8 +133,9 @@ void Line3DOverlay::render(RenderArgs* args) { auto batch = args->_batch; if (batch) { batch->setModelTransform(Transform()); - glm::vec3 start = _renderStart; - glm::vec3 end = _renderEnd; + auto& renderTransform = getRenderTransform(); + glm::vec3 start = renderTransform.getTranslation(); + glm::vec3 end = renderTransform.transform(vec3(0.0, 0.0, -1.0)); auto geometryCache = DependencyManager::get(); if (getIsDashedLine()) { @@ -269,7 +270,19 @@ Line3DOverlay* Line3DOverlay::createClone() const { } Transform Line3DOverlay::evalRenderTransform() { - _renderStart = getStart(); - _renderEnd = getEnd(); - return Parent::evalRenderTransform(); + // Capture start and endin the renderTransform: + // start is the origin + // end is at the tip of the front axis aka -Z + Transform transform; + transform.setTranslation( getStart()); + auto endPos = getEnd(); + + auto vec = endPos - transform.getTranslation(); + auto scale = glm::length(vec); + auto dir = vec / scale; + auto orientation = glm::rotation(glm::vec3(0,0,-1), dir); + transform.setRotation(orientation); + transform.setScale(scale); + + return transform; } diff --git a/interface/src/ui/overlays/Line3DOverlay.h b/interface/src/ui/overlays/Line3DOverlay.h index d1c6aa6183..bcb65b1f1e 100644 --- a/interface/src/ui/overlays/Line3DOverlay.h +++ b/interface/src/ui/overlays/Line3DOverlay.h @@ -73,10 +73,6 @@ private: float _glow { 0.0 }; float _glowWidth { 0.0 }; int _geometryCacheID; - - // Similar to the _renderTransform, we capture the start and end pos for render loop in game loop - glm::vec3 _renderStart; - glm::vec3 _renderEnd; }; #endif // hifi_Line3DOverlay_h From b424505f6560248fb99c1b358863b0ed7bf75229 Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 22 Sep 2017 10:48:56 -0700 Subject: [PATCH 2/2] FIxing the case of the Circle3D --- interface/src/ui/overlays/Circle3DOverlay.cpp | 11 +---------- interface/src/ui/overlays/Circle3DOverlay.h | 2 -- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/interface/src/ui/overlays/Circle3DOverlay.cpp b/interface/src/ui/overlays/Circle3DOverlay.cpp index b3e4cba5d9..4e51844d21 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.cpp +++ b/interface/src/ui/overlays/Circle3DOverlay.cpp @@ -84,12 +84,7 @@ void Circle3DOverlay::render(RenderArgs* args) { batch.setPipeline(args->_shapePipeline->pipeline); } - // FIXME: THe line width of _lineWidth is not supported anymore, we ll need a workaround - // FIXME Start using the _renderTransform instead of calling for Transform from here, do the custom things needed in evalRenderTransform() - - auto transform = getTransform(); - transform.postScale(glm::vec3(getDimensions(), 1.0f)); - batch.setModelTransform(transform); + batch.setModelTransform(getRenderTransform()); // for our overlay, is solid means we draw a ring between the inner and outer radius of the circle, otherwise // we just draw a line... @@ -438,7 +433,3 @@ bool Circle3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve Circle3DOverlay* Circle3DOverlay::createClone() const { return new Circle3DOverlay(this); } - -Transform Circle3DOverlay::evalRenderTransform() { - return getTransform(); -} diff --git a/interface/src/ui/overlays/Circle3DOverlay.h b/interface/src/ui/overlays/Circle3DOverlay.h index e41c308d9d..11c9c9710f 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.h +++ b/interface/src/ui/overlays/Circle3DOverlay.h @@ -88,8 +88,6 @@ protected: int _minorTicksVerticesID { 0 }; bool _dirty { true }; - - Transform evalRenderTransform() override; };