Frage bezüglich Kamera und Objekten
Übersicht

![]() |
CrowSmithehemals "Fleisch"Betreff: Frage bezüglich Kamera und Objekten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute.
Habe sehr lange nicht mehr reinschauen können, aber jetzt habe ich wieder etwas mehr Luft. Ich habe gerade ein Denkproblem... Ich möchte eine Kamera auf der Y-Achse und auf der Z-Achse SO verschieben, dass vier Objekte, die ich in gleichmäßigen Abständen und quadratisch angeordnet platziere sichtbar sind. Manuell einstellen ist ja kein Problem, aber da ich den Abstand der vier Objekte immer neu erzeugen möchte, muss die Kamere immer entsprechend ausgerichtet werden. Wie stelle ich das am geschicktesten an? Hier nochmal alle relevanten Informationen: - Kamera schaut im 45°-Winkel auf vier Objekte (Kugeln). - Die Kugeln sind quadratisch (horizontale Ebene) angeordnet. - Der Abstand zwischen den Kugeln ist immer identisch. - Der Abstand zwischen den Kugeln wird bei jedem Programmstart neu zufallsgeneriert. -Dementsprechend muss die Kamera bei jedem Programmstart SO positioniert werden (Y,Z), dass alle vier Kugeln sichtbar sind. Wäre echt super wenn mir da Jemand auf die Srpünge helfen könnte... Danke und Gruß an alle Blitz-Coder, der CrowSmith. |
||
Worklogs: TotalWar2D
Wbsites: Privat / Entwicklerstudio / Gewerbe (Folgen bald) Smartphones: Samsung Galaxy S I9000 / Samsung Galaxy S2 I9100 / Samsung Galaxy S3 (Kommt 2012) Notebook 1: HP Pavillion DV6700 (AMD 64 X2 TL-60 @ 2.00GHz, 4GB DDR3 1333MHz, Nvidia GeFroce 8400M GS, Win Vista Home Premium 32Bit) Notebook 2: HP Pavillion DV6t Quad Edition (KOMMT BALD =] ) Notebook 3: Clevo X7200 (KOMMT BALD =] ) Desktop: (KOMMT BALD =] ) |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde einen Pivot in der Mitte der Ebene erstellen Createpivot![]() PointEntity ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Johannes´ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du müsstes den Winkel herausfinden, in dem die Kamera Objekte sieht. Dieser wird abhängig von der Auflösung deines Programmes und dem Zoom der Kamera sein.
Wenn du den Winkel hast, solltest du über die Entfernung der Objekte und den Winkel zu der Ebene die Position der Kamera berechenen können. Die Position auf der Y-Achse der Kamera sollte ein Ideal in Abhängigkeit des Winkels der Ebene haben, die Z-Position gibt dann die gesuchte Entfernung der Kamera zur Ebene an. (Wenn du das genauer brauchst, könnte ich sicherlich versuchen, das zu berechnen) Alternativ könntest du das Programm auch anweisen, die Position mehr oder weniger auszutesten. Mit EntityInView ![]() |
||
![]() |
CrowSmithehemals "Fleisch" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey, erstmal tausend dank für die schnellen Antworten!
@ Johannes': Das hilft mir gedanklich zwar schonmal bedeutend weiter, aber dürfte ich dich bitten mir da ein kleines Beispiel zu formulieren? Pseudocode oder nicht, wie es dir beliebt halt. Nur dass ich mich da besser reindenken kann. Testdaten: Mittelpunkt liegt natürlich bei 0/0/0 (X/Y/Z). Kugel 1: -2,5/0/-2,5 Kugel 2: -2,5/0/ 2,5 Kugel 3: 2,5/0/-2,5 Kugel 4: 2,5/0/ 2,5 Abstand zwischen den Kugeln untereinander liegt damit natürlich bei 5. Nimm das als Faktor, nicht als Realwert, also beispielsweise Alles * 10 oder * 100, um es zu testen. +++ EDIT ANFANG +++ Oder lass zum Testen direkt eine Zahl zwischen 10 und 100 generieren, die du mit dem Faktor multiplizierst. +++ EDIT ENDE +++ Kamera: Position = 0/?/? und Winkel = 45/0/0 Mehr Werte werden wohl nicht benötigt denke ich. Ich wäre da sehr sehr gespannt auf ein anschauliches Beispiel =) Ich weiss, das ist eigentlich nicht sonderlich schwer, bitte verzeiht mir, ich bin nur 1. sehr kaputt da es mich wohl mit der Grippe erwischt hat und 2. etwas eingerostet was BB angeht :S Gruß, CrowSmith |
||
Worklogs: TotalWar2D
Wbsites: Privat / Entwicklerstudio / Gewerbe (Folgen bald) Smartphones: Samsung Galaxy S I9000 / Samsung Galaxy S2 I9100 / Samsung Galaxy S3 (Kommt 2012) Notebook 1: HP Pavillion DV6700 (AMD 64 X2 TL-60 @ 2.00GHz, 4GB DDR3 1333MHz, Nvidia GeFroce 8400M GS, Win Vista Home Premium 32Bit) Notebook 2: HP Pavillion DV6t Quad Edition (KOMMT BALD =] ) Notebook 3: Clevo X7200 (KOMMT BALD =] ) Desktop: (KOMMT BALD =] ) |
![]() |
Johannes´ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß nicht, bzw. ich kann mir nicht ganz erklären, wie das Sichtfeld der Kamera zustande kommt. Ein Testprogramm gibt mir für den Winkel nach rechts bzw. links immer einen Winkel von 45° an, während sich der Winkel für oben wie unten je nach Auflösung ändert.
Dieser Winkel ist für dein Problem wichtig, da er ja das Sichtfeld ändert. |
||
![]() |
CrowSmithehemals "Fleisch" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmmm...
Naja, den "Ab"-Winkel der Kamera würde ich gerne konstant bei 45° stehen lassen. Wenn ich dann nur Y und Z der Kameraposition der Größe der einzufangenden Fläche anpasse, ist eigentlich alles gut. Nur eben dieses Anpassen will mir einfach nicht einfallen :S Irgendwie muss man das doch berechnen können oder? Es gibt doch bestimmt irgend ein Verhältnis oder einen Faktor, den ich berechnen kann... Hmmm habe gerade eine Idee: Ich kann in meinem jetzigen "manuellen" Programm die Kamera korrekt positionieren und dann die Höhe und die Entfernung vom Mittelpunkt (0/0/0) messen. Diese verwende ich dann dazu, die Hypotenuse zu berechnen, also die fehlende Seite, die direkte Strecke zwischen Kamera und Mittelpunkt. Dann errechne ich den Faktor im Bezug auf den Abstand der Kugeln und wende eben diesen Faktor immer wieder neu an. Das probiere ich gleich mal aus ![]() +++ EDIT ANFANG +++ Also ich habe es jetzt mal ausprobiert, sogar ohne die Hypotenuse zu berechnen... Habe die Kamera manuell angepasst und mit den Abstand der Kugeln, den Y-Wert der Kamera und den Z-Wert der Kamera notiert und ein Verhältnis errechnet, sodass die Kamera immer perfekt ausgerichtet ist. Y-Verhältnis = * 9 Z-Verhältnis = ((* 9) / 22.5) * -1 Habe zwei Testwerte für den Abstand der Kugeln: 20 und 3. Bisher hat es bei beiden hingehauen ![]() Werde das ganze jetzt noch ein wenig verbessern: Ich habe jetzt immmer den X-Abstand zweier Kugeln als Testwert genommen. Was aber, wenn der Z-Abstand größer ist? Dann habe ich wieder NICHT alle vier Kugeln auf dem Schirm... Also: (X-Abstand + Y-Abstand) / 2 = Durchschnittsabstand. Naja, trotzdem danke für euere Antworten ![]() Gruß, der CrowSmith +++ EDIT ENDE +++ |
||
Worklogs: TotalWar2D
Wbsites: Privat / Entwicklerstudio / Gewerbe (Folgen bald) Smartphones: Samsung Galaxy S I9000 / Samsung Galaxy S2 I9100 / Samsung Galaxy S3 (Kommt 2012) Notebook 1: HP Pavillion DV6700 (AMD 64 X2 TL-60 @ 2.00GHz, 4GB DDR3 1333MHz, Nvidia GeFroce 8400M GS, Win Vista Home Premium 32Bit) Notebook 2: HP Pavillion DV6t Quad Edition (KOMMT BALD =] ) Notebook 3: Clevo X7200 (KOMMT BALD =] ) Desktop: (KOMMT BALD =] ) |
![]() |
Johannes´ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe noch ein wenig herumexperimentiert.
Das Sichtfeld der Kamera wird anscheinend in x-Richtung so skaliert, dass immer ein Außenwinkel von 45° erreicht wird, in y-Richtung hingegen wird einfach erweitert, so dass dieser Außenwinkel nur bei quadratischem Fenster 45° wird. Die y-Position der Kamera ist wenig entscheident, solange sie oberhalb deiner Objekte ist. Durch den 45° Neigungswinkel der Kamera wird die Ebene bis in die Unendlichkeit gesehen, Objekte genau unter der Kamera sind am unteren Rand des Fensters. Die globale Z-Verschiebung der Kamera sollte bei einem Neigungswinkel von 0° den halben Abstand der hinteren beiden Objekte im negativen sein, da durch einen Außenwinkel von 45° ein gleichschenkliges Dreieck zwischen Kamera, einem Objekt und der Mitte zwischen 2 Objekten erreicht wird. Leider funktioniert dies nicht, wenn der Neigungswinkel der Kamera geändert wird. In diesem Fall ändert sich das Sichtfeld, sodass die Objekte zur Seite hin zu verschwinden scheinen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group