/** * Setup openGl view perspective. * * @param viewport * viewport with perspective configuration * @param gl * gl */ public static void reshapePerspective(Viewport viewport, GL2 gl) { // size of drawing area gl.glViewport(0, 0, viewport.getWidth(), viewport.getHeight()); // activate projection matrix gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION); // load identity as projection gl.glLoadIdentity(); // setup projection perspective new GLU().gluPerspective(viewport.getFovy(), viewport.viewportAspectRatio(), viewport.getZNear(), viewport.getZFar()); } }
private double distanceRatio(ArrowEditor ae, Viewport viewport) { Point3d point = ae.getEditorOrigin(); Point3d cameraPoint = viewport.getPosition(); return cameraPoint.distance(point) * 480d / viewport.getHeight(); }
public void reshape(int width, int height, Camera camera) { this.width = width; this.height = height; updateViewport(camera); }
/** * 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 compass at left bottom corner of viewport. * * @param gl * gl * @param viewport * viewport */ public void drawAtLeftBottom(GL2 gl, Viewport viewport) { int distance = 70; Ray3d ray3d = viewport.picking(distance, viewport.getHeight() - distance); Point3d point = ray3d.getPoint(); Vector3d vector = ray3d.getVector(); vector.normalize(); vector.scale(1.5); point.add(vector); draw(gl, point); }
@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); }
Vector3d screenHorizontally = new Vector3d(viewport.getScreenHorizontally()); screenHorizontally.normalize();
/** * 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); }
viewport.updateViewport(camera);