Ray tracing - problem se stiny – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Ray tracing - problem se stiny – C / C++ – Fórum – Programujte.comRay tracing - problem se stiny – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Luke8100
Duch
28. 11. 2013   #1
-
0
-

Ahoj :)

mám problém se stíny u ray tracingu. 

Po vykreslení scény se mi to zobrazuje nějak podivně..

Nevím, čím to může být :/ Zkoušel jsem posunout počátek paprsku, aby se to netestovalo s počátečním trianglem, ale nepomohlo.

Proto přikládám obrázek + krátký zdroják mého výpočtu.

Nevěděl by si s tím někdo rady? Já vůbec nevím.. :( Děkuju :)

normal - bez stínů:

Připojen obrázek.

se stíny:

Připojen obrázek.

Krátký zdroják:

// Vytvorim si paprsek smerem ke svetlu
// P - vektor, ktery reprezentuje kolizni bod - POCATEK
// L - vektor, ktery reprezentuje pozici svetla - SMEROVY VEKTOR 
// 
L.Normalize();
Ray shadowRay(P, L);

// Paprsek posunu, aby se netestoval sam se sebou
shadowRay.origin = shadowRay.origin * Vector3(SMALL_NUM, SMALL_NUM, SMALL_NUM);

// Udelam test pruseciku, pokud je ve smeru nejaky triangl
pBVH->Intersect(renderContext, shadowRay);

// Ziskam vzdalenost mezi pozici kolize a pozici svetla
//TYPE_REAL distanceLight = (pLight->position - P).L2Norm();
//TYPE_REAL nDotL = N.DotProduct(L);

// Pokud je ve stinu, vlezu si do ifu
if (shadowRay.is_hit() == true && shadowRay.t < distanceLight)
{
	colorPhong = Vector3(0, 0, 0);
	colorPhong += shadowRay.target->surface()->get_material()->ambient * pLight->ambient;
	colorPhong += pLight->ambient;

	if (colorPhong.x > 1 || colorPhong.y > 1 || colorPhong.z > 1)
	{
		assert(false);	
	}
								
	if (pMaterial->get_texture(0) != NULL)
	{										colorPhong.x *= pMaterial->get_texture(0)->get_texel(texcoord.x, texcoord.y).r;									colorPhong.y *= pMaterial->get_texture(0)->get_texel(texcoord.x, texcoord.y).g;
		colorPhong.z *= pMaterial->get_texture(0)->get_texel(texcoord.x, texcoord.y).b;
	}
}

Nahlásit jako SPAM
IP: 2001:718:1001:1c1:3d:bd3c...–
Reklama
Reklama
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, 73 hostů

Podobná vlákna

Sekajú mi Blu-Ray Filmy — založil Peter2

Problém s i++ — založil Chazz

Problém s VC++ — založil beb

Problém v C — založil Robin

Moderátoři diskuze

 

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