Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.02.2013, 13:33

C++/C# 3D: Was näher ist wird zuletzt gezeichnet

Hallo Community!

Ich werkel hobbymäßig mit Unity, und stehe derzeit vor einem Problem das ich nicht selbst lösen kann.

Und zwar habe ich eine Kugel an P1 in deren Radius sich ein Würfel an P2 befindet.
Die Kamera an P3 sieht den Würfen nicht mehr, weil er von der Kugel quasi "verschluckt" wird.

Um das zu verdeutlichen habe ich eine Skizze mit Paint gemalt:


(Link)



Unabhängig von den Ausmaßen der Objekte, würde ich mit dem Abstand zwischen Kamera und Objekt gerne "Ebenen" simulieren,
das heißt, was näher ist wird immer zuletzt gezeichnet, wie in 2D Anwendungen.

Ist das mit DX möglich, gibt es dafür Renderstates oder eine andere Lösung?

Vielen Dank für eure Hilfe
Andreas

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

17.02.2013, 13:49

Darf ich fragen welchen Zweck das ganze mal haben soll? Denn ein menschliches Gehirn kann die Position so eines Würfels schätzen und würde immer den Eindruck erhalten, dass der Würfel eigentlich nicht sichtbar sein dürfte, was auf einen Betrachter sehr verstörend wirken kann.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

17.02.2013, 13:50

Äh
Naja, wenn der Kubus doch in der Sphäre ist, die Kugel also nicht mal eine Ecke heraus gucken lässt vom Würfel, wie soll er denn dann gezeichnet werden?
Also bei mir herrscht Konfusion, weil deine Denkweise oder was hier irgendwie ziemlich OutOfMyBrain ist Oo

MfG
Check

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

17.02.2013, 14:02

Sortiere die Objekte doch einfach so, wie du es haben willst, und zeichne sie in dieser Reihenfolge.
Natürlich musst du dann den Z-Buffer abschalten.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

17.02.2013, 14:11

Dann muss er aber auch die Polygone der Objekte sortieren, nicht nur die Objekte selbst. Nicht gerade einfach mit Unity, nehme ich an. Auf keinen Fall jedoch hübsch.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

17.02.2013, 14:26

Moment, geht es jetzt um Unity oder DirectX?
Zuerst sagt er Unity, später fragt er nach DirectX und RenderStates.

7

17.02.2013, 15:44

Erstmal ein fettes DANKE an alle.
Darf ich fragen welchen Zweck das ganze mal haben soll? Denn ein menschliches Gehirn kann die Position so eines Würfels schätzen und würde immer den Eindruck erhalten, dass der Würfel eigentlich nicht sichtbar sein dürfte, was auf einen Betrachter sehr verstörend wirken kann.
Ich habe eine fixe Kameraposition und ein lokales Koordinatensystem an
dessen Grenzen sich Objekte verschiedenster Größe "sammeln", dabei hat
jedes Objekt eine unterschiedliche globale Position (riesig!), kann aber
dieselbe lokale Position wie ein anderes Objekt annehmen. Und mit der
Differenz zwischen globaler fixer Kameraposition und globaler
Objektposition (und das umgerechnet in einen brauchbar kleinen Wert)
möchte ich sozusagen die Renderreihenfolge festsetzen (was eben derzeit
durch die normalisierten Ausmaße eines Objekts zunichte gemacht wird,
weil das größere Objekt alle anderen kleinen Objekte an der lokalen
Position schluckt).

Soviel dazu, vielleicht später mehr, sonst halten mich alle für irre. ^^
Moment, geht es jetzt um Unity oder DirectX?
Zuerst sagt er Unity, später fragt er nach DirectX und RenderStates.
In erster Linie um Unity, ich wollte damit keine Verwirrung stiften, sondern nur anmerken, dass ich auch an Lösungen mit DirectX interessiert bin (Zum Beispiel falls eine Person _nur_ eine Lösung mit DX parat hat).

Danke :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

17.02.2013, 16:12

Du hast jetzt die technische Notwendigkeit erzählt, aber noch nicht, welchem Zweck das dienen soll. Ich glaube nämlich Du bist da irgendwo auf dem Holzweg unterwegs.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

9

17.02.2013, 16:25

Du hast jetzt die technische Notwendigkeit erzählt, aber noch nicht, welchem Zweck das dienen soll. Ich glaube nämlich Du bist da irgendwo auf dem Holzweg unterwegs.
Mein Ziel ist es, ein Sonnensystem mit Metergenauigkeit zu schaffen.

FSA

Community-Fossil

  • Private Nachricht senden

10

17.02.2013, 16:33

Und die Planeten sind in der Sonne? Ich glaube da läuft was falsch. Wenn das doch richtig ist, dann, wie David schon gesagt hat, einfach Z-Buffer aus, Kugel rendern, Z-Buffer wieder an und den Würfel rendern.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige