Projet informatique

  • Initiateur de la discussion Initiateur de la discussion wawa96
  • Date de début Date de début
Ça va m'aider :)
Par curiosité, je l'ai installé sous Mint (3.7), mais pas encore compris comment ca fonctionne :)
Il râle sans fichier de conf, même vide, j ai du :

mkdir -p $HOME/.povray/3.7
touch $HOME/.povray/3.7/povray.conf


Et avec l'exemple ci dessus :
povray roue.pov
J'ai un beau .png :)
 

Pièces jointes

  • roue.png
    roue.png
    47.8 KB · Affichages: 6
Ça va m'aider :)
Par curiosité, je l'ai installé sous Mint (3.7), mais pas encore compris comment ca fonctionne :)
Il râle sans fichier de conf, même vide, j ai du :

mkdir -p $HOME/.povray/3.7
touch $HOME/.povray/3.7/povray.conf



Et avec l'exemple ci dessus :
povray roue.pov
J'ai un beau .png :)

J'ai pas encore essaye 3.7. Pour ton fichier PNG, tu utilises quelle commande?
 
J'ai simplement renommé le fichier du #118 en roue.pov et lancé povray roue.pov.

Avec l'extension .c, il ne voulait pas.
Ca compile et fait un .png par défaut.
J'ai essayé
povray roue.pov > roue.jpg
Mais j'ai un .jpg de 0k :)
Apparemment il y a une interface Kde possible, mais je n ai pas encore cherché comment la mettre en place.
 
Il faut s'habituer a une syntaxe un peu particuliere:

Reference Section 2

$ povray +Iroue.pov +Oroue.png +W640 +H480 +D

(evtl. ajouter des options pour le path des fichiers .inc). Sans +D si tu n'as pas besoin de voir comment les calculs avancent...
 
Dernière édition:
Code:
difference {
    cylinder { <x,y,z_low>, <x,y,z_high>, radius1 },
    cylinder { <x,y,z_low-5>, <x,y,z_high+5>, radius2 }
}

/* avec radius2 < radius1. */

Tu dessines deux cylindres, l'un dans l'autre; un ayant un radius plus petit que l'autre, mais plus long en longueur. Si tu fais union, tu vois 2 cylindres; si tu fais difference, tu vois le cylindre exterieur avec un trou au milieu, cause par le cylindre plus petit de l'interieur.

Documentation de la commande cylinder:

POV-Ray: Documentation: 2.4.1.4 Cylinder

Bien sur, tu devras supprimer le materiel a l'exterieur du cylindre ayant le plus grand radius pour obtenir les dents a l'exterieur.

Edit: la raison pourquoi j'ai fait +5 et -5 : http://www.f-lohmueller.de/pov_tut/csg/povcsg3e.htm
Et comment j’enlève le matériel à l'intérieur, je vois pas dans mon code ce que je dois enlever...
 
Et comment j’enlève le matériel à l'intérieur, je vois pas dans mon code ce que je dois enlever...
Si le materiel de l'interieur se trouve dans le (a l'interieur du) 2eme cylindre, il va lui aussi etre supprime. Ca se voit que tu n'as pas encore entierement saisis le concepte de la difference... ;)
 
Si le materiel de l'interieur se trouve dans le (a l'interieur du) 2eme cylindre, il va lui aussi etre supprime. Ca se voit que tu n'as pas encore entierement saisis le concepte de la difference... ;)
Sisi j'ai saisi le concept en soi, mais savoir quand il faut s'en servir c'est autre chose...
J'aimerai juste savoir quelles lignes de codes désignent le matériel à l'intérieur de la roue, pour que je le mette dans le 2ieme cylindre, tu ne saurais pas ce sont lesquelles?
 
Je pourrais te montrer la position dans le code... mais tu apprendrais plus si tu fais ca: tu identifies les objets dans le code, et tu essayes d'identifier les parties correspondantes dans l'image. Tu fais comment? Tu commentes (supprimes) un objet apres l'autre et tu compares les images.

Par exemple:

Code:
union {
    objet_1,
    objet_2,
}

Ce code montre deux objets. Pour savoir a quoi correspond, disons, objet_1, tu le supprimes temporairement comme ca:

Code:
union {
    // objet_1,
    objet_2,
}

en utilisant la syntaxe // comment:

POV-Ray: Documentation: 2.2.1.2 Comments

Si tu veux supprimer temporairement un gros objet ou un objet composite, utilises la syntaxe /* comment */ comme ca:

Code:
union {
    /*
    union {
        ....
        ....
    },
    */
    objet_3
}

Comme ca, l'union interne disparaitrera entierement de l'image.

Tu fais ca pour chaque objet dans le code que tu n'arrives pas a associer a un objet dans l'image, et tu finiras pas comprendre le code en entier. Au debut, il faut etre patient, mais tu t'y habitueras tres vite.
 
Je pourrais te montrer la position dans le code... mais tu apprendrais plus si tu fais ca: tu identifies les objets dans le code, et tu essayes d'identifier les parties correspondantes dans l'image. Tu fais comment? Tu commentes (supprimes) un objet apres l'autre et tu compares les images.

Par exemple:

Code:
union {
    objet_1,
    objet_2,
}

Ce code montre deux objets. Pour savoir a quoi correspond, disons, objet_1, tu le supprimes temporairement comme ca:

Code:
union {
    // objet_1,
    objet_2,
}

en utilisant la syntaxe // comment:

POV-Ray: Documentation: 2.2.1.2 Comments

Si tu veux supprimer temporairement un gros objet ou un objet composite, utilises la syntaxe /* comment */ comme ca:

Code:
union {
    /*
    union {
        ....
        ....
    },
    */
    objet_3
}

Comme ca, l'union interne disparaitrera entierement de l'image.

Tu fais ca pour chaque objet dans le code que tu n'arrives pas a associer a un objet dans l'image, et tu finiras pas comprendre le code en entier. Au debut, il faut etre patient, mais tu t'y habitueras tres vite.
J'ai fait ça avec tous les unions, soit ca me met erreur, car quand on enleve une partie du code la suite n'a plus aucun sens, surtout pour les variables etc... OU alors ca m’enlève des parties de la figure mais à aucun moment, la partie des dents, à l'intérieur de ma roue n'a été modifié, comme quoi c'est bien plus complexe que de supprimer des unions... Ca m'a également supprimé tout sauf le cercle de base de la roue dans lequel on a fait difference{cylindre, ce qui donne justement la roue sans rien du tout d'autres.
 
J'ai fait ça avec tous les unions, soit ca me met erreur, car quand on enleve une partie du code la suite n'a plus aucun sens, surtout pour les variables etc... OU alors ca m’enlève des parties de la figure mais à aucun moment, la partie des dents, à l'intérieur de ma roue n'a été modifié, comme quoi c'est bien plus complexe que de supprimer des unions... Ca m'a également supprimé tout sauf le cercle de base de la roue dans lequel on a fait difference{cylindre, ce qui donne justement la roue sans rien du tout d'autres.
T'es sur d'avoir supprime correctement?
 
L'idee, c'est que l'image finale est construite a partir de plusieurs elements. Recommences depuis le debut. Pour chaque etappe, tu calcules l'image:

1. construis une roue (un cylindre plat): cylinder ...
2. colores la en couleur doree: color, texture, finish, ...
3. fais un trou sous forme de cylindre au milieu de la roue: difference de deux cylindres
4. fais un (1) trou dans le bord (difference)
5. calcules les positions des autres trous du bord (pour les dents)
6. fais les autres trous.

Oublies pour l'instant le code que tu as deja, et fais table rase.

Si tu as des problemes dans une etappe, il faut les resoudre avant de passer aux etappes suivantes. Poses des questions, si tu ne comprends pas quelque chose...
 
L'idee, c'est que l'image finale est construite a partir de plusieurs elements. Recommences depuis le debut. Pour chaque etappe, tu calcules l'image:

1. construis une roue (un cylindre plat): cylinder ...
2. colores la en couleur doree: color, texture, finish, ...
3. fais un trou sous forme de cylindre au milieu de la roue: difference de deux cylindres
4. fais un (1) trou dans le bord (difference)
5. calcules les positions des autres trous du bord (pour les dents)
6. fais les autres trous.

Oublies pour l'instant le code que tu as deja, et fais table rase.

Si tu as des problemes dans une etappe, il faut les resoudre avant de passer aux etappes suivantes. Poses des questions, si tu ne comprends pas quelque chose...
Bonjour, peux tu jeter un coup d’œil sur mon code, j'ai fait la roue (cylindre écrasé), j'ai créé un cube de la meme texture que le cylindre, je suis arrivé à l'utilisation de difference{, peux tu me donner la démarche l'ordre à suivre pour que ce carré soit enlevé de mon cylindre merci:cool:
 
Bonjour, peux tu jeter un coup d’œil sur mon code, j'ai fait la roue (cylindre écrasé), j'ai créé un cube de la meme texture que le cylindre, je suis arrivé à l'utilisation de difference{, peux tu me donner la démarche l'ordre à suivre pour que ce carré soit enlevé de mon cylindre merci:cool:

Tu ajoutes difference autour de cylinder et box:

Code:
difference {
    // ici le code qui cree le cylindre...
    cylinder {
         // ....
    }
    // Et ici le code qui cree le carre
    box {
         // ....
    }
}
 
Je me suis amusé a voir la doc, qui guide pas a pas.
Pour des trucs de base, c est très compréhensible !!!

Tutorial Section 2

farid, sous Unix il y a un bel IDE :
neXtgen Povray Editor - Home

Compile sous Mint, mais pas encore sous FreeBSD, un simple détail de dépendances a wxgtk il semble.
Il y a aussi xfpovray, mais c'est spartiate ...
POV-Ray: Download: Useful tools for POV-Ray for Unix

Coloration syntaxique avec Scite, sinon :)
Ah, merci, je vais l'essayer... :)
 
Tu ajoutes difference autour de cylinder et box:

Code:
difference {
    // ici le code qui cree le cylindre...
    cylinder {
         // ....
    }
    // Et ici le code qui cree le carre
    box {
         // ....
    }
}
Et comment on signale au carré l'emplacement où il doit se mettre dans le cylindre?
@farid_h je t'ai mis le code
 

Pièces jointes

Dernière édition:
Ça va m'aider :)
Par curiosité, je l'ai installé sous Mint (3.7), mais pas encore compris comment ca fonctionne :)
Il râle sans fichier de conf, même vide, j ai du :

mkdir -p $HOME/.povray/3.7
touch $HOME/.povray/3.7/povray.conf


Et avec l'exemple ci dessus :
povray roue.pov
J'ai un beau .png :)
ET les droits d'auteur svp??:D
 
J'ai l impression que c'est encore confus pour toi, si tu n'a pas compris comment placer ta box la ou tu veux.

Encore une fois, regarde les exemples du tutoriel :
Tutorial Section 2

J'ai fait 4 trucs simples, sans surcharger de textures et autres planchers.

1/ cylindre_box.pov
Un simple cylindre et une box, chacun d'une couleur differente pour etre bien visibles.

2/ union_cylindre_box.pov
Les 2 mêmes objets, mais formant une seule pièce.

3/ intersection_box_cylindre.pov
C'est la partie commune aux 2 formes. Malgré " pigment { Green }" déclaré, chaque forme a gardée sa couleur d 'origine.
Si je met en commentaire leur couleur, le résultat devient vert uniforme.

4/ difference_box_cylindre.pov
La box, a laquelle on a enlevé la partie du cylindre qui empiète

5/ difference_cylindre_box.pov
Le cylindre, a laquelle on a enlevé la partie de la box qui empiète

Remarque ma syntaxe qui me semble claire, sous la forme :

fonction {
objet_1 {
}
objet_2 {
}
couleur { }
}


Ça me semble plus lisible que ton dernier exemple, surtout pour débuter.

ps : pour éviter le message d'alerte de compilation :
==== [Parsing...] ==========================================================
Possible Parse Error: assumed_gamma not specified in this POV-Ray 3.7 or later
scene. Future versions of POV-Ray may consider this a fatal error. To avoid
this warning, explicitly specify 'assumed_gamma 1.0' in the global_settings
section. See the documentation for more details.


Il suffit d'ajouter cette section :
global_settings {
assumed_gamma 1.0 /* "For new scenes, you should use an
assumed gamma value of 1.0 as this models
how light appears in the real world more realistically." */
}


Voir ici :
POV-Ray: Documentation: 2.3.3.3 Assumed_Gamma
 

Pièces jointes

Dernière édition:
Et comment on signale au carré l'emplacement où il doit se mettre dans le cylindre?
@farid_h je t'ai mis le code
@Nalinux vient de donner de bons exemples.

Lis le tuto, et essayes les exemples!

T'as compris le systeme de coordonnees 3D (avec les coordonnees <x,y,z>)? C'est crucial de comprendre ca, car tout, mais vraiment, tout en depend.

POV-Ray: Documentation: 1.2.1.1 Understanding POV-Ray's Coordinate System

Chaque objet que tu utilises a un, deux ou plusieurs coordonnees 3D. Un cylindre a 2 points

POV-Ray: Documentation: 2.4.1.4 Cylinder

base_point et cap_point. Chacun de ces deux points se trouvent quelquepart dans l'espace 3D, c.a.d qu'ils ont chacun des coordonnees <x1,y1,z1> pour le premier point, et <x2,y2,z2> pour le 2eme point. Pareil pour le carre (box):

POV-Ray: Documentation: 2.4.1.2 Box

Les deux points corner_1 et corner_2 ont eux aussi chacun une position dans l'espace 3D, donc <x3,y3,z3> et <x4,y4,z4>.

Et maintenant, fais attention: c'est a toi de determiner ces 3 coordonnees pour chaque point!. Et pour ca, il faut que tu developpes un instinct 3-dimensionel. Il faut que tu t'imagines ces objets dans l'espace, et c'est a toi de trouver les coordonnees. Par exemple, une sphere au milieu du systeme de coordonnees a pour centre <0,0,0>. Une sphere qui plane 1.0 unites sur la surface x-z a pour coordonnees <0, 1.0, 0>. Une autre sphere plus a droite a pour centre, par ex. <2.0, 0, 0>, plus a gauche: <-2.0, 0, 0>, plus prete de toi: <0, 0, -1.0> (z est negatif, rappelles toi que l'axe z montre de toi vers l'interieur de l'ecran)

Bref, habitues toi rapidement aux 3d-coordonnees. Quand tu auras saisis ca, tu sauras comment placer des objets.
 
Hihi :)
Vu que j'ai des idées de ce qu'on peut faire avec Povray, a voir ses possibilités, je me met un peu a jouer avec ...
 

Pièces jointes

  • soucoupe.gif
    soucoupe.gif
    338.3 KB · Affichages: 8
  • saucer05.jpg
    saucer05.jpg
    6.4 KB · Affichages: 8
@farid_h tu peux m'expliquer pourquoi y a une partie du cylindre encore visible, une face je veux dire si tu regardes l'image de Nalinux, il y a une partie visible du cylindre en bas du trou cubique. C'est quoi? ca me gene
 
Tu parles de difference_box_cylindre.png?

Le rouge que tu vois la est la couleur du cylindre qui a ete supprime. Si tu veux supprimer cette couleur rouge, colories le cylindre a supprimer en vert (la meme couleur que le box).

@Nalinux, le cylindre et le cube ne doivent pas etre alignes a 100%; c'est pour ca que dans cette image, les caps du cylindre sont encore visibles. Si le cylindre etsit un tout petit peu plus long que le cube, ces caps disparaitreront eux aussi.
 
@farid_h tu peux m'expliquer pourquoi y a une partie du cylindre encore visible, une face je veux dire si tu regardes l'image de Nalinux, il y a une partie visible du cylindre en bas du trou cubique. C'est quoi? ca me gene
C'est dans la FAQ:
Knowledgebase:Language Questions and Tips - POV-Wiki

Comme dit @farid_h, c'est parce que les surfaces coincident exactement.

Pour éviter ça, il suffit de faire la box a peine plus petite, pour être sur que le cylindre la recouvre complètement. Ça ne change rien visuellement, mais beaucoup au niveau des calculs.
A vrai dire, vu que le résultat qu'on veut est la partie de box, il serait plus logique de faire le cylindre plus large ... C'est ce que j'ai fait pour la soucoupe volante.
Peu importe ici , c'est le principe qui compte.

D'origine j'ai ca :
Code:
box {<1,0,-0.5>   <2,1,2.5>
     pigment { Yellow }
   }

Si je rétréci a peine la box sur l'axe des X :
Code:
 box {<1.001,0,-0.5>   <1.999,1,2.5>
     pigment { Yellow }
   }

Ça devient plus propre.
A noter que les bords sont encore rouges, puisque la couleur de la box et du cylinder sont définies.

Pour avoir une couleur uniforme, il faut déclarer la couleur a la fin de "difference" :

Code:
difference {
  box {<1.001,0,-0.5>   <1.999,1,2.5>
   }
    cylinder {<1,2,1>    <2,2,1>    2
  }      
pigment { Blue }
}
 

Pièces jointes

  • difference_box_cylindre_meme_taille.png
    difference_box_cylindre_meme_taille.png
    16.9 KB · Affichages: 6
  • difference_box_cylindre.png
    difference_box_cylindre.png
    5.7 KB · Affichages: 6
Dernière édition:
la puissance de Pov-ray ne réside pas là mais dans les isosurfaces, c'est assez compliqué mais ca donne "La touche de réalité" à l'image.:ange:
Povray est un outil qui permet plusieurs choses.
Sa puissance réside a faire ce qu'on en attend :)
Pour certains ça peut être modéliser de isosurfaces, pour d'autres ça peut être une méthode simple de faire des animations de mécanismes .
C'est comme un crayon. Certains vont écrire un roman, et d'autres faire des plans de maisons :D

Truc important : il me semble très important de construire en se référant a 0,0,0 et ensuite utiliser translate.

Même code que au dessus, mais j'ai ajouté translate a la fin de difference pour remonter le résultat de 1 sur l'Axe des Y:

pigment { Blue }
translate <0,1,0>
 

Pièces jointes

  • difference_box_cylindre.png
    difference_box_cylindre.png
    4.7 KB · Affichages: 5
Truc important : il me semble très important de construire en se référant a 0,0,0 et ensuite utiliser translate.

Même code que au dessus, mais j'ai ajouté translate a la fin de difference pour remonter le résultat de 1 sur l'Axe des Y:

C'est a cause des transformations geometriques: tu dessines d'abord l'objet centre a <0,0,0>, puis tu le tournes avec rotate... autour d'un ou plusieurs axes, et finalement tu le pousses avec translate... la ou tu veux l'avoir. J'avais deja mentionne ca dans le poste #132 plus haut:

Projet informatique | Page 7
 
Retour
Haut