/** * * @param renderTestObject */ public OpenGLEventHandler( boolean renderTestObject ) { trackBall = new TrackBall(); centroid = new float[3]; lookAt = new float[3]; eye = new float[3]; this.renderTestObject = renderTestObject; bbox = getDefaultBBox(); calcViewParameters(); }
private void addGeometries( WorldRenderableObject model, boolean remove ) { if ( remove ) { openGLEventListener.removeAllData(); } openGLEventListener.addDataObjectToScene( model ); }
/** * Update the view by evaluating the given key, * * @param keyTyped * r/R(reset view), all others will be ignored. * @return true if the view should be redrawn, false otherwise. */ public boolean updateView( char keyTyped ) { boolean changed = true; if ( keyTyped == 'r' || keyTyped == 'R' ) { calcViewParameters(); changed = true; } return changed; }
/** * */ public void removeAllData() { worldRenderableObjects.clear(); bbox = getDefaultBBox(); calcViewParameters(); }
/** * Adds a gl listener to this {@link LODAnalyzer} * * @param maxX * @param maxY * @throws GLException */ public LODAnalyzer( float maxX, float maxY ) throws GLException { setMinimumSize( new Dimension( 0, 0 ) ); addGLEventListener( this ); this.maxX = maxX; this.maxY = maxY; }
TextureTileAnalyzer() throws GLException { setMinimumSize( new Dimension( 0, 0 ) ); addGLEventListener( this ); }
/** * Adds the given branch group to the scene and set the appropriate distance etc. After adding the branch group to * the rotation group which is controlled by the mouse rotator. * * @param b * a list of WorldRenderableObjects, can be <Code>null</Code>. */ public void addDataObjectToScene( WorldRenderableObject b ) { if ( b != null ) { Envelope env = b.getBbox(); if ( env != null ) { if ( isDefaultBBox() ) { bbox = env; } else { bbox = bbox.merge( env ); } } calcViewParameters(); worldRenderableObjects.add( b ); } }
/** * */ public void calcViewParameters() { centroid = new float[] { (float) bbox.getCentroid().get0(), (float) bbox.getCentroid().get1(), (float) bbox.getCentroid().get2() }; lookAt = new float[] { centroid[0], centroid[1], centroid[2] }; eye = calcOptimalEye( bbox ); float dist = Vectors3f.distance( centroid, eye ); farClippingPlane = 2 * dist; nearClippingPlane = 0.01 * farClippingPlane; trackBall.reset(); }
private void setupOpenGL( boolean testSphere ) { GLCapabilities caps = new GLCapabilities(); caps.setDoubleBuffered( true ); caps.setHardwareAccelerated( true ); caps.setAlphaBits( 8 ); caps.setAccumAlphaBits( 8 ); openGLEventListener = new OpenGLEventHandler( testSphere ); canvas = new GLCanvas( caps ); canvas.addGLEventListener( openGLEventListener ); canvas.addMouseListener( openGLEventListener.getTrackBall() ); canvas.addMouseWheelListener( openGLEventListener.getTrackBall() ); canvas.addMouseMotionListener( openGLEventListener.getTrackBall() ); getContentPane().add( canvas, BorderLayout.CENTER ); }
gl.glLoadIdentity(); glu.gluLookAt( eye[0], eye[1], eye[2], lookAt[0], lookAt[1], lookAt[2], 0, 1, 0 ); trackBall.multModelMatrix( gl, centroid ); float[] newEye = JOGLUtils.getEyeFromModelView( gl ); if ( LOG.isDebugEnabled() ) { drawCube( gl ); glut.glutSolidSphere( sphereSize, 15, 15 );
lodAnalyzer.updateParameters( demRenderer.getCurrentLOD(), params.getViewFrustum() ); lodAnalyzer.repaint();
@Override public void mouseReleased( MouseEvent e ) { if ( e.getSource() instanceof GLAutoDrawable ) { if ( e.getButton() == MouseEvent.BUTTON1 ) { if ( isDragging ) { addToRotation(); // some event was lost, lets fix it. tbRot[0] = 0; tbRot[1] = 1; tbRot[2] = 0; tbRot[3] = 0; isDragging = false; } } } }
@Override public void mousePressed( MouseEvent e ) { if ( e.getSource() instanceof GLAutoDrawable ) { if ( e.getButton() == MouseEvent.BUTTON1 ) { if ( isDragging ) { // some event was lost, lets fix it. tbRot[0] = 0; tbRot[1] = 1; tbRot[2] = 0; tbRot[3] = 0; } start( (GLAutoDrawable) e.getSource(), e.getPoint() ); isDragging = true; } } }
float[] q0 = rotation2Quat( rotationVector ); float[] q1 = rotation2Quat( tbRot );
@Override public void display( GLAutoDrawable drawable ) { LOG.trace( "display( GLAutoDrawable ) called" ); renderTextureTileStructure( drawable.getGL() ); }
@Override public void display( GLAutoDrawable drawable ) { LOG.trace( "display( GLAutoDrawable ) called" ); GL gl = drawable.getGL(); gl.glClear( GL.GL_COLOR_BUFFER_BIT ); // gl.glLoadIdentity(); if ( frustum != null && currentLOD != null ) { renderLODStructure( drawable.getGL() ); } }
private boolean isDefaultBBox() { Envelope env = getDefaultBBox(); return ( Math.abs( bbox.getSpan0() - env.getSpan0() ) < 1E-11 ) && ( Math.abs( bbox.getSpan1() - env.getSpan1() ) < 1E-11 ) && ( Math.abs( bbox.getMin().get0() - env.getMin().get0() ) < 1E-11 ) && ( Math.abs( bbox.getMin().get1() - env.getMin().get1() ) < 1E-11 ) && ( Math.abs( bbox.getMin().get2() - env.getMin().get2() ) < 1E-11 ); }
for ( RenderMeshFragment fragment : currentLOD ) { if ( fragment != null ) { setColor( gl, fragment );
setColor( gl, request ); gl.glVertex2d( request.getMinX() / 32768.0f, request.getMinY() / 32768.0f ); gl.glVertex2d( request.getMaxX() / 32768.0f, request.getMinY() / 32768.0f );