ViewerControl

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

ViewerControl

This is the Interface to control the DWARF 3D Viewer.

ViewerControl consists of the following interface ViewerControl.idl

  • boolean createObject(in string label, in string parent, in string scene); Add a 3D Object to the SceneGraph?.
  • boolean createPoseDataReceiver(in ThingID? id); Create a SoPoseDataReceiver? and corresponding need.
  • boolean moveObject(in string label, in string parent); Removes the specified (sub-)tree from the old parent and attaches it to the specified parent.
  • boolean movePoseDataReceiver(in ThingID? id, in ThingID? parent); Removes a SoPoseDataReceiver? from from the old parent and attaches it to the specified parent.
  • boolean connectObject(in string label, in ThingID? posedatareceiver); Establishes a connection between a SoPoseDataReceiver? Node and a 3D Object.
  • boolean disconnectObject(in string label); Cuts all incoming connections of a 3D Object.
  • boolean replaceObject(in string label, in string scene); Replaces the geometrical representation (the vrml) of a 3D object while leaving all other parameters untouched (e.g. incoming connections).
  • boolean deleteObject(in string label); Removes a 3D Object from the SceneGraph?.
  • boolean deletePoseDataReceiver(in ThingID? id); Deletes a SoPoseDataReceiver? and its corresponding need.
  • boolean setProperty(in string label, in string keyvaluelist); Sets all Properties of the NodeKit? given by label.
  • boolean createConnectedObject(in string label, in string parent, in string scene); Creates a new object and a PoseData receiver and makes the connection between both.
  • boolean deleteConnectedObject(in string label); Deletes an object and a PoseReceiver? at the same time.

The interface exists as two variants. One is to use Corba Object Method calls and the other is to send an Event of type ViewerControl to the Viewer. The benefit of the event based invocation is that several different Viewers can receive the event at the same time while the method call gives limited feedback about the success of the invocation.

The usage of the interface should, hopefully, be very intuitive. Look into the ViewerController Python script, in the DWARF distribution, for reference how to call the different methods.

A simple application might do the following

  • start the Viewer with ./Viewer
  • run a python script that calls the following methods on the ViewerControl interface
    • createConnectedObject("object1", "ROOT", scenedata)
    • setProperty("object1", "drawStyle { style LINES }")
  • run a ManualTracker? to change the objects position (ThingType?="Chair.PoseData", ThingID?="object1")

Known Issues

The known issues right now are:

  • The viewer sometimes freezes and does not refresh the screen.
  • moveObject is not yet implemented


Edit | Attach | Refresh | Diffs | More | Revision r1.7 - 23 Mar 2005 - 20:27 - NikolasDoerfler

Lehrstuhl für Computer Aided Medical Procedures & Augmented Reality    rss.gif