Un raytracer en c++ avec arbre csg pour linux (portable win32)

Soyez le premier à donner votre avis sur cette source.

Vue 10 022 fois - Téléchargée 1 012 fois

Description

GwoinRay est un raytracer en C++ développer pour un projet de fin d'année sous Linux.
Le programme lit un fichier script passé en paramètre et qui contient la scène à calculer. Différentes options (AntiAliasing, arbre CSG, faux bump, reflet, transparence, animation, ombres soft...) sont présentes et expliquées dans le fichier README.

Source / Exemple :


EXEMPLE DE FICHIER SCENE:
GwoinRay {
	ambiantlight <0.4,0.4,0.4>

	viewer {
		position <0,250,0>
		lookat <0, 200, 250>
		bank 0
	}

	plan {
		normale <0,1,0>
		distance 70
		diffuse <0.5, 0.9, 0.7>
	}

#les boules

	sphere { centre <0, 131, -350> rayon 100 diffuse <1,1,1>  reflection 0.9 brillance 5 }

	sphere { centre <-120, 150, 900> rayon 100 diffuse <1,1,1>  reflection 0.2 brillance 20 }
	sphere { centre <-100, 130, 550> rayon 100 diffuse <1,1,1> transparence 0.9 diffraction -10 reflection 0.2 brillance 20 }

	sphere { centre <-500, 80,-250> rayon 150 diffuse <0.8,0.8,0.9> reflection 0.3 brillance 75 bump 6 }
	
	csg difference {
		sphere { centre <500, 250, -400> rayon 120 diffuse <0.52, 0.95, 0.9>}
		boite { from <400,150,-300> to <600,350,-500> diffuse <0.2,1,1> }
	}	

	csg difference {
		boite { from <400,170,300> to <600,370,500> diffuse <0.8,0.5,1> }
		sphere { centre <500, 270, 400> rayon 120 diffuse <1,1,1> reflection 0.5 brillance 20 }
	}

	omni { position <0,430,0> rayon 800 couleur <1,0,0.85> }
	omni { position <-50,430,300> rayon 500 couleur <0.2,1,0.85> }
}

Conclusion :


Mon appli n'intègre pas les textures bitmap (juste procédurales), car je n'ai pas eu le temps de les mettre en place (projet développé en 1 week-end).

Le code peut-être assez complexe pour les débutants (templates, vector, héritages, ...) mais néanmoins util pour ceux qui auraient un projet à faire ;^)

j'allais oublié : l'affichage se fait dans un buffer OpenGL. C donc lui qui affiche dans une fenêtre GLUT.

G déveloper un autre raytracer en C qui prend en charge les textures mais pas l'arbre CSG (différence, union, intersection). Si ce projet vous interesse, envoyer moi un mail :^)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
24
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2004

bouhouhouh j'arrive pas à compiler sous VC++6, j'ai l'erreur :
error C2535: 'class std::basic_ostream<_E,_Tr> &__thiscall std::basic_ostream<_E,_Tr>::operator <<(int)' : member function already defined or declared
et d'autre du même style, mais sinon j'aimerai bien savoir à quelle niveau d'études tu en étais quand tu as réaliser ce projet.
Messages postés
32
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
4 décembre 2003

tout à fait d'accord avec Lightness1024!
Messages postés
162
Date d'inscription
jeudi 15 mars 2001
Statut
Membre
Dernière intervention
1 avril 2005

enfin voila qqch d'interressant :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.