home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / fr / luxart20 / version2.doc < prev   
Text File  |  1994-09-28  |  33KB  |  969 lines

  1. ╔════════════════════════════════════════╗
  2. ║   Les nouvelles fonctions de la v2.0   ║   (Freeware)
  3. ╚════════════════════════════════════════╝
  4.  
  5. Ray-tracer
  6. °°°°°°°°°°
  7. · Nouvelles primitives :
  8.         - Surface de révolution
  9.         - Quadrique
  10.         - Boîte
  11.         - Trigonolithe
  12.         - Terrain fractal
  13.         - Tresse       ┐
  14.         - Pseudotore   ├  dites
  15.         - Hélice       ├  "complexes"
  16.         - Lissajous    ┘
  17. · Nouveaux échantillons de texture
  18.         - Roche
  19.         - Minéral
  20.         - Tâche
  21.         - Hybride
  22. · Nouvelles fonctions de surface
  23.         - Sculpture
  24.         - Plisser
  25.         - Bump-mapping à partir de fichiers graphiques .LUX, .TGA et .GIF.
  26. · La fonction "plaquer_image" (Image-mapping) reconnaît désormais les fichiers
  27.   .TGA et .GIF en plus des .LUX.
  28. · Nouveaux paramètres d'Environnement
  29.         - Stochastique
  30.         - Enveloppe
  31.  
  32. Bureau
  33. °°°°°°
  34. · Nouveau format TIF.
  35.  
  36. Divers
  37. °°°°°°
  38. · Possibilité de spécifier le format d'image en ligne de commande (taper
  39.   LUXART ?).
  40. · Possibilité d'utiliser une variable d'environnement SET LUXART = %chemins%
  41. · GifPeg v4.1.
  42.  
  43.  
  44. La variable d'environnement de LUXART :
  45. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  46.  
  47. La nouvelle v2.0 est en mesure d'utiliser une variable d'environnement LUXART
  48. à déclarer sous DOS par la directive SET. Elle vous permet d'indiquer au
  49. programme d'autres chemins de répertoires à scruter (séparés par un ";" comme
  50. dans le PATH de l'autoexec.bat) en plus des siens.
  51.  
  52. Exemple :
  53. SET LUXART=C:\DPTOOLS;D:\LUXART\TEST;D:\RTRACE\IMAGES;
  54.  
  55.  
  56. ╔════════════════╗
  57. ║   LE LANGAGE   ║
  58. ╚════════════════╝
  59.  
  60. Rappel :
  61. °°°°°°
  62. ┌------------┬-----------------┬----------------┬----------------┐
  63. | Paramètres |    Définition   |     Exemple    |     Valeurs    |
  64. ├------------┼-----------------┼----------------┼----------------┤
  65. |   x y z    | Vecteur         | 5  -47  62.11  | Toutes         |
  66. |   r v b    | Couleur         | 0.0  0.58  1.0 | Entre 0 et 1   |
  67. |   ent      | Entier          | 320, -54, 0... | Toutes non déc.|
  68. |   déc      | Décimal         | -24.78, 1.4... | Toutes déc.    |
  69. |   ent+     | Entier positif  | 1024           | Toutes >= 0    |
  70. |   déc+     | Décimal positif | 8.5, 0.1574... | Toutes >= 0    |
  71. |   $texte$  | Chaîne de carac.| Bois_Clair     | ASCII 80c. max |
  72. └------------┴-----------------┴----------------┴----------------┘
  73.  
  74.  
  75. Environnement :
  76. =-=-=-=-=-=-=
  77.  
  78. 2 nouveaux paramètres ont été implantés dans la fonction "environnement" :
  79.  
  80. 1°) STOCHASTIQUE
  81.     =-=-=-=-=-=-
  82. Au moment de lancer le calcul d'une scène et juste avant d'entamer la procédure
  83. du suivi de rayons, LUXART génère un tableau de 512 points pseudo-aléatoires qui
  84. va servir de base à toutes ses fonctions de calcul de turbulence et de
  85. perturbation de normales. Elles sont surtout utilisées pour contrôler les
  86. textures et matières. Jusqu'à présent, on obtenait donc toujours les mêmes
  87. motifs puisque les valeurs de ce tableau ne variaient jamais. Désormais, en
  88. utilisant ce nouveau paramètre "stochastique" dans la structure Environnement,
  89. LUXART calcule les valeurs du tableau à partir d'un générateur de nombres
  90. aléatoires réels et offre ainsi la possibilité d'obtenir des motifs et des
  91. perturbations de surface différents à chaque rendu. Cependant, de par ce fait,
  92. il faudra se rappeler de ne pas interrompre un rendu stochastique final car en
  93. cherchant à le continuer ultérieurement, les textures ne seront plus les mêmes
  94. à partir de la ligne où a été interrompu le tracé de l'image.
  95.  
  96.  
  97. 2°) ENVELOPPE
  98.     =-=-=-=-=
  99. Paramètre optionnel qui permet de contrôler la contenance des enveloppes (boîtes
  100. englobantes). La valeur par défaut est de 4 (primitives) et semble apparemment
  101. être le meilleur compromis temps de calcul/occupation mémoire. Une valeur
  102. inférieure à 2 serait "suicidaire" et causerait d'inévitables problèmes.
  103. Une valeur trop élevée (8 ou +) forcerait l'arbre hiérarchique à déployer plus
  104. fréquemment de nouvelles ramifications à différents niveaux, ce qui donnerait
  105. des résultats trop superficiels et donc non optimisés. Puisque ce paramètre
  106. est désormais public, il n'est pas interdit de l'utiliser, mais je doute fort
  107. que les résultats obtenus soient meilleurs qu'avec la valeur imposée par défaut.
  108.  
  109. Exemple :
  110. °°°°°°°
  111. environnement
  112. {
  113.         position_camera 0 -31 4
  114.         pointe_vers     0 9 1
  115.         cote            0 0 1
  116.         champ_visuel    65
  117.         resolution      640 480
  118.         anti_crenelage  recursif
  119.         seuil           4
  120.         facteur_proportionnel 1.3334
  121.         stochastique
  122.         caustiques
  123.         fond            { ciel.pal }
  124.         enveloppes      5
  125.         atmosphere      .08 .08 .09
  126. }
  127.  
  128.  
  129. Nouveaux échantillons :
  130. =-=-=-=-=-=-=-=-=-=-=
  131.  
  132. Remarque : la définition des paramètres "transition" et "cycle" est expliquée
  133. °°°°°°°°   dans le fichier LUXART.DOC (même fonction que les échantillons de
  134.            la v1.0 et 1.1).
  135.  
  136. 1°) ROCHE
  137.     =-=-=
  138. Produit une apparence synthétique de granite pur entre les 2 matières.
  139.  
  140. matiere
  141. {
  142.  texture
  143.  {
  144.   echantillon    roche
  145.   ajuster        x y z
  146.   cycle          déc+ ou ent+
  147.   ...
  148.   matiere                      // Première matière
  149.   {
  150.    diffuse       r v b
  151.    ...
  152.   }
  153.   matiere                      // Seconde matière
  154.   {
  155.    diffuse       r v b
  156.    ...
  157.   }
  158.  }
  159. }
  160.  
  161. Exemple :
  162. °°°°°°°
  163. matiere
  164. {
  165.  texture
  166.  {
  167.   echantillon roche
  168.   cycle 3
  169.   ajuster .6 .6 .6
  170.   transition .4
  171.   matiere { diffuse Terre_de_Sienne4 }
  172.   matiere { diffuse Kaki2 }
  173.  }
  174. }
  175.  
  176.  
  177. 2°) MINERAL
  178.     =-=-=-=
  179. Produit un motif synthétique à base de minerais pur entre les 2 matières,
  180. proche de celui de l'agate ou du marbre.
  181.  
  182. matiere
  183. {
  184.  texture
  185.  {
  186.   echantillon    mineral
  187.   ajuster        x y z
  188.   transition     déc+ 0 à 1
  189.   cycle          déc+ ou ent+
  190.   octaves        ent+          // Contrôle le niveau de la turbulence infligée
  191.                                // à l'échantillon.
  192.   ...
  193.   matiere                      // Première matière
  194.   {
  195.    diffuse       r v b
  196.    ...
  197.   }
  198.   matiere                      // Seconde matière
  199.   {
  200.    diffuse       r v b
  201.    ...
  202.   }
  203.  }
  204. }
  205.  
  206. Les valeurs conseillées pour le paramètre "octaves" vont de 1 à 10.
  207.  
  208. Exemple :
  209. °°°°°°°
  210. matiere
  211. {
  212.  texture
  213.  {
  214.   echantillon mineral
  215.   cycle 2
  216.   transition .7
  217.   octaves 3
  218.   matiere { diffuse Vert_Olive_Fonce speculaire 90 Blanc }
  219.   matiere { diffuse Vieil_Or speculaire 90 Blanc reflexion .2 .2 .2 }
  220.   turbulence { amplitude 4 cycle 4 }
  221.  }
  222. }
  223.  
  224.  
  225. 3°) TACHE
  226.     =-=-=
  227. Génère un motif de tâches concentriques alternativement et régulièrement
  228. espacées qui répond à l'équation :
  229.  
  230.      ┌ sin(x) + sin(y) + sin(z)┐²
  231.  M = │──────────────────────── │
  232.      └           3             ┘
  233.  
  234. matiere
  235. {
  236.  texture
  237.  {
  238.   echantillon    tache
  239.   ajuster        x y z
  240.   transition     déc+ 0 à 1    // contrôle le fondu entre la zone d'espacement
  241.                                // et la tâche 
  242.   ...
  243.   matiere                      // Première matière
  244.   {
  245.    diffuse       r v b
  246.    ...
  247.   }
  248.   matiere                      // Seconde matière
  249.   {
  250.    diffuse       r v b
  251.    ...
  252.   }
  253.  }
  254. }
  255.  
  256. Exemple :
  257. °°°°°°°
  258. matiere
  259. {
  260.  texture
  261.  {
  262.   echantillon tache
  263.   matiere { diffuse Noir speculaire 40 Blanc }
  264.   matiere { diffuse Rouge_Brique speculaire 40 Blanc }
  265.   transition .35
  266.   ajuster .25 .25 .25
  267.  }
  268. }
  269.  
  270.  
  271. 4°) HYBRIDE
  272.     =-=-=-=
  273. Produit un motif hybride du bois et du marbre (ou de l'agate).
  274.  
  275. matiere
  276. {
  277.  texture
  278.  {
  279.   echantillon    hybride
  280.   ajuster        x y z
  281.   transition     déc+ 0 à 1
  282.   octaves        ent+          // Contrôle le niveau de la turbulence infligée
  283.                                // à l'échantillon.
  284.   lambda         dec+          // valeur par défaut : 2.0
  285.   omega          dec+          // valeur par défaut : 0.5
  286.   ...
  287.   matiere                      // Première matière
  288.   {
  289.    diffuse       r v b
  290.    ...
  291.   }
  292.   matiere                      // Seconde matière
  293.   {
  294.    diffuse       r v b
  295.    ...
  296.   }
  297.  }
  298. }
  299.  
  300. "lambda" : contrôle le dosage du facteur "hasard" d'une octave à une autre dans
  301.           la perturbation des veinures de l'échantillon. Plus la valeur fixée
  302.           s'éloigne de 1.0, et plus les trajectoires des turbulences auront
  303.           tendance à tourbillonner.
  304.  
  305. "omega" : contrôle l'évolution des calculs de la perturbation. Chaque octave
  306.           successive de turbulence est multipliée par cette valeur. Plus la
  307.           valeur est élevée (s'éloigne de 0.0), et plus le degré de turbulence
  308.           sera prononcé dans les octaves successivement croissantes.
  309.  
  310. Les valeurs conseillées pour le paramètre "octaves" vont de 1 à 10.
  311.  
  312. Exemple :
  313. °°°°°°°
  314. matiere
  315. {
  316.         texture
  317.         {
  318.                 echantillon hybride
  319.                 transition .8
  320.                 octaves 2
  321.                 lambda 1.4
  322.                 omega 0.75
  323.                 ajuster 4 2 2
  324.                 matiere { diffuse Blanc speculaire 60 Blanc }
  325.                 matiere { diffuse Noir speculaire 60 Blanc }
  326.         }
  327. }
  328.  
  329.  
  330. Nouvelles fonctions de surface :
  331. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  332.  
  333. PS : Le mot clé "bosses" devient officiellement "surface", même si "bosses"
  334. °°   est toujours reconnu.
  335.  
  336. Il y a désormais 5 fonctions de surface en tout. Les deux premières sont déjà
  337. connues : "turbulence" et "vague". Les 3 autres sont :
  338. - sculpture
  339. - graver_image (Bump-mapping)
  340. - plisser
  341.  
  342.  
  343. 1°) SCULPTURE
  344.     =-=-=-=-=
  345. Permet de sculpter sur la surface de l'objet le motif dessiné par
  346. l'échantillon. On peut alors facilement obtenir une matière dont les veines
  347. sont, par exemple, reproduites en relief. Néanmoins, on peut constater que ce
  348. relief est nettement plus visible lorsque les deux matières de l'échantillon
  349. ont la même couleur.
  350.  
  351. matiere
  352. {
  353.  texture
  354.  {
  355.   echantillon    mineral
  356.   ajuster        x y z
  357.   transition     déc+ 0 à 1
  358.   cycle          déc+ ou ent+
  359.   octaves        ent+
  360.   ...
  361.   matiere                      // Première matière
  362.   {
  363.    diffuse       r v b
  364.    ...
  365.   }
  366.   matiere                      // Seconde matière
  367.   {
  368.    diffuse       r v b
  369.    ...
  370.   }
  371.  }
  372.  surface
  373.  {
  374.         sculpture
  375.         {
  376.                 amplitude déc+ 0 à 1 // quantité max. de perturbation
  377.                                      // infligée à la normale.
  378.                 inverse              // option qui inverse le sens de la normale.
  379.         }
  380.  }
  381. }
  382.  
  383.  
  384. 2°) GRAVER_IMAGE (bump-mapping)
  385.     =-=-=-=-=-=-
  386. Permet de graver un fichier image LUX 24-bits, TGA 24-bits ou GIF 8-bits placé
  387. dans le répertoire TEXTURES (ou dans un des répertoires de la variable LUXART)
  388. sur la surface d'un objet. Son principe est similaire à celui de la fonction
  389. d'image-mapping "plaquer_image" avec la grande différence qu'il perturbe la
  390. normale en chaque point de la surface en fonction de la couleur du pixel
  391. correspondant du fichier.
  392.  
  393.  {
  394.   graver_image    $texte$  // nom du fichier image LUX, TGA ou GIF.
  395.  
  396.   position        x y z    // position du coin supérieur gauche de l'image.
  397.  
  398.   cadre           x y z    // vecteur qui longe le haut de l'image en la
  399.                            // traversant du coin supérieur gauche au coin
  400.                            // supérieur droit.
  401.  
  402.   normale         x y z    // normale de la surface sur laquelle est       
  403.                            // plaquée l'image.
  404.  
  405.   ajuster         ent+ ou déc+  // taille de l'image sachant que 1.0 est    
  406.                                 // sa taille réelle.
  407.  
  408.   amplitude       déc      // variation à infliger à la normale.
  409.  
  410.   inverse                  // option qui inverse le sens de la normale.
  411.  }
  412.  ...
  413.  
  414. Précision : cette image est gravée autant de fois qu'il le faut pour recouvrir
  415. °°°°°°°°°   intégralement la surface si l'ajustement de sa taille reste
  416.             inférieure à celle de la surface. Pour qu'il n'embrasse qu'une
  417.             seule fois la surface, il faut jouer sur le paramètre 'ajuster'.
  418.  
  419. Exemple : (tiré de CAVE2.ART)
  420. °°°°°°°
  421. matiere
  422. {
  423.  diffuse
  424.  {
  425.   plaquer_image carreau8.gif
  426.   centre 0 0 0
  427.   cadre 1 0 0
  428.   normale 0 0 1
  429.   ajuster 27
  430.  }
  431.  surface
  432.  {
  433.   graver_image
  434.   {
  435.    gravure carreaub.gif
  436.    centre 0 0 0
  437.    cadre 1 0 0
  438.    normale 0 0 1
  439.    ajuster 27
  440.    amplitude .8
  441.   }
  442.  }
  443. }
  444.  
  445. disque
  446. {
  447.  centre 0 0 0
  448.  normale 0 0 1
  449.  rayon 1000
  450. }
  451.  
  452. Dans cet exemple, on cherche à reproduire un pavage réaliste. Pour cela, on
  453. 'plaque' le fichier CARREAU8.LUX qui contient le motif des pavés, et on 'grave'
  454. l'autre fichier CARREAUB.GIF qui contient les contours préparés pour du
  455. bump-mapping de ces mêmes pavés. Vous remarquerez que les valeurs des paramètres
  456. des 2 fonctions sont identiques.
  457.  
  458.  
  459. 3°) PLISSER
  460.     =-=-=-=
  461. Perturbe la normale en chaque point de la surface de façon à lui donner une
  462. apparence de tissu plissé ou froissé.
  463.   
  464. matiere
  465. {
  466.    diffuse       r v b
  467.    ...
  468.    surface
  469.    {
  470.         plisser déc+ 0 à 1 // quantité max. de perturbation infligée à la
  471.    }                       // normale.
  472. }
  473.  
  474.  
  475. Nouvelles primitives :
  476. =-=-=-=-=-=-=-=-=-=-
  477.  
  478. 1°) SURFACE DE REVOLUTION
  479.     =-=-=-=-=-=-=-=-=-=-=
  480. Construit une surface de révolution en faisant pivoter autour de l'axe de
  481. révolution Z la courbe de profil (2D) génératrice de l'objet.
  482. Beaucoup d'objets autour de nous répondent à ce type de critère (verre, vase,
  483. bouteille, assiette, sculpture, fontaine, table, colonne etc...). Il sera donc
  484. désormais très facile de les reproduire rapidement avec cette nouvelle
  485. primitive.
  486.  
  487.            +Z                   Coordonnées (x, z) des points :
  488.          6┼   ∙                 (1.6, 6)
  489.          5┼    ∙                (2, 5)
  490.          4┼   ∙                 (1.6, 4)
  491.          3┼ ∙                   (1, 3)
  492.          2┼∙                    (0.5, 2)
  493.          1┼ ∙                   (1, 1)
  494. ──────────0─┼∙─┼──┼──┼── +X     (1.3, 0)
  495.           │ 1  2  3  4
  496.           │
  497.           │
  498.           │
  499.  
  500. Sa syntaxe est la suivante :
  501.  
  502. revolution
  503. {
  504.         pas     ent+    // valeur incrémentale pour une révolution complète.
  505.         sommets ent+    // nombre de points qui composent le profil de courbe.
  506.         liste   x z     // coordonnées (x, z) de chacun de ces points.
  507.                 x z
  508.                 ...
  509. }
  510.  
  511. La surface générée est toujours orientée X Y (normale 0 0 1). Il faut donc au
  512. besoin, l'orienter en l'encadrant dans une structure "bloc / fin_bloc".
  513.  
  514. Plus la valeur du pas est grande, et plus la surface de révolution engendrée
  515. aura de faces. Ce pas ne doit pas être inférieur à 3. Une valeur raisonnable
  516. se situe entre 20 et 60.
  517. Le nombre de sommets doit être inférieur ou égal à 32. La surface obtenue
  518. est automatiquement lissée afin d'adoucir les contours.
  519.  
  520. Exemple : (suivant la courbe de profil dessinée ci-dessus)
  521. °°°°°°°
  522. revolution
  523. {
  524.         pas 32
  525.         sommets 7
  526.         liste 1.6  6
  527.               2    5  
  528.               1.6  4
  529.               1    3
  530.               .5   2
  531.               1    1
  532.               1.3  0
  533. }
  534.  
  535.  
  536. 2°) QUADRIQUE
  537.     =-=-=-=-=
  538. Génère une surface définie par l'équation du second degré :
  539.  
  540.         Ax² + By² + Cz² + Dxy + Exz + Fyz + Gx + Hy + Iz + J = 0
  541.  
  542. Elle permet de créer des surfaces comme la sphère, l'ellipsoïde, les
  543. paraboloïdes elliptiques ou hyperboliques, les hyperboloïdes à une ou deux
  544. nappes etc... Cependant, de par certaines contraintes que nous imposent la
  545. façon dont LUXART doit traiter les primitives (notamment le fait que l'origine
  546. (0, 0, 0) doit se trouver au centre de la surface générée), l'équation notée
  547. ci-dessus va être considérablement simplifiée et ramenée à :
  548.  
  549.         Ax² + By² + Cz² + Ey = D
  550.  
  551. La syntaxe de cette primitive est donc la suivante :
  552.  
  553. quadrique
  554. {
  555.         centre          x y z   // position initiale de la quadrique.
  556.                                 // 0 0 0 est le vecteur par défaut.
  557.         composantes     A B C   // coeff. de l'équation
  558.                         D E 0
  559. }                           └─> doit toujours être un zéro !
  560.  
  561. Voici un tableau des signes des coefficients de l'équation pour générer les
  562. quadriques "classiques" :
  563.  
  564.                                 A       B       C       D       E
  565. Cône elliptique                 +       -       +       0
  566. Ellipsoïde                      +       +       +       +
  567. Hyperboloïde à une nappe        +       -       +       +
  568. Hyperboloïde à deux nappe       -       -       +       +
  569. Paraboloïde elliptique          +               +       0       -
  570. Paraboloïde hyperbolique        +               -       0       -
  571.  
  572. Exemple : (génère une ellipsoïde)
  573. °°°°°°°
  574. quadrique
  575. {
  576.         centre 3 0 2
  577.         composantes  5 10 10
  578.                     15  0  0
  579. }
  580.  
  581.  
  582. 3°) BOITE
  583.     =-=-=
  584. Génère un parallélépipède rectangle dont on fixe la hauteur (axe Z), la
  585. largeur (axe X) et la profondeur (axe Y).
  586. Sa syntaxe est la suivante :
  587.  
  588. boite
  589. {
  590.         position        x y z   // 0 0 0 est le vecteur par défaut.
  591.         largeur         x
  592.         profondeur      y
  593.         hauteur         z
  594. }
  595.  
  596. La primitive est déployée depuis les coordonnées (x, y, z) de 'position'.
  597. Une 'largeur' négative signifie que les faces correspondantes seront
  598. construites sur l'axe -X.
  599. Une 'profondeur' négative signifie que les faces correspondantes seront
  600. construites sur l'axe -Y.
  601. Une 'hauteur' négative signifie que les faces correspondantes seront
  602. construites sur l'axe -Z.
  603.  
  604. Exemple :
  605. °°°°°°°
  606. boite
  607. {
  608.         position        0 -5 1
  609.         largeur         -4
  610.         profondeur      10
  611.         hauteur         3
  612. }
  613.  
  614.  
  615. 4°) TRIGONOLITHE
  616.     =-=-=-=-=-=-
  617. Ce terme un peu barbare est un mot composé spécialement pour le cas de LUXART.
  618. C'est la fusion de "trigonométrie" et de "lithe", tout cela pour définir cette
  619. puissante primitive qui, à elle seule, effectue le même travail que certains
  620. utilitaires spécifiques destinés à d'autres ray-tracers.
  621. En effet, elle permet d'utiliser directement un fichier ASCII de format RAW
  622. et de le transformer en primitive autonome.
  623. Sa syntaxe est la suivante :
  624.  
  625. trigonolithe $texte$    // on indique en paramètre de nom du fichier en
  626.                         // question.
  627.  
  628. Ce type de fichier est exclusivement composé de coordonnées de triangles, la
  629. plupart du temps calculées par des modeleurs ou des utilitaires externes (il y
  630. en a beaucoup en Freeware/Shareware), qui forment un objet complet.
  631. Voici un exemple du contenu d'un tel fichier :
  632.  
  633.  -3.52 -4.19 -5.08  -3.91 -6.21 -5.08   -3.4 -6.21 -7.01
  634.   -3.4 -6.21 -7.01  -3.07 -4.19 -6.82  -3.52 -4.19 -5.08
  635.  -3.07 -4.19 -6.82   -3.4 -6.21 -7.01  -1.99 -6.21 -8.43
  636.  -0.04 -6.21 -5.08   -3.4 -6.21 -7.01  -3.91 -6.21 -5.08
  637.  -1.99 -6.21 -8.43  -1.79 -4.19  -8.1  -3.07 -4.19 -6.82
  638.  -0.04 -6.21 -5.08  -1.99 -6.21 -8.43   -3.4 -6.21 -7.01
  639.  -1.79 -4.19  -8.1  -1.99 -6.21 -8.43  -0.05 -6.21 -8.95
  640.  -0.04 -6.21 -5.08  -0.05 -6.21 -8.95  -1.99 -6.21 -8.43
  641.  -0.05 -6.21 -8.95  -0.05 -4.19 -8.56  -1.79 -4.19  -8.1
  642.  -3.52 -4.19 -5.08  -2.78 -3.57 -6.65   -3.2 -3.57 -5.08
  643.  -2.78 -3.57 -6.65  -3.52 -4.19 -5.08  -3.07 -4.19 -6.82
  644.  -3.07 -4.19 -6.82  -1.62 -3.57 -7.81  -2.78 -3.57 -6.65
  645.  -1.62 -3.57 -7.81  -3.07 -4.19 -6.82  -1.79 -4.19  -8.1
  646.  -1.79 -4.19  -8.1  -0.05 -3.57 -8.24  -1.62 -3.57 -7.81
  647.  -0.05 -3.57 -8.24  -1.79 -4.19  -8.1  -0.05 -4.19 -8.56
  648.  -2.55 -3.34 -5.08   -3.2 -3.57 -5.08  -2.78 -3.57 -6.65
  649.  -2.78 -3.57 -6.65  -2.23 -3.34 -6.33  -2.55 -3.34 -5.08
  650.   etc...
  651.  
  652. Ici, chaque ligne correspond à un triangle (X Y Z du premier sommet, X Y Z du
  653. second sommet et X Y Z du troisième sommet).
  654. Cette primitive assemble donc tous ces triangles de façon à générer l'objet,
  655. mais en plus, lisse la surface obtenue afin d'adoucir les angles formés par
  656. les triangles adjacents.
  657. A moins d'avoir une grande quantité de mémoire RAM, cette fonction est à
  658. utiliser avec modération car chaque triangle peut être ici considéré comme une
  659. primitive "triangle lissé" puisque, une fois sa normale déterminée, il en aura
  660. toutes les caractéristiques.
  661. Le fichier de triangles ne doit pas non plus contenir autre chose que les
  662. valeurs numériques décimales des coordonnées. Pas de texte sous peine d'erreur.
  663.  
  664. Exemple :
  665. °°°°°°°
  666. trigonolithe BUSTE.TRI
  667.  
  668.  
  669. 5°) TERRAIN FRACTAL
  670.     =-=-=-=-=-=-=-=
  671. Cette primitive permet de générer toute sorte de rocher naturel plus ou moins
  672. accidenté (montagne etc...). Elle se développe à partir d'une technique de
  673. subdivision récursive de triangles.
  674. Sa syntaxe est la suivante :
  675.  
  676. terrain
  677. {
  678.         etendue x y z           // position du sommet principal
  679.                 V1x V1y V1z     // Vecteur1 : étendue du premier côté depuis
  680.                                 //            le sommet principal
  681.                 V2x V2y V2z     // Vecteur2 : étendue du second côté depuis
  682.                                 //            le sommet principal
  683.         composantes     R C It
  684. }
  685.  
  686. "etendue" : définit la position et la taille du triangle de base qui va être
  687.             récursivement subdivisé. C'est donc à partir de ce triangle que
  688.             va être déployé le terrain.
  689.  
  690. L'apparence du terrain est contrôlée par le paramètre "composantes". Il est
  691. très important de se rappeler que les résultats obtenus par ces trois valeurs
  692. dépendent essentiellement de LA TAILLE du triangle de base. Les mêmes
  693. composantes ne calculeront pas le même rocher sur 2 triangles qui n'ont pas
  694. la même étendue.
  695. Le paramètre "composantes" se décompose de la façon suivante :
  696. R : déc+ de 0 à 1, contrôle la rugosité ; plus la valeur est proche de 0, et
  697.     plus la primitive sera accidentée.
  698. C : ent+ ou déc+, contrôle la croissance de fractalisation. C'est elle qui
  699.     assure globalement la taille (volume) de la primitive finale générée.
  700.     Cette valeur est très dépendante de la taille du triangle sur lequel on
  701.     travaille. Par exemple, une valeur de 15 apparaîtra faible sur un triangle
  702.     d'une étendue équivalente à 150 ou 200, mais sera colossale sur une
  703.     étendue de 1 ou 2.
  704. It : ent+, indique le nombre d'itérations (niveaux récursifs). Cette valeur
  705.      contrôle donc le nombre total de triangles (facettes) qui vont composer
  706.      la primitive finale. Attention aux valeurs trop élevée qui se révèlent
  707.      vite gourmandes en mémoire :
  708.      1 -> 4 facettes    (4x1)
  709.      2 -> 16 facettes   (4x4)
  710.      3 -> 64 facettes   (16x4)
  711.      4 -> 256 facettes  (64x4)   // donne déjà de bons résultats.
  712.      5 -> 1024 facettes (256x4)  // ma préférée...
  713.      6 -> 4096 facettes (1024x4) // si vous avez du temps et de la mémoire...
  714.      etc...
  715.  
  716. La primitive finale obtenue est systématiquement lissée afin d'adoucir les
  717. angles formés par les triangles adjacents, ce qui rend le rocher nettement
  718. plus réaliste et moins agressif.
  719.  
  720. Exemple :
  721. °°°°°°°
  722. terrain
  723. {
  724.         etendue 0 -30 0
  725.                 0 30 50
  726.                 30 30 0
  727.         composantes 0.6 12.5 5  
  728. }
  729.  
  730.  
  731. Les 4 primitives suivantes dont dites "complexes", non pas parce qu'elles
  732. manipulent des nombres complexes ou imaginaires, mais parce qu'elles sont
  733. générées par des procédures internes qui mettent en combinaison certaines
  734. primitives de base de LUXART. Ceci est bien évidemment transparent pour
  735. l'utilisateur, mais de par ce fait, il faudra se rappeler que la place qu'elles
  736. occuperont en mémoire sera fonction du nombre de primitives de base qui
  737. serviront à les développer.
  738. Il faut néanmoins noter que ces "formes" (qui ne sont que le début d'une série
  739. que je continuerais et que j'améliorerais dans les futures versions) ouvrent de
  740. nouveaux horizons créatifs et facilitent l'accès à la réalisation de scènes
  741. dont les scripts n'auraient pu être générés que par des procédures externes et
  742. autonomes.
  743.  
  744.  
  745. 6°) LISSAJOUS
  746.     =-=-=-=-=
  747. Génère une courbe 3D périodique fonction du temps.
  748. Une sphère est systématiquement placée sur chaque point (x, y, z) calculé de la
  749. courbe. Un connecteur cylindrique relie deux sphères contigües de façon à
  750. représenter la primitive par un tube lissé.
  751. Sa syntaxe est la suivante :
  752.  
  753. lissajous
  754. {
  755.         composantes     M S r R
  756.                         A B Ex Ey Ez
  757.         centre          x y z           // 0 0 0 est le vecteur par défaut.
  758.         collier         dec+            // optionnel
  759.         perles                          // optionnel
  760. }
  761.  
  762. La primitive générée est toujours orientée X Y (normale 0 0 1). Il faut donc au
  763. besoin, l'orienter en l'encadrant dans une structure "bloc / fin_bloc".
  764.  
  765. Le paramètre "composantes" se décompose de la façon suivante :
  766. M : ent+ de 1 à 5, représente la méthode de calcul de la courbe. Les équations
  767.     sont donc écrites de 5 façons différentes. C'est ce premier paramètre qui
  768.     contrôle la "forme" finale de la courbe.
  769. S : ent+, correspond au nombre de points (centre de chaque sphère) qui doivent
  770.     composer la courbe. Plus ce nombre est grand, plus la courbe sera lisse.
  771. r : ent+, représente le rayon de chaque sphère.
  772. R : ent+, dénote le rayon global de la primitive. Toutes les coordonnées calculées
  773.     seront comprises entre +R et -R.
  774. A : déc+, première variable qui affecte la génération de la courbe. Les grandes
  775.     valeurs ne donnent pas de bons résultats.
  776. B : déc+, seconde variable qui affecte la génération de la courbe. Les grandes
  777.     valeurs ne donnent pas de bons résultats.
  778. Ex, Ey et Ez : ent+ de 1 à 9, exposants des coordonnées respectives dans les
  779.                équations.
  780.  
  781. "collier" : Par défaut, le rayon du connecteur cylindrique est le même que celui
  782.             des deux sphères contiguës qu'il relie. Si ce paramètre est spécifié,
  783.             sa valeur sera utilisée comme rayon de ce connecteur.
  784.  
  785. "perles" : Si ce paramètre est spécifié, seules les sphères seront utilisées
  786.            pour générer la forme de la primitive, les connecteurs seront
  787.            supprimés.
  788.  
  789. Exemple :
  790. °°°°°°°
  791. lissajous
  792. {
  793.         composantes     3 500 0.5 50
  794.                         0.95 0.5 1 1 1
  795.         centre          10 0 50
  796. }
  797.  
  798.  
  799. 7°) HELICE
  800.     =-=-=-
  801. Génère une primitive en forme d'hélicoïde.
  802. Une hélice est une courbe engendrée par une droite qui s'enroule régulièrement
  803. sur un cylindre ou un cône. 
  804. Une sphère est systématiquement placée sur chaque point (x, y, z) calculé de la
  805. courbe. Un connecteur conique relie deux sphères contigües de façon à
  806. représenter la primitive par un tube lissé.
  807. Sa syntaxe est la suivante :
  808.  
  809. helice
  810. {
  811.         composantes     R1 R2 r1 r2
  812.                         H nR S
  813.         centre          x y z           // 0 0 0 est le vecteur par défaut.
  814.         collier         dec+            // optionnel
  815.         perles                          // optionnel
  816. }
  817.  
  818. L'hélice générée est toujours orientée X Y (normale 0 0 1). Il faut donc au
  819. besoin, l'orienter en l'encadrant dans une structure "bloc / fin_bloc".
  820.  
  821. Le paramètre "composantes" se décompose de la façon suivante :
  822. R1 : déc+, rayon de départ de l'hélice.
  823. R2 : déc+, rayon d'arrivée de l'hélice.
  824. r1 : déc+, rayon de la première sphère qui compose l'hélice. Cette valeur doit
  825.      être obligatoirement inférieure à R1.
  826. r2 : déc+, rayon de la dernière sphère qui compose l'hélice. Cette valeur doit
  827.      être obligatoirement inférieure à R2.
  828. H : déc+, hauteur totale de l'hélice (sur l'axe Z).
  829. nR : ent+, nombre de révolutions complètes effectuées par l'hélice.
  830. S : ent+, nombre de points (centre de chaque sphère) pour 1 révolution de
  831.     l'hélice (nombre de points total = nR * S).
  832.  
  833. "collier" : Par défaut, le rayon du connecteur conique est le même que celui
  834.             des deux sphères contiguës qu'il relie. Si ce paramètre est spécifié,
  835.             sa valeur sera utilisée comme rayon de ce connecteur.
  836.  
  837. "perles" : Si ce paramètre est spécifié, seules les sphères seront utilisées
  838.            pour générer la forme de la primitive, les connecteurs seront
  839.            supprimés.
  840.  
  841. La transition entre r1 et r2 se fait au fur et à mesure du développement de
  842. l'hélice.
  843.  
  844. Exemple :
  845. °°°°°°°
  846. helice
  847. {
  848.         composantes     4 1 1.2 0.1 12 3 40
  849.         centre          0 -5 5
  850.         perles
  851. }
  852.  
  853.  
  854. 8°) TRESSE
  855.     =-=-=-
  856. Génère une primitive caractérisée par l'entrelacement de tores déformés.
  857. Une sphère est systématiquement placée sur chaque point (x, y, z) calculé de la
  858. courbe. Un connecteur cylindrique relie deux sphères contigües de façon à
  859. représenter la primitive par un tube lissé.
  860. Sa syntaxe est la suivante :
  861.  
  862. tresse
  863. {
  864.         composantes     S RS T t R r
  865.         centre          x y z           // 0 0 0 est le vecteur par défaut.
  866.         collier         dec+            // optionnel
  867.         perles                          // optionnel
  868. }
  869.  
  870. La primitive générée est toujours orientée X Y (normale 0 0 1). Il faut donc au
  871. besoin, l'orienter en l'encadrant dans une structure "bloc / fin_bloc".
  872.  
  873. Le paramètre "composantes" se décompose de la façon suivante :
  874. S : ent+, nombre total de points (centre de chaque sphère) pour générer la
  875.     primitive.
  876. RS : déc+, rayon individuel de chaque sphère.
  877. T : ent+, nombre de tores à entrelacer.
  878. t : ent+, nombre de tortillons engendrée par chaque tube pour 1 révolution
  879.     complète de la tresse.
  880. R : déc+, rayon majeur de la tresse.
  881. r : déc+, rayon mineur de la tresse.
  882.  
  883. "collier" : Par défaut, le rayon du connecteur cylindrique est le même que celui
  884.             des deux sphères contiguës qu'il relie. Si ce paramètre est spécifié,
  885.             sa valeur sera utilisée comme rayon de ce connecteur.
  886.  
  887. "perles" : Si ce paramètre est spécifié, seules les sphères seront utilisées
  888.            pour générer la forme de la primitive, les connecteurs seront
  889.            supprimés.
  890.  
  891. Exemple :
  892. °°°°°°°
  893. tresse
  894. {
  895.         centre 0 0 1
  896.         composantes 120 0.2 3 2 2.5 0.3
  897. }
  898.  
  899.  
  900. 9°) PSEUDOTORE
  901.     =-=-=-=-=-
  902. Dans les version antérieures de LUXART, cette primitive était générée par une
  903. procédure "Modèle de Tore" accessible depuis la barre des menus du Bureau.
  904. Elle a été améliorée et ramenée à une primitive interne à part entière, le
  905. pseudotore.
  906. Sa syntaxe est la suivante :
  907.  
  908. pseudotore
  909. {
  910.         centre          x y z           // 0 0 0 est le vecteur par défaut.
  911.         rayon           déc+ > 0        // rayon du pseudotore.
  912.         rayon_tube      déc+ > 0        // rayon du tube. Doit être inférieur
  913.                                         // au rayon du pseudotore.
  914.         segments        ent+            // nombre total de segments à calculer
  915.                                         // pour créer le pseudotore. Doit être
  916.                                         // supérieur ou égal à 4.
  917.         methode         ent+ 1 ou 2     // type de combinaison de primitives
  918.                                         // de base. Valeur par défaut : 1.
  919.         collier         dec+            // optionnel.
  920.         perles                          // optionnel.
  921. }
  922.  
  923. Le tore généré est toujours orienté X Y (normale 0 0 1). Il faut donc au besoin,
  924. l'orienter en l'encadrant dans une structure "bloc / fin_bloc".
  925.  
  926. "methode" : 1 -> sphères + connecteurs.
  927.             2 -> facettes lissées.
  928.  
  929. Dans le cas où la méthode utilisée est 1 (par défaut), une sphère est
  930. systématiquement placée sur chaque point (x, y, z) calculé de la courbe. Un
  931. connecteur cylindrique relie deux sphères contigües de façon à représenter la
  932. primitive par un tube lissé.
  933.  
  934. "segments" : Contrôle la forme arrondie du pseudotore. Plus sa valeur est
  935.              élevée, et plus le tore engendré sera lisse. Il permet donc
  936.              d'obtenir des effets intéressants comme par exemple la possibilité
  937.              d'avoir un tore hexagonal, octogonal etc...
  938.  
  939. "collier" : Par défaut, le rayon du connecteur cylindrique est le même que celui
  940.             des deux sphères contiguës qu'il relie. Si ce paramètre est spécifié,
  941.             sa valeur sera utilisée comme rayon de ce connecteur.
  942.             Ce paramètre n'a aucune fonction si la méthode choisie est 2.
  943.  
  944. "perles" : Si ce paramètre est spécifié, seules les sphères seront utilisées
  945.            pour générer la forme de la primitive, les connecteurs seront
  946.            supprimés.
  947.            Ce paramètre n'a aucune fonction si la méthode choisie est 2.
  948.  
  949. Exemple :
  950. °°°°°°°
  951. pseudotore // hexagonal...
  952. {
  953.         centre 0 25 -10
  954.         rayon 5
  955.         rayon_tube .7
  956.         segments 6
  957. }
  958.  
  959.  
  960. MISE A JOUR DU FICHIER "COULEURS.INC"
  961. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  962. Dans les précédentes versions de LUXART, il y avait une erreur de syntaxe dans
  963. le fichier de déclaration des couleurs COULEURS.INC. En effet, la couleur
  964. "Viel_Or" a été rectifiée à sa véritable syntaxe qui est "Vieil_Or". Il faudra
  965. donc apporter les modifications nécessaires à vos scripts utilisant cette
  966. couleur afin de ne pas avoir d'erreur lors de la phase d'analyse.
  967. De plus, 91 déclarations de nouvelles couleurs ont été rajoutées, pour la
  968. plupart écrites en anglais.
  969.