begin process at 2012 05 27 18:03:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > UN RAYTRACER EN C++ AVEC ARBRE CSG POUR LINUX (PORTABLE WIN32)

UN RAYTRACER EN C++ AVEC ARBRE CSG POUR LINUX (PORTABLE WIN32)


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :csg, arbre, tree, linux, raytracer Niveau :Initié Date de création :04/04/2003 Date de mise à jour :04/04/2003 11:12:59 Vu / téléchargé :6 740 / 526

Auteur : gwoin

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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 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> }
  • }
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 :^)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture PLANNING D'EQUIPE par grephit
Source avec Zip APPLICATION DE DESSIN DE QUELQUES FIGURES par laguchori
Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture IRC CLIENT MULTISERVEUR EN MFC (TXIRC) par TeniX
Source avec Zip ENTETE DU FICHIER BMP (BIPMAP) par k.Lutchi

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SYSTÈME D'ANNULER-REFAIRE PAR ARBRE (TURS) par macsou01
Source avec Zip Source avec une capture ARBRE AABB par JeanMilost
Source avec Zip TREEREG (GESTION DU REGISTRE COMME UN ARBRE) par kts_system
ARBRE BINAIRE (NON-EQUILIBRE) par JCDjcd
Source avec Zip Source avec une capture ARBRE23 par Vyse

Commentaires et avis

Commentaire de Lightness1024! le 06/04/2003 11:20:44

enfin voila qqch d'interressant :)

Commentaire de gillig le 07/04/2003 16:32:01

tout à fait d'accord avec Lightness1024!

Commentaire de Iwin le 29/09/2003 23:02:19

bouhouhouh j'arrive pas à compiler sous VC++6, j'ai l'erreur :
error C2535: 'class std::basic_ostream&lt;_E,_Tr&gt; &__thiscall std::basic_ostream&lt;_E,_Tr&gt;::operator &lt;&lt;(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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

r-tree(arbre region) [ par bouchra22 ] bonjour,svp aidez moi le plus tot possible;j'ai un exposé en c++ concernant R-tree,et j'ai besoin d'une implementation faite en c++;merci d'avance creation récursive de l'arbre de codage de la compression Huffman [ par kuja2053 ] Bonjour, Voila mon probleme : ayant un projet sur la compression de Huffman, j'ai décider de changer le format de l entete de mon fichier suite à un c Construction d'un arbre à partir d'un fichier [ par psgkiki ] Bonjour a tous, Ma question est comment construire un arbre contenant des données stockées dans un fichier. C'est pour un logiciel de devinette d'anim completion de code avec kevelop [ par lilington ] salut tout le mondetoujours dans ma migration progressive vers linux (fedora 5) j'ai commencer un peu avec les sockets. cependant comme avec ms visual Théorie des graphes : algo de Kruskal [ par thespartan ] Bonjour j'ai implémenté l'agorithme de kruskal qui sert à la recherche d'arbre recouvrant de poids minimal (arpm) dans un graphe pondéré seulement voi Affichage d'un arbre dynamique(en C) [ par marocweb ] bonjour tout le monde,j'ai un arbre déja crée en mémoire en utilisant les listes chainées et cela comme suit :Chaque noeud point vers une liste chainé Gtk+, compil linux et headers [ par nollyflip ] Salut à tous,Je souhaite (un peu pour le fun !) programmer quelques trucs en graphique avec gtk+ avec une couche réseau.Seulement je ne sais pas comme PING linux [ par stillfelil ] Bonjour tout le mondeJe voudrais coder un PING sous LINUX avec detection d'eventuelles erreurs ( Time to live exceeded ... etc.)j'au beau chercher et interfaçage avec C sous linux [ par trustme25 ] comment avec le langage C sous linux crée un interface graphique? Problèmes de Création de Threads Windows/Linux [ par LaKiks51 ] Bonjour Le but est de savoir combien de threads peuvent etre executer simultanément c'est à dire que j'ai un executable qui réalise une opération pe


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales