Win a copy of Head First Android this week in the Android forum!
    Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • Paul Clapham
  • Ron McLeod
  • Liutauras Vilda
Sheriffs:
  • Jeanne Boyarsky
  • Rob Spoor
  • Bear Bibeault
Saloon Keepers:
  • Jesse Silverman
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
Bartenders:
  • Piet Souris
  • Al Hobbs
  • salvin francis
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Report post to moderator
This is an FAQ for the Graphics and 3D Programming forum. It is freely editable. Let's get helpful and accurate answers. The intended approach, here, is a concepts-first overview. Actual questions about the concepts and tools can be added as extras.

  • What is 3D programming?

    • Code which attempts, in non-trivial ways, to visually portray objects so humans perceive them as having depth, in addition to the usual height and width available on monitors.



  • What tools are available?

    • Java OpenGL (JOGL). This is just a wrapper around OpenGL. Books and other knowledge port almost instantly.

    • JavaFX Scene. JavaFX, the GUI technology, includes a 3D scene graph.

    • Java3D. This dates back to around 2000, but has been losing mindshare to JavaFx.

    • Ray casting techniques. This is an advanced technique which can yield more realism, but at a cost in terms of rendering speed. All things change, however.



  • What concepts must be addressed?

    • Projection or Perspective - how to layout Z dimension and how x and y are perceived

    • Coordinates - world, object, eye, etc.

    • Z order - how to arrange things that occlude one another

    • Geometry - how to represent some real-world object in a 3D scene

    • Clipping - don't pay cycles for what the user cannot see

    • Focus - what part of the scene do is visible, and from what direction

    • Lighting - making surfaces look more realistic.

    • Coloring - applying required colors, including texturing if applicable

    • Animation - it looks like it's moving

    • Picking - selecting one object in the scene, or figuring out where in world coordinates the pointing device was clicked

    • Level of detail - making the scene 'busy' or 'blurry' depending on proximity

    • Performance - balancing all the above with metrics like frame rate



  • What's the difference between OpenGL and Java OpenGL?

    • Java OpenGL, or JOGL, is a thin layer atop the OpenGL C library and JNI.

    • JOGL is, according to this link, http://jogamp.org/jogl/www/ "...the Java™ Binding for the OpenGL® API, and is designed to provide hardware-supported 3D graphics to applications written in Java."

    • Since they are so similar, reference materials on OpenGL can be used with little mental translation, for JOGL concepts.

    • Being part of the Java Virtual Machine, byte order differs internal-to-java, vs the GPU.

    • One of the 'seams' between Java and OpenGL, is that Java NIO buffers must be used to push data back and forth (edit: when working with VBO's)


  • Books

    • Foundations of 3D Computer Graphics, by Steven J. Gortler. Dense, conceptual book on the concepts.

    • The OpenGL Super Bible. Big, fat book, with lots of examples. All C.

    • OpenGL Programming Guide, from the same source as the super bible.

    • Interactive Computer Graphics, by Edward Angel and Dave Shreiner. Covers techniques, and builds up with theory.

    • 3D User Interfaces with Java 3D, by Jon Barilleaux. This addresses most or all the concepts listed above, for Java3D.




 
    Bookmark Topic Watch Topic
  • New Topic