Dienstag, 18. September 2007

Custom-Maus-Cursor in Quest3D

Ziel: Wenn mit der Maus eine bestimmte Aktion durchgeführt werden soll (z.B. Dragon-Drop von einem Workflow) , dann soll sich der Cursor der Maus ändern, um dem Nutzer einen Hinweis
darauf zu geben, welche Interaktionsmöglichkeiten er hat.


Problem: Quest3D stellt keine Channels bereit, um über die WIN32-API Custom-Cursor anzeigen zu lassen. Es gibt einen Channel "Win32 ShowMouseCursor", mit dem der Cursor aus- bzw. eingeblendet werden kann.

Lösungsansätze:

  • Über das Quest3D-SDK wird ein eigener Channel programmiert, der den Maus-Cursor in einen gewünschten Cursor abändert. Das geschieht wünschenswerterweie dynamisch, so dass der Channel einen Kinderknoten hat, an den ein Bitmap angehängt werden kann. Problem: Das hat schonmal jemand (ansatzweise) gemacht, das muss aber für jede Quest3D-Version neu kompiliert werden. DOWNLOAD: Handcursor-Channels und der Nicht-Debug-Handcursor-Channel-Dll für Quest3D 1.3d.
  • Per Win32 ShowMouseCursor-Channel den Mauscursor ausblenden und einen Custom-Cursor in 3D bereitstellen. Der 3D-Cursor wird einfach über die GUI-Kamera in die 2D-Ebene projiziert. Über Texturen können beliebige Mauscursor bereitgestellt werden. Problem: Der Cursor hat nicht das Win32-Look-And-Feel, was sich komisch "anfühlt" insofern nach dem Verlassen des Viewports der Windows-Maus-Cursor wieder bei Window-Koordinate 0,0 angezeigt wird. Da muss beim Navigieren drauf geachtet werden, nicht über "Animation 3D" zu kommen, sonst darf erneut oben links gestartet werden, falls sich der Viewer im Run-Mode befindet ;-) . Außerdem wird dieser Cursor nur mit der tatsächlichen Framerate angezeigt/aktualisiert. Und die menschliche Hand ist schnell. DOWNLOAD: 3D-Cursor-Template

Keine Kommentare: