| |
|
|
Frank Abbing | Hi.
Irgendwie bin ich mit den oGL-Farben nicht ganz zufrieden. Wie bekomme ich den Würfel richtig gelb hin, ohne den Beleuchtungs-Effekt abschalten zu müssen? Wenn eine vorhandene Texture gelb ist, wirds doch auch richtig dargestellt... KompilierenMarkierenSeparierenDeclare x!
Proc DrawGLScene
oGL("Clear")
oGL("PosMode",1)
oGL("Move",0 , 0 , -7)
oGL("Rotate",x!+45 , x!+45, x!+45)
oGL("Color", 1, .9, .2, 1)
oGL("Cuboid",2,2,2)
oGL("Show")
x!=x!+.25
EndProc
Cls
oGL("Init",%hwnd,1 ,1 ,1 ,1)
SetTimer 10
While 1
waitInput
Case %key=2:BREAK
DrawGLScene()
EndWhile
KillTimer
End
|
|
|
| |
|
|
|
Rolf Koch | Hmm, stimmt, bei mir ist es ein hässliches hellbraun - also eklig. Leider blick ich immer noch nicht so mit den Farbwerten durch, hab mich mit OGL zuwenig beschäftigt. Kuck doch mal mit OKREA indem Du einen Würfel erstellst und die Farben dann einfach mal ausprobierst. |
|
|
| |
|
|
|
Frank Abbing | Hab die Farben im Testprogramm ausprobiert. Knallig Gelb ist nicht zu machen, ausser ich schalte die Beleuchtung ab. Dann sieht aber die ganze Szene unecht aus... Alle hellen Farben sind betroffen, dass ist doch nicht richtig so. |
|
|
| |
|
|
|
| Knallgelb gibts in Natura auch nur wenn direkt ein Licht draufscheint. Kann es sein das Du nur mit ambientem Licht probiertest? |
|
|
| |
|
|
|
Frank Abbing | Ich teste mit dem Licht, welches XProfan dem User anbietet. Ich hoffe, es kommen noch einige Lichtarten hinzu. Es ist aber nun so, dass eine gelbe Texture auch als gelb zu sehen ist. Eine gelbe Farbe ohne Texture aber nur als braunes Irgendetwas. Darum denke ich, da passt was nicht. Mit eigenen Lichtern hatte ich nur kurz experimentiert. Wenn du schon Erfahrungen gesammelt hast, poste doch mal was davon. |
|
|
| |
|
|
|
| Nein ich habe da keinerlei Erfahrung. Mein Hinweis war lediglich hypothetisch. |
|
|
| |
|
|
|
Frank Abbing | So gehts. Ich vergaß, für oGL-Color sind auch höhere Werte als 1 erlaubt. KompilierenMarkierenSeparierenDeclare x!
Proc DrawGLScene
oGL("Clear")
oGL("PosMode",1)
oGL("Move",0 , 0 , -7)
oGL("Rotate",x!+45 , x!+45, x!+45)
oGL("Color", 2, 1.8, .4, 1)
oGL("Cuboid",2,2,2)
oGL("Show")
x!=x!+.25
EndProc
Cls
oGL("Init",%hwnd,1 ,1 ,1 ,1)
SetTimer 10
While 1
waitInput
Case %key=2:BREAK
DrawGLScene()
EndWhile
KillTimer
End
Trotzdem eine Bitte an Roland, noch mehr Lichtquellen (von denen stehen 8 zur Verfügung) vorzuinstallieren für oGL-Init. Werden für oGL-Color grössere Werte als 1 benutzt, leuchten die Objekte nämlich, was sicher nicht immer erwünscht ist. |
|
|
| |
|
|
|
RGH | Hallo Frank,
XProfan benutzt lediglich die voreingestellte Standard-Lichtquelle. Wenn Du das Licht ändern willst, ist die folgende API-Funktion Dein Freund:
Ogl(glColorMaterial, ~GL_FRONT_AND_BACK, ~GL_EMISSION)
Der erste Parameter kann folgende Werte enthalten: GL_FRONT, GL_BACK, GL_FRONT_AND_BACK (default).
Der zweite Parameter gibt die Art des Lichtes an: GL_EMISSION, GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_AMBIENT_AND_DIFFUSE (default). Wenn das Gelb schön hell sein soll, verwendest Du am Besten GL_EMISSION oder GL_SPECULAR.
Die Programmzeile bringst Du sinnvollerweise gleich hinter dem oGL(Init,...) unter.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 07.07.2006 ▲ |
|
|
|
|
Frank Abbing | Danke Roland!
Ups, da hab ich wohl um ein paar Ecken zu kompliziert gedacht. Meine API-Versuche waren etwas ausschweifender...
Dein Vorschlag mittels GL_EMISSION oder GL_SPECULAR bringt aber in meinem Fall nichts ein. Zwar sind die Farben jetzt schön hell, dafür gibts aber keine Schatteneffekte mehr. Wie auch immer, vorerst habe ich die Lösung für mich gefunden (s. letztes Posting) |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Leute!
Kleine Ergänzung von mir: Anscheinend gelten für Primitives (einfache Flächen oder Objekte, die aus solchen zusammengesetzt sind) andere Grundeinstellungen für Farben und Refexionen als für komplexe Objekte (Kugeln, Röhren, Disks usw). Ob das allgemein so ist oder nur bei RGH-ogL hab ich noch nicht geprüft.
Hier der Beweis: KompilierenMarkierenSeparieren!
cls
ogl("init",%hwnd,0,0,0,1)
ogl("clear")
ogl("move", 1,0,-5)
ogl("quad",1,1)
ogl("move",-2,0,0)
ogl("disk",0,0.5,4)
ogl("show")
waitkey
BTW: Das gilt auch bei Verwendung von Texturen, darum verwende ich bei leuchtenden Partikeln Disks als Träger und keine Quads.
Workaround für Frank: KompilierenMarkierenSeparieren!
proc glMaterial---------------------------------------------------------------
parameters a&,b&,a!,b!,c!,d!
declare a#
dim a#,16
clear a#
long a#,0=single(a!)
long a#,4=single(b!)
long a#,8=single(c!)
long a#,12=single(d!)
ogl("glMaterialfv",a&,b&,a#)
dispose a#
endproc-----------------------------------------------------------------------
Declare X!
Proc Drawglscene
Ogl("Clear")
Ogl("PosMode",1)
Ogl("Move",0 , 0 , -7)
Ogl("Rotate",X!+45 , X!+45, X!+45)
--Halbe Werte von Color; aber am Besten ausprobieren!
glMaterial(~GL_FRONT , ~GL_SPECULAR , 0.50 , 0.45 , 0.10 , 0)
--Weitere mögliche Parameter siehe MSDM
Ogl("Color", 1, .9, .2, 1)
Ogl("Cuboid",2,2,2)
Ogl("Show")
X!=X!+.25
Endproc
Cls
Ogl("Init",%Hwnd,1 ,1 ,1 ,1)
Settimer 10
While 1
Waitinput
Case %Key=2:Break
Drawglscene()
Endwhile
Killtimer
End
Ermittelt durch Try & Error; die genauen Zusammenhänge muss ich auch erst noch aufdröseln
HTH Pascal |
|
|
| |
|
|
|
Frank Abbing | Prima, Pascal. Funktioniert genauso gut . Übrigens wird eine Texture heller, wenn zusätzlich noch eine helle Farbe (mit oGL-Color) gesetzt wird. Irgendwie beeinflussen sich die verschiedenen Elemente mehr als vermutet. |
|
|
| |
|
|