Comment 4 for bug 604687

Revision history for this message
Christian Tominski (ct-informatik) wrote :

I admit that the case you describe can cause precision problems. I thought that the 3D tilting angle is restricted in Gephi and that this case could thus be avoided. We use the implementation that I submitted as a patch in a different tool where a 2D map is shown in a 3D space, which is analog to showing a 2D graph layout in 3D space in Gephi. I works quite well in our tool, but yes it could happen that dragging gets imprecise. Nonetheless, I do think that the proposed patch gives a better feeling to dragging.

Anyways, I've played some more with the navigation and recognized that in addition to the problem with my patch there are two more issues:

- in case of tilted 3D display, when moving nodes, node and mouse pointer are out of sync
- using mouse wheel zoom can screw up the camera when zooming in too much.

In order to come up with suitable solutions one would need to know where objects will appear in the scene and what navigation should be possible in the view. The following options come to my mind:

representation:
- graph layout in 2D only (this is what Gephi has right now)
- graph layout in the x-y plane (z=0) with 3D tilt (this is the 3D mode of Gephi)
- arbitrary 3D layout; no restriction to a plane (is this planned for future versions of Gephi?)

navigation:
- Translation of the layout (referred to as right mouse button dragging)
- Tilt in 3D (Gephi's 3D mode)
- Zooming: essentially camera movement aligned with camera direction (Gephi mouse wheel interaction)
- Rotation of the layout around arbitrary axes (is this planned for Gephi?)
- Orbit: rotation of the camera around a point in the layout (is this planned for Gephi?)

editing:
- translation of nodes (edges)

Depending on the particular representation, different implementations of navigation are needed: object-centric (user manipulates the model, e.g., by means of virtual trackballs) or user-centric (user moves through scene, e.g., fly-through-camera). I think Google did a quite good job in implementing 3D interaction in Google Earth. Maybe one can get some inspiration from there. With regard to editing node/edge positions one have to take care not to run into well-known 3D manipulation problems.

How to proceed? Could you explain a bit more your suggestion of projecting to the plane perpendicular to the camera and containing the graph center? Isn't it that the graph center could be behind the camera?