private double distanceRatio(ArrowEditor ae, Viewport viewport) { Point3d point = ae.getEditorOrigin(); Point3d cameraPoint = viewport.getPosition(); return cameraPoint.distance(point) * 480d / viewport.getHeight(); }
@Override protected void drawBeforeEditorObjects(GL2 gl, Viewport viewport2) { modelRender.resetMaterials(); modelRender.setupDefaultMaterial(gl); skyBox.draw(gl, viewport2.getPosition()); ground.draw(gl, viewport2.getPosition()); if (modelRender.isDebugging()) { axisLabels.draw(gl); floor.draw(gl); // drawTextInfo(gl, simpleMoveAnimator.info()); } compass.drawAtLeftBottom(gl, viewport2); }
/** * Setup camera position and direction. * * @param gl * gl * @param viewport * viewport with camera position */ public static void lookAt(GL2 gl, Viewport viewport) { // Activate and reset model view matrix. gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); gl.glLoadIdentity(); Point3d position = viewport.getPosition(); Vector3d lookAt = viewport.getLookAt(); Vector3d lookUp = viewport.getLookUp(); // sets camera position and direction new GLU().gluLookAt(position.x, position.y, position.z, lookAt.x, lookAt.y, lookAt.z, lookUp.x, lookUp.y, lookUp.z); }
/** * Draws arrow editor. * * @param gl * gl * @param ae * arrow editor to draw * @param isActiveEditor * if editor is active * @param isHighlightedEditor * if editor is highlighted * @param viewport * viewport */ public void draw(GL2 gl, ArrowEditor ae, boolean isActiveEditor, boolean isHighlightedEditor, Viewport viewport) { Point3d cameraPoint = viewport.getPosition(); Point3d activeSpot = ae.getActiveSpot(cameraPoint); double distanceRatio = distanceRatio(ae, viewport); gl.glEnable(GLLightingFunc.GL_COLOR_MATERIAL); drawActiveSpot(gl, activeSpot, isHighlightedEditor, ae.getEditorType(), distanceRatio); drawDottedLine(gl, ae); if (isHighlightedEditor) { drawMeasure(gl, ae, viewport, distanceRatio); } gl.glDisable(GLLightingFunc.GL_COLOR_MATERIAL); }