| Autor |
Beitrag |
Martin2005
Hält's aus hier
Beiträge: 13
Windows NT 4, Windows 2000, Windows XP, Windows 2003 Server, Windows NT 4 Server, Kanotix
D6 Prof
|
Verfasst: Do 03.03.05 20:25
Hallo ich habe eine 3D Kugel, leider sieht die aber mit FLAT-Shading ziemlich bescheiden aus.
Mit Gouraud-Shading könnte ich die Kanten zwischen den Vertices glätten. Leider wieß ich nicht, wie man die Normelen für deisen Shader berechnet. Falls sich da jemand auskennt, wäre ich für eine Lösung echt dankbar.
p.s. ich brauche nicht unbedingt code, die Formeln würden mir schon völlig reichen!
Danke
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Do 03.03.05 20:37
Schon mal das hier versucht...
AXMD
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 03.03.05 20:40
hrhrhr der war gut 
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Do 03.03.05 21:08
Du musst nur die Normalen an den Vertices kennen. Die Normalen zu berechnen ist ja bei einer Kugel ziemlich trivial (bei einer Einheitskugel gilt: Position=Normale)...
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Do 03.03.05 21:36
| AXMD hat folgendes geschrieben: | | Schon mal das hier versucht... |
Du versuchst mich schlecht zu kopieren, oder?!?
@Martin: Womit arbeitest du denn? Ich meine sowohl OpenGL, als auch DirectX unterstützen neben Flat Shading auch Smooth Shading, auch wenn ich nicht weiß, nach welchem Verfahren die dann shaden.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Do 03.03.05 21:41
Egal ob DirectX oder OpenGL, man muss die Normalen an den Eckpunkten durchgeben  . Ich frag mich bloss, ob er die Sphäre selbst zeichnen will, dafür gibt es ja schon fertige Funktionen.
|
|
Martin2005 
Hält's aus hier
Beiträge: 13
Windows NT 4, Windows 2000, Windows XP, Windows 2003 Server, Windows NT 4 Server, Kanotix
D6 Prof
|
Verfasst: Sa 05.03.05 11:30
OK!
So weit war ich auch schon.
Bei einer Kugel funtioniert das auch ganz wunderschön, aber bei einem Ring ergeben sich dabei völlig falsche
Lichtwerte.
Trotzdem Danke!
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: So 06.03.05 11:15
| Martin2005 hat folgendes geschrieben: | | So weit war ich auch schon. Bei einer Kugel funtioniert das auch ganz wunderschön (...) |
Gut, die Frage war ja, wie es bei einer Kugel aussieht
Bei einem beliebigen Objekt kannst du die Normale an einer Ecke annähern durch den Mittelwert der Normalen aller anliegender Dreiecke.
Für einen Ring/Torus gibt es eine fertige Formel, wie die lautet, weiss ich jetzt grad nicht. Wenn du aber die Gleichung des Torus in impliziter Form gegeben hast "F(x,y,z) = 0" dann ist der Gradient davon gerade die Normale, also der Vektor [Fx,Fy,Fz], wobei Fx bedeutet: F abgeleitet nach x, Fy: abgeleitet nach y, usw..
|
|
P_G
      
Beiträge: 75
Win XP
Delphi 7 / 8 Enterprise
|
Verfasst: Mo 07.03.05 10:38
Ich weiß nicht, an was für einem Projekt du sitzt. Aber vielleicht hilft dir das hier weiter: www.geocities.com/pe...one_uk/engine3d.html
Es handelt sich um eine superkleine 3D-Engine zur Darstellung von Primitiven. Kommt ohne OpenGL oder DirectX aus. Gouraud-Shading inklusive. Das ganze ist open source, also bringt dich ein Blick auf den Code vielleicht weiter.
Gruß, P_G
|
|