Phongov osvetlovací model – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Phongov osvetlovací model – Java – Fórum – Programujte.comPhongov osvetlovací model – Java – Fórum – Programujte.com

 

Gamecam0
Duch
21. 11. 2015   #1
-
0
-

Čaute, niektorý ktorý tu chodia častejšie už asi vedia o čo ide. Takže, mám kocku u ktorej mám vyriešené tieto veci:

1) Vykreslenie kocky na základe 8 bodov spojených čiarami.

2) Rotácia tejto kocky + škálovanie

3) Vykresľovanie iba viditeľných strán kocky. (robené na základe normálových vektorov strany)

4) Vyfarbenie kocky (flood fill (so zásobníkom))

Teraz som sa dostal do fáze kedy musím túto kocku nejakým spôsobom natieňovať (osvetliť). Je mi jasné že to musím pravdepodobne robiť cez phongov osvetlovací model pomocou tých zložiek. Teoreticky teoriu k tomu trošku chápem. Chápem že musím nejakým spôsobom pracovať s tými normálami (pravdepodobne asi vypočítať normály jednotlivých bodov). Každopádne sa v tomto cítim dosť stratený. Hľadal som všemožné príklady na nete, študoval teoriu ale aj po tom všetko mám v tom trošku guláš. Nájde sa tu niekto kto s týmto pracoval a poprípade vie ako by sa to "teoreticky" dalo spraviť? Nečakám tu žiadny kód ale skôr myšlienky ako by ste to robili. 

Na konci len podotknem že nesmiem používať žiadne vstavané 2d,3d funkcie ale iba vykreslenie čiar atd.. ktoré som si sám naprogramoval. 

Predom ďakujem za akúkoľvek pomoc alebo odozvu

Gamecam

Nahlásit jako SPAM
IP: 95.102.153.–
Gamecam0
Duch
23. 11. 2015   #2
-
0
-

Čaute, tak som to úspešne vyriešil. Aspoň postačujúco na môj projekt. 

Pre tých čo to budú niekedy hladať tak postup:

1) Umiestnim si svetlo najlepšie do stredu plátna čo bude vektor (0,0,200) cca 

2) Vypočítam normálu osvetlovanej strany (u strany A,B,C,D) vektory AB, AC, urobím z nich vektorový súčin = normála strany.

3) Naprogramujeme si vzorec (obr1.)

4) Týmto vzorcom dostaneme cos alfa ciže číslo od 0 do 1 (difuzna zložka) (Ak je uhol alfa väčší ako 90° strana nie je osvetlená pri osvetlení do stredu plátna ani viditeľná. )

5) Farbu RGB vynásobíme difuznou zložkou red*diff, green*dif, blue*diff

Potom už stačí iba jedlotlivé strany vyfarbiť.

Dúfam že to niekomu pomôže ak mám niekde chybu opravte ma. 

obr 1

Připojen obrázek.

Nahlásit jako SPAM
IP: 78.128.144.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

Podobná vlákna

E-R model — založil alena

3D model — založil Aleš

Logický model do CSV — založil 000ondra000

Class model vs. LINQ — založil Jirka

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý