Re: Berechnung der Entfernung eines Punktes auf eine Gerade - Programmieren: Software-Entwicklung


«  Schlampen in den... <====== ======>  Mal ehrlich....... - ...»

Mit Zeichnung wäre es leichter ... so wie es sich es lese:

0.0 Spieler == Kamera == Bildschirm
0.1 Kamera-Transform ist bekannt (vgl. B vs. E)
0.2 Objekt-Transforms sind bekannt
0.3 Objekte und Spieler können als Punkte modelliert werden,
Bounding-Boxes und damit: Schnittpunkte auf Linien müssen nicht
ausgewertet werden (vgl. A, C).
0.4 Es Kollision detektiert werden, wenn eine Minimaldistanz zu einem
Objekt unterschritten wird.
0.5 Das in Z-Richtung der Kamera fokussierteste Objekt, soll
selektiert werden.

Varianten:

A) Wenn Dir librarymässig irgendwas zur Kollisionsdetektion zwischen
zwei Objekten vorliegt, kann man sich Gedanken machen, on eine
(unsichtbare) Bounding-Box um den Spieler formen könnte, sodass man
die Distanzunterschreitung damit modellieren könnte. Beispielsweise:
Spieler ist Kegelstumpf um seine Blickachse, und dann "mitzählen",
mit welchem Objekt zuerst kollidiert wird. Ist natürlich nicht ganz
das gleiche --- hilft Dir aber, per Hand mit Hüllen hantieren zu
müssen.

B.1. Nur Objekte beachten, die im Viewing-Volumen sind, letztlich
also auf dem Bildschirm. Dabei beachten, daß es Objekte geben kann,
deren Hülle im Volumen liegt, obwohl deren Transform ("Punkt")
außerhalb liegt.

B.2. Koordinatentransformation der Objekte in Kamerakoordinaten, also
Multiplikation der Objekt-Transforms mit der Kamera-Transform.
Relevant sind hier [0.3] natürlich nur die Ortsvektoren der Objekte,
aber schon der Skalierbarkeit wegen, kann man auch gleich die ganze
Objekt-Transform nehmen.
Wenn Du sie selber aufstellen musst:
www.3dsource.de/deutsch/3Dmathe.htm

B.3.1.a) Kollision mit abs( p_x, p_y, p_z ) < d
B.3.1.b) Kollision mit abs( p_z ) < d
B.3.1.c) etc.

3.2 Das Objekt mit dem kleinsten abs( p_x, p_y ) ist fokussierteste.
Wenn Du nicht nur unerheblich fandest, sie als "bekannt" anzugeben,
sondern Dir bei der Aufstellung der Kameratransform keine Angaben zur
Perspektive bereitstehen, dann ggf. nur näherungsweise --- sprich
Parallelprojektion (vgl E) kann dabei nicht in p_x, p_y ausdrücken,
wie "aufgeweitet" der Blick am jeweiligen p_z ist. Wenn Du ganau das
gar nicht haben willst, also keinen Blick-Kegel, sondern einen
Blickstrahl, gilt das Gegenteil: setze die Perspektive auf [0 0 0 1].

C) Mit Beginn um die Z-Achse der Kamera quasi raytracen bis zum
ersten Treffer unterhalb Kollisionsdistanz. Kann unter bestimmten
Szenenbedingungen und besonders bei Freiformhüllen unter Ausnutzung,
was in der Grafikkarte abgelegt ist, eventuell günstiger sein.
Gucken, ab welchem Radius nicht mehr Hintergrundfarbe ist, dann
anhand des Z-Buffers rausfinden, welches Objekt da liegt.

D) Wenn Geschwindigkeit das Problem ist, als Denkmodell: Beim
Szenenaufbau ein Raster über die Szene legen, in das z.B. eingetragen
wird, welches das nächste Objekt innerhalb Kollisionsdistanz zum
Rasterelement ist. Das Rasterelement, auf das der Spieler guckt (also
in das der Kameramittelpunkt fällt), braucht dann ohne weitere
Operationen nur ausgelesen zu werden. Scheitert in dieser einfachen
Form daran, daß hierbei die Blickrichtung wieder nicht ganz
berücksichtigt ist, vor allem das Objekt auch hinter dem Spieler
liegen kann. Man könnte aber daran denken, die Distanzvektoren zu
allen umliegenden Objekten innerhalb Kollisionsdistanz darin
abzulegen. Richtungsvektoren (mit Betrag 1) reichen hier bereits, was
Optimierungen erlaubt. So kann es zumindest zur Reduktion der
Echtzeitoperationen beitragen, welche Objekte überhaupt betrachtet
werden müssen. Anderes kann man sich ausdenken. Bewegte Objekte
müssen sich dann in Distanzkugel um sich selbst beim Raster an- und
abmelden. Hängt also von der konkreten Konstellation ab, ob damit ein
Gewinn zu erzielen ist. Zumindest kann es schon eine Hilfe bieten,
welche Objekte (vgl. B.1) überhaupt einer Selektionsbetrachtung
unterzogen werden müssen, wenn man in dem Raster ablegt, welche
Objekte in Kollisionsdistanz liegen.

E) Die Objekte transformieren, dabei die Kamera als
Parallelprojektion modelliert:

Für Bestimmung des kleinsten Winkels ist der eine Vektor [0,0,1], der
andere der transformierte Positionsvektor des Objekts --- also die
bereits die Differenz. Die Auflösung des Vektorprodukts vereinfacht
sich auf
winkel = arccos( p_z / abs( p_x, p_y, p_z ) )

E ist auch für Zentralprojektion dann günstiger als B, wenn der
arccos plus die Division billiger sind als abs( p_x, p_y ) --- und
genau dann ist rinderwahn-Variante noch günstiger, weil dann auch die
Matrixmultiplikation dann trotz ihrer Parallelisierbarkeit doch mehr
als nur eine quasi eintaktige Operation auf einer extra für diesen
Hauptzweck hartverdrahten GPU ist.

Sowie Du allerdings, was real erforderlich oder zumindest
wünschenswert sein dürfte, die Hüllen der Objekte mitberücksichtigst,
die auf Basis der Objekt-Transform definiert sind: Je Vertex sparst
Du mit den Varianten in Kamera-Koordinaten eine Transformation. Ich
würde dabei mit einer Mischung aus B, C, D arbeiten. Den Hüllenaufbau
in ein Raster hineinwachsen lassen, aus dem ich hinterher auslese,
welches Objekt selektiert werden soll. Klartext: die Szene in die
unter voller Ausnutzung der Graphikbeschleunigung in die Backplane
der Graphikkarte rendern, aber ohne Texturen etc., sondern mit planen
"Farben", die nichts weiter als Objektnummern sind, so wie eine
"politische" Landkarte. Das ist die korrekte Lösung für das Problem.





weitere Thesen : re digitalkameras in mobiltelefonen ntt   ...pan class="quote">>
> Es wird wohl reichen einen schnelleren Prozessor ins Handy zu
> packen...
> (...  gedanken zum digitalkamera markt digital  ... zum Digitalkamera-Markt:

Der Markt für Kompaktkameras wird aussterben (exslim, etc). Bereits
jetzt gibt es Handies mit 3 Megapixel, Autofokus und optischem Zoom.
In ein pa...  re gestern redeten wir hier in der firma  ...r>
7. September 2004 12:56

>
> > wir alle **sehr gerne** so ein universelles Gerät haben, so ungefähr:
re hmm schlechter die zuschauer brauchen  ...br>
>
> wenn ihr das heute auf dvd seht, und auf pause drückt, dann ist klar
> das ist jetzt standbild...  re man muss sich mal wieder mit intel ve  ...

> Anstatt einen grotesken Bastelaufwand zu treiben, ist es IMO noch
> immer
> das Intelligenteste dire...  re noch lebt die analoge photographie al  ...r>
28. November 2001 9:54

>
28. November 2001 9:06

> >
> > > Röntgenstrahlenre seh ich das jetzt eigentlich richtig   ...hte ist ja nicht innerhalb von drei Tagen - oder bis die
Medien nichts mehr berichten - abgehakt. Irgendwann ist dieser
Artikel ganz aus dem Blickfeld. Aber die Geschichte geht ja f&uu...  re mal ne frage an die spezis erste digi  ... Ich wollte mir in den nächsten Monaten einen (guten) Fotoapperat

> zulegen, da ich in diesem Sommer für einen Monat nach Kanada oder
doch zerschlagung einer frauenkundgebung  ...r>
> Da könnte vielleicht was dran sein. Ich würde sogar darauf wetten,
> dass unter den Demonstranten ein paar Polizisten vers...  re beängstigend british telecom wil  ...>> ....ist nicht dass es Kinderpornographie gibt, sondern dass es eine
> Diskussion
> über das Blocken vo...  re mangelndes wissen über den nutzw  ...
> das hab ich auch.
> Ich weiss nicht
> -warum ich permanent neue Klingeltöne downloaden sollteihr immer besserwisser ich hab einen vor  ...m.

Also alle 'selber machen ist viel besser', 'der ist doch viel zu
teuer',
'keiner braucht soviele sachen' laberer.

Ich hab das Ding gekauft weil...  re nur die allerdümmsten kälbe  ...r>20. Juni 2003 12:23

>
> > Ich versuche das mal in einer Ableitung
> >
re immerhin nikon kündigt nachfolge  ...r>> Schade, dass Nikon da nicht agressiver gegen die 350D angeht. Die D70
> ist eine tolle digital kamera 28 mm testsi..., die Optiken sind ...  re welcher prozessor für fileserver  ...>
9. Dezember 2004 13:31

>
9. Dezember 2004 10:44

> > >
> > > Worauf muß ich denn...  welt bush cheney inc kamera mustek to.ht  ...r>17. Juli 2002 17:49
> > Bescheidenheit; Mässigkeit: Für den Laien im Jahr 2002 "uncool", aber
> > der Killer für ...  re lithiumzellen war re und der stromgen  ...r>
> Moin.
>
> > > P.S: Wie kriegen die eigentlich die 1,5 Volt bei diesen Lithium
re canon 300d und nokon d70 zwei coole k  ...r>> die sind aber um längen besser als die rauschbomben der 8MP klasse,
> die zur zeit vertickt werden.

So stark rauschen...  re bluetooth für die digi knippse b  ...>
> Liebe kamera mit twain-Hersteller,
>
> konnt Ihr die Bilder denn auch gleich auf den Drucker oder auf ...  re ich glaube aus für hubble.html"   ...br>> die können sich die Lizenzzahlungen an Microsoft nicht mehr leisten
> und um auf Linux o. ä. umzustellen steht kein Shuttle b...  re aps der wirkliche vorteil gegenü  ...t nur die Frage wie lange es diese Auswahl und die
Bezahlbarkeit bei 35mm noch geben wird. Wenn man in die Auslage der
Geschäfte schaut kann einem Angst und Bange werden - au&szli...  hoffnung und vernunft mission to titan t  ...br>> Ich denke, daß das eher mit europäischer Sparsamkeit zu tun hat: Die
> Sonde war bekanntlich für drei Minuten Über...  re wird ja auch langsam zeit die preise   ...r>
> > Um das geht es doch gar nicht, sondern um den psychologischen Effekt,
> > man überlegt nicht mehr jedesmal bevor man ein Foto...