Hi Leute, ich habe da ein einfaches? Problem, bei dem ich aber irgendwie nicht so recht weiter komme:
Ich möchte einen farbigen 3d- Quader zeichnen, welcher aber andersfabige Grenzlinien hat (ähnlich Wireframe- Modus). Beispiel: roter Würfel mit schwarzen Aussenlinien... Hintergrund: Ich muss einen Stapel von diesen Würfeln zeichen. Verwende ich nur einfachfarbige Objekte, dann erscheinen sie später als 'ein grosser Würfel'. Man kann nicht mehr den Übergang vom einen zum anderen erkennen. Ich habe es schon mit Würfeln mit 'abgerundeten Kanten (Radius) probiert und auch schon einmal Texturen 'draufgelegt. Das Ergebnis ist aber immer eher unbefriedigend. Es soll idealerweise halt so aussehen wie aus dem Cad- System.
Ich hatte dasselbe Problem auch schon bei 2d- Objekten. Hier habe ich mir mit dem Polygonoffset beholfen. Dafür musste ich das Objekt aber zweimal zeichnen.
Gibt es eien einfache Lösung; Hat vielleicht jemand ein einfaches Code- Snippet???
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Was spricht dagegen die Außenlinien mit "glLines" nachzuzeichnen? sicherlich das kostet etwas mehr Leistung, aber kann glaube ich hier vernachlässigt werden und man könnte dann sogar die Dicke bestimmen? Alternativ wäre ne ziemlich schneller Ansatz, wenn Du einfach auffa Textur die Ränder z.b. rot machen würdest ... aber das wäre nur ne Lösung für exact dieses Problem!
Ce, Phobeus
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wenn du deinen Quader aus GL_QUADS zusammengesetzt hast (ist übrigens auch recht einfach), dann sollte sich deine Problemstellung mit folgendem Code sehr einfach lösen lassen :
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>// Würfel mit gefüllten Flächen (bzw. Texturen) zeichnen glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); ZeichneWürfel; // Tiefentest auf Less_Equal setzen (zeichnet Fragmente mit gleichem oder niedrigerem Tiefenwert) glDepthFunc(GL_LEQUAL); // Nur die Kanten des Würfels zeichnen glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); // Kantenfarbe festlegen (bei Texturnutzung ggf. noch glDisable(GL_TEXTURE_2D) aufrufen) glColor3f(<span class='integer'>0</span>,<span class='integer'>0</span>,<span class='integer'>0</span>); ZeichneWürfel; </pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
Falls deine Linie trotz des GL_LEQUAL-Tiefentests von deinem Quader überdeckt werden, so könntest du den Quader, bevor du die Linien zeichnest noch minimal via glScalef(1.01, 1.01, 1.01) skalieren, damit die Linien sich tiefentechnisch nicht mit dem gefüllten Quader schneiden...allerdings sollte dies nicht nötig sein, solange dein Quader recht weit vorne liegt.
Hi Son of Satan, auch Dir erst einmal vielen Dank für die Antwort. Ich werde es gleich 'heut abend einmal ausprobieren ob mich Dein Vorschlag zum gewünschten 'Quader' bringt. Wirken die Vorgaben für 'gl_polygon_mode' auch auf 'gl_Quads'?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Zitat:
Ich werde es gleich 'heut abend einmal ausprobieren ob mich Dein Vorschlag zum gewünschten 'Quader' bringt. Wirken die Vorgaben für 'gl_polygon_mode' auch auf 'gl_Quads'?
Ja, der Polygonmodus (via glPolygonMode) wirk auf alle Primitiven.Selbst wenn du ein 3DS-Objekt lädst, oder eine Kugel über gluQuadrics darstellst, werden diese im Drahtgitter dargestellt.
@All: Habe es nach dem entscheidenden Hinweis auf den PolygonMode hinbekommen! Allerdings habe ich wie im 2d Mode den Polygon- Offset verwendet (ist ja auch u.a. dafür da...). Nachdem ich dann noch eine ganze Weile mit dem Hidden- Line/ Surface- Mechanismus gekämpft habe und schon schier verzweifeln wollte, habe ich dann nach Stunden gemerkt, das meine Near- Clipping- Plane zu dicht 'an mir dran war'. Also kleinen Offset reingesetzt: Voila, super- unrealistische Würfel!
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.