JReality TODO list

From JReality Wiki
Jump to: navigation, search


  • rename SelectionManagerInterface to SelectionManager - and rename SelectionManager to DefaultSelectionManager or SelectionManagerImpl or so

To do: ACM Multimedia Opensource Competition

  • submission itself
    • INSTALL.txt -- everything needed to run the program
    • 2 page proposal
    • website
      • community page update
        • imaginary
        • explore math 3d
        • polymake (thilo fragen)
      • collaborations:
        • mars demo
        • chembear
        • jahre der math: www.jutojo.com animation
        • matheon christmas tree
      • tutorial: make sure all necessary tutorials are there
      • advertise special features: audio, metric-neutral, plugin system,
  • canvas users via forum for
    • suggestions
    • links to webstarts using jReality
  • links to related projects/collaborations
    • half-edge/jreality half-edge
    • jbullet/ jrealitybullet
    • gavrog/ olaf friedrichs-delgado
    • exploremath3d
    • Peter's lab
  • TU-internal projects
    • imulogo movie, mars flight, chembear, matheon xmas tree
    • student projects (jrealityApps)
  • clean up
    • code tree
      • javadoc:
        • extablish and uniformize package.html for all packages
        • ideally, each class has at least one sentence of javadoc at top
      • mark code we don't like as code we don't like (too late perhaps to remove it)

Note: Please append your initials in square brackets to your additions. Otherwise it's hard to know who to contact with questions. [cg]

Next meeting 23.04.09 16:00 bei Ulrich

  • Discuss extensions to IndexedFaceSetFactory (Paul)
  • Changes to reflection maps (carried over from [26.11.08] )
  • Simplified Content and ContentAppearance plugins (using world coord radii)
  • Mouse filtering: need help with toolconfig.xml for passing sampling rate (Using jinput) (Charles)
  • native vs jni folder in jReality svn project?
  • src-tool needs cleaned up: which tools are tested and reliable and documented, which not?
  • Web-site:
    • Advertise audio via tutorial (peter b) and webstarts?
    • MathExplorer webstart (ulrich)?
    • JRWorkspace webstart/tutorial (Stefan)?
  • Bad mouse events in Ubuntu: detect in raw mouse device?

jReality TODO list NEW

Here's a place to collect current tasks for jReality.

  • Integrate this list with the older TODO list that follows it
  • add setPickable() method to SceneGraphComponent
  • ILSFactory: can we please rename setLineCount() to setEdgeCount() ? (Deprecate old name).
  • create SystemProperty.CROSS_EYED_STEREO, default = "true"; when "false", use "wall-eyed" mode instead.
  • Texture2d: clear up naming conventions as appearance attributes (e.g., "lightMap","texture2d","normalMap", are all used now for different purposes).
    • Proposed solution: Use following names: "texture2d", "texture2d[1]", "texture2d[2]", etc.

* Vertex attributes:

    • How to allow separate indices for different attributes, like positions and texture coordinates?
    • This is a serious drawback for some users (e.g., 3d printing)
    • Proposed solution: build into geometry factories so they for example calculate vertex normals correctly but write out an IFS which has duplicated vertices so the texture coordinates are correct. IndexedFaceSetFactory is now able to do that.
  • PointSet
    • Allow setVertexAttribute(INDICES, ...) to allow display of a subset of the vertices (e.g. when others are used in edges or faces but should not be displayed (JOGL backend already supports this)
    • Recommended solution: set RELATIVE_RADII attribute to 0.0 to get this effect.
  • This is as far as we got in our meeting on 31.10.08.
  • New issue [26.11.08] Refactor how we specify reflection maps and skyboxes in the appearance attributes? [ulrich]
    • Remove skybox object, replace with skyboxEnabled in root; everything becomes a cubeMap
    • Add reflectivityEnabled boolean to control whether current cubeMap is used to generate reflections
    • Status of blendColor attribute?
    • Steffen undertakes to carry out this refactoring. However, it may not happen until after end of March.
  • Geometry Utility
    • Move most of the methods here to other classes:
      • BoundingBox methods -> PointSetUtility
      • CalculateNormals methods ->IndexedFaceSetUtility
    • Leave deprecated copies of the methods in GeometryUtility
  • Picking
    • Should edge picking return a point on the actual edge? (currently returns point on tube if tubing is active).
    • It would be "cheaper" to calculate the actual point on the edge, rather than the tube intersections
    • Same question for point picking (when sphere drawing is active)
  • Tool system
    • Filter mouse and wand device inputs to smooth out motion
    • BasicSlots class? -- this would contain a minimal set of input slots as Java elements (so you don't have to look in toolconfig.xml to make sure of spelling, etc.) [gunn]
  • Navigator:
    • shouldn't changing the values in Navigator trigger a new render()? (It doesn't seem to)
    • inspection of transformations should respect signature (use Eff app to evaluate it)
    • inspection of subclasses should use customizer for a superclass, if one exists. (e.g., Transformation)
    • inspection of data lists? (currently not available)
    • the signature should be available somewhere under the appearance
      • global renderman settings shader in root appearance?
    • integration of renderman and GLSL shaders (via simple parsing of shader source to identify parameters)
  • Cleanup
    • Code review: get rid of old classes and methods, especially in de.jreality.geometry
    • testdata3D needs a house-cleaning too
  • Documentation
    • Add more examples to developer tutorial, perhaps devise a template including source code, key words
    • Split up user tutorial into separate pages when it's ready
    • Javadoc still incomplete (geometry factories for example)

Gunn 12:38, 11 Jul 2008 (CEST)

jReality general TODO list [OLD]

  • The file system on the portal machines needs attention: lots of cruft under the demo directory.
  • Current tasks and/or unresolved issues
    • Tools
      • Integrate effective appearance into ToolContext (for example, to know signature)
      • make tools signature-independent
    • Lights
      • Implement global/local lights in backends [gonska]
    • Handling 4D data and non-euclidean signature:
      • Any use of MatrixBuilder.euclidean() without checking to see the current signature should raise a red flag!
    • Readers
      • gvx reader: bring up to date
      • collada/Google-warehouse
    • Labels
      • Per-element offsets and colors? (i.e, Attribute.LABEL_COLORS, Attribute.LABEL_OFFSETS, etc)
      • Specifying point size: alternatives to perspective shrinking?
      • We need a way to turn label display on and off without completing removing the information each time. TextShader currently has method setShowLabels(boolean b). I'd rename this setActive(boolean b).
    • Shading issues
      • Specification of standard shaders has been done partially in the javadoc of de.jreality.scene.shader interfaces.
      • Lights as shaders? And, light change events (for example, now JOGL backend doesn't know when lights have changed)
      • Multi-textures: not currently possible to specify
      • Inheritance via EffectiveAppearance doesn't let you inherit parameters from same-name shaders above you in the inheritance tree. Do we want to change this? (See discussion below)
    • Viewer app
      • Inspection of textures, of transformations, and of GLSL or RenderMan shaders not currently possible.
      • Should be possible to display user-created GUI's along with the navigation panel (for example, on a tabbed pane). This way, users can create custom applications that run "inside of" the ViewerApp.
  • jReality web page
    • A reference to a draft of the GUI paper would be good.
    • Links to webstart applications, etc
    • Tutorial: how to link to the javadoc pages? This is important!! Every reference to a class in the tutorial should link to the javadoc for the class, IMHO.
Gunn 09:54, 28 Feb 2006 (CET)


  • The ImageData class doesn't return a correct BufferedImage -- if you use the standard ImageIO.write() method to save the image the channels are mixed up, due to RGBA (jreality) and ARGB (BufferedImage default) incompatibility. (See getValidBufferedimage() method in ImageUtility class for a fix). -gunn
  • IndexedLineSetFactory method setEdgeIndices() doesn't behave correctly if the number of edges remains unchanged but the lengths of the edges changes.


  • A menu item to display normals
  • Rewrite using general plugin framework?
  • modify accelerator keystrokes for actions such that they don't collide with typing in the bean shell or in inspector components

JOGL backend

  • Bug with lines and display lists. Display lists not properly updated after changes.
  • Implement genuine transparency using a GPU program: See this nvidia article or this one.
  • figure out what's going on with saving RGBA images: opaque backgrounds don't end up being opaque if behind transparent objects.
  • access all shaders using the standard shader interfaces, then create specific JOGL proxies
  • rewrite the whole backend to keep OpenGL state cleaner (as with RenderingHintsInfo)
    • is it possible to avoid effective appearances and only access appearances (inheritance handled by openGL)?

software backend

  • fog for textured surfaces (works only for nontextures triangles at the moment)
  • test the software pick action (probably obsoloete)
  • make local lights work with the visible flag!
  • stereo ? [sw]

Renderman backend

  • implement polygon shaders "twoSided", "flat", and "constant"
  • verify that support for different RenderMan renderers (pixie, 3delight, etc) still works (Sept 2008)
  • clean-up side-effects of prman bug related to face opacity parameter, by trying to upgrade to v13.0. [didn't work: they didn't fix ANY of the 3 bugs we had reported!]
  • Check default polygon shader parameters -- especially how the texture maps are merged with the underlying default color.
  • consider merging defaultpolygonshader.sl with noneuclideanpolygonshader.sl to simplify processing of shaders; same for standard lights (and include shadow support too). Shadow support could be handled via tools like autorib that can postprocess a rib file and to complex transformations to it (like replacing shaders, and adding all necessary code for shadowmaps for example)


  • more demos
    • the mars demo (converted to transform and scale world instead of moving camera and setting eye separation)

Mars demo

  • The Mars demo has been changed to be compatible with head-tracking. That is:
    • Eye-separation has been converted to world scale
    • Camera motion has been inverted into world motion.
    • This leaves the camera node free for the tracking system.
  • Build in controls into portal wand/buttons:
    • Pause/resume built-in flight
    • Allow flying (but when the pre-determined flight is resumed, have to return to where you left off).
    • Allow changing scale of world (but when pre-determined flight is resumed, have to return to where you left off)
  • Extensions:
    • See if more Mars Express data is publicly available and allow this to be loaded in (somehow!)
    • Figure out how to download data at the appropriate resolution for the viewing position (ala Google Earth) -- (No, not an easy task!)
    • Devise tools to show the relative size of features on Mars -- models of the Empire State Bldg, for example, which can be moved around with the wand.