Avatar billede geek Nybegynder
01. september 2001 - 15:55 Der er 5 kommentarer og
1 løsning

Omni i OpenGL

Jeg er her for nylig begyndt at kode OpenGL i Delphi, og nu er jeg altså stødt ind i et problem som jeg håber en af jer eksperter kan hjælpe mig med.
Jeg kunne godt tæmke mig at lave en lyskilde som opfører sig som en omni (fra 3D Max)
som jeg så kan bevæge rundt i min scene som jeg har lyst til.

Håber nogen kan hjælpe...
Avatar billede martinlind Nybegynder
01. september 2001 - 17:45 #1
Prøv her, måske du kan finde noget brugbart

http://www.efg2.com/Lab/
Avatar billede zerohero Nybegynder
02. september 2001 - 20:12 #2
Hvilken komponenter bruger du?

Jeg arbejder med komponenterne fra bogen \"Delphi  developers guide to OpenGL\"...
Umiddelbart vil man kunne du flytte en omni light-source ved at \"linke\" den til en Tranform og ændre parameteren \"Position\" til \"True\". Ved at bruge den teknik forekommer den mulighed at man samtidig kan \"linke\" en mesh til omni\'en. Det benyttes blandt andet til at vise hvor lyset præcist befinder sig i forhold til resten af dit 3D-Rum. (Jeg kan lave et eksempel og sende den til dig hvis du ønsker det). Hvis du tænker på at kunne flytte din omni-lightsource via musen - kræves der en picking-teknik. Det er en lidt avanceret teknik og kræver lidt erfaring med OpenGL. Men hvis du har lyst kan jeg også sende dig sådan et eksempel. Men du bliver nok nødt til at bruge de samme komponenter jeg bruger for at det kommer til at virke.
Desuden har jeg tænkt på at oprette en OpenGL - webside PÅ DANSK... måske vi skulle lave et sammen... Jeg vil give lyd fra mig så snart jeg har lavet de første sider...

ZeroHero...

Send mig en mail eller sriv en kommetar her på eksperten.dk hvis du ønsker at få mere at vide...

PS: Håber ikke at du blev alt for forvirret...
Avatar billede geek Nybegynder
04. september 2001 - 22:28 #3
Martinlind : kunne ikke rigtig finde noget på siden omkring lys kilder.

Zeroherro : indtil videre burger jeg kun OpenGL og
GLaux.
Har haft fat i den bog du skriver om, men kunne ikke få hans eksempler til at virke, selv når jeg prøvde eksemplerne i bogen kom kun et tomt-blåt delphi windue, så jeg har ikke rigtigt kigget nærmere på komponenterne, men du må meget gerne lave et eksempel.
jeg vil ikke kunne flytte min omni ved hjælp af musen,(Det må komme senere) det skal bare være en bestemt bane eller funktion omni\'en følger.

Lyder meget spændende med OpenGL siden.

mail : geek@ofir.dk

Geek
Avatar billede martinlind Nybegynder
04. september 2001 - 22:55 #4
OK, håber du finder noget du kan bruge
Avatar billede zerohero Nybegynder
04. september 2001 - 23:42 #5
Jeg arbejder helt vildt på at få siden op at stå - men tro mig det er et stort arbejde. Sidens navn er nu offentligt gjort og hedder følgende:

www.opengl-delphi.dk

En dansk side for folk der har hang til at lave 3D Grafik...

Nå, men nok om det! Har jeg forstået dig rigtigt så har du erhvervet dig bogen \"Delphi  developers guide to OpenGL\" (et godt valg - den eneste)...
Men kan ikke få hans eksempler til at virke...

Dette eksempel forudsætter at der forefindes følgende i dit projekt:


    OpenGL1: TOpenGL;
    Light1: TLight;
    Transform1: TTransform;

Skriv i din form\'s onCreate event følgende:

...

procedure TForm1.FormCreate(Sender: TObject);
begin

glenable(gl_lighting);
transform1.tranz := -10.0;

end;
...

Skriv så dette i din forms onPaint event:

...

procedure TForm1.FormPaint(Sender: TObject);
begin
glclear(gl_color_buffer_bit or gl_depth_buffer_bit);
glviewport(0,0,clientheight,clientheight);


transform1.apply;


opengl1.swap;
opengl1.errorcheck(\'FormPaint\');
end;

...

Dette i din forms onResize event:

...

procedure TForm1.FormResize(Sender: TObject);
begin
if opengl1.smaller then FormPaint(sender);
end;

...

og dette i Transform1 onPaint event:

...

procedure TForm1.Transform1Paint(Sender: TObject);
begin
//her kan indsættes et mesh til eventuelt icon for dit lys - hvilket er en stor fordel!!!

light1.apply;
end;

...

Prøv så at ændre Light1.position til True;

...

skriv så følgende i din forms onkeydown event:

...

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case key of
vk_up: transform1.tranz := transform1.tranz+0.5;
vk_down: transform1.tranz := transform1.tranz-0.5;
vk_left: transform1.tranx := transform1.tranz+0.5;
vk_right: transform1.tranx := transform1.tranz-0.5;
  end;
formpaint(sender);
end;

...

Det var vist det! når du compiler og trykker på pil-op skulle lyset flytte sig væk fra viewporten og modsat vej på pil-ned. Pil-venstre flytter lyset til venstre og pil-højre flytter lyset i modsat retning.

ZeroHero
Avatar billede geek Nybegynder
11. september 2001 - 20:55 #6
Tusind tak for eksemplet.
Undskyld at det er så lang tid imellem mine kommentare, men min comp. har haft lidt problemer og andet stads..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester