Die Wunder der Objektauswahl


Thomas Wölfer
Thomas Wölfer

30. Juni 2005


Ich habe heute einige Stunden vor dem Quellcode der Objektauswahl in den 3D-Fenstern im Faltwerksprogramm verbracht. Die ist relativ ähnlich zu der im Rahmenprogramm Xrst oder im Plattenprogramm Xpla.

Letztlich sieht das alles ganz einfach aus: Man klickt auf ein Objekt und es ist ausgewählt. Klickt man auf ein anderes, wird das andere Objekt ausgewählt. Hält man dabei die Strg-Taste gedrückt, wird die Anzahl der ausgewählten Objekte im größer, da jeder Klick ein neues Objekt hinzufügt. Es sei denn, man klickt auf ein Objekt das bereits ausgewählt ist und hält Strg gedrückt. In dem Fall wird das angeklickte Objekt aus den Auswahl entfernt.

(Die offensichtliche Problematik, des hin- und herrechnens zwischen dem Koordinatensystem der Maus, dem der Projektion des Gebäudes am Bildschirm und dem 3d-System des Bauwerks lasse ich hier mal weg. Das verkompliziert die Sache nur... :-))

Jetzt kann aber noch mehr passieren: Angenommen es gibt ein Objekt das ausgewählt ist und man klickt drauf: In diesem Fall ändert sich nichts - das Objekt bleibt einfach ausgewählt. Sind hingegen mehrere Objekt ausgewählt und man klickt auf eines der ausgewählten, dann werden alle anderen aus der Auswahl entfernt - und das angeklickt bleibt ausgewählt. Dann war da noch der Fall, das mehrere Objekte ausgewählt sind und man klickt auf ein anderes, nicht ausgewähltes Objekt: In dem Fall werden alle andere Objekte aus der Auswahl entfernt - und nur das eine angeklickte wird ausgewählt.

Achso: Man kann natürlich auch klicken, die Maustaste gedrückt halten, und die Maus dann bewegen: In dem Fall werden alle Objekte beim Klick aus der Auswahl entfernt. Die Mausbewegung zeichnet ein Rechteck - und alle Objekte die sich darin befinden werden zur Auswahl hinzugefügt, wenn man die Maustaste wieder loslässt. Es sei denn natürlich, die Strg-Taste ist gedrückt.... und so weiter und so fort.

Ich glaube das die Objektauswahl im Raum relativ gut funktioniert und sich sehr 'natürlich' 'anfühlt' - aber der Arbeitsaufwand der da reingesteckt wird ist auch gigantisch: Dieser Kram ist einfach fürchterlich kompliziert.

Der Code für die Objektauswahl steht natürlich schon ewig unverändert - die ganze Arbeit ist da vor etwa 2 Jahren reingeflossen. Heute war nur eine kleine Überarbeitung notwendig, weil uns ein Problem in der 3D-Ansicht aufgefallen war: In der 3D-Ansicht ('Echt' Ansicht) sind nur die Objekte sichtbar, die auch in der Realität sichtbar wären. Man steht also sozusagen an einer bestimmten Stelle und schaut auf die Konstruktion - anklicken kann man also nur die Objekte, die einem zugeneigt sind und die außerdem sichbar sind. Ausgewählt werden Objekte in dieser Ansicht auch durch einen Klick: Man muss einfach auf ein sichtbares Bauteil klicken, und das Ding ist ausgewählt 

Wie klickt man nun aber eine Aussparung an? Dabei handelt es sich schliesslich um ein Loch - und wo ein Loch ist, da ist logischerweise nichts sichtbar: Klickt man also die Aussparung 'an', dann klickt man effektiv hindurch - und trifft die dahinter liegende Wand...

Dumme Sache. Wir haben das dann heute gelöst - wie, wird aber noch nicht verraten.... Allerdings ist der Quellcode zum auswählen von Objekten dadurch nochmals deutlich komplizierter geworden...