Obligement - L'Amiga au maximum

Mardi 16 avril 2024 - 19:31  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


En pratique : POV-Ray - Les bases
(Article écrit par Régis Hervagault et extrait d'Amiga News - mai 1993)


Suite aux questions de nombreux lecteurs, voici un article qui va aider les grands débutants à mieux saisir les concepts de la modélisation par géométrie constructive. Ceux qui maîtrisent le domaine resteront sans doute un peu sur leur faim, mais qu'ils ne s'inquiètent pas pour autant : nous reviendrons sur des exemples plus coriaces une fois que tout le monde aura de bonnes bases.

Avant toute chose, je tiens à rappeler qu'une lecture attentive de la documentation de POV est absolument indispensable pour bien comprendre les exemples proposés depuis le début de cette série : il m'est bien évidemment impossible de tout détailler en deux pages. Nous concentrons donc notre étude sur la méthode, qui nécessite un effort d'analyse (pour concevoir l'assemblage de primitives formant l'objet final), la rédaction du script étant un simple problème de syntaxe pour lequel je vous renvoie au manuel de référence qui est très bien fait...

La base...

Ceci étant dit, voici les trois opérations de base avec lesquelles il est possible de réaliser une foule d'objets complexes à partir des primitives (plan, boîte, sphère, etc.) :
  • L'union qui permet d'assembler des objets pour en créer de nouveaux.
  • L'intersection qui ne conserve comme objet final que les parties communes à plusieurs objets.
  • La différence qui offre la possibilité de soustraire un objet à un autre pour le creuser.
Il faut aussi ajouter la fonction inverse qui, associée à un objet, transforme l'intérieur en extérieur (le creux en plein et inversement). De plus, on peut, à chaque fois que l'on a besoin d'utiliser un objet, utiliser à la place une de ces opérations booléennes, et ceci même à l'intérieur d'une autre opération (il est par exemple possible de faire l'intersection de l'union de cinq primitives avec la différence de deux autres).

La meilleure façon de visualiser les différentes possibilités offertes est bien sûr d'en faire l'essai et le listing que je vous propose ce mois-ci illustre clairement le résultat obtenu pour chaque opération, appliquée à deux primitives fort simples : la sphère et le cube (une boîte aux proportions particulières).

Nous commencerons donc par placer comme à l'habitude notre observateur et une source de lumière afin de voir le résultat. Ensuite, on positionne un cube de côté 10 à cheval sur une sphère de rayon 10 (c'est-à-dire qu'ils sont encastrés l'un dans l'autre) et sur lesquels on applique l'opération choisie. Pour cela, il vous suffit de changer le mot "$$OPERATION$$" par son nom (union, intersection ou difference (sans "é")) dans le listing.

Vous obtenez alors trois versions différentes à calculer que nous allons détailler. Les temps de calcul sont très courts : moins d'une heure pour du 320x256 HAM avec un 68000 de base.

L'union donne comme résultat l'assemblage de notre sphère et du cube, comme si on les avait simplement juxtaposés sans opération dans le script. En fait, elle sert à réunir en une seule forme plusieurs autres et est donc très pratique pour appliquer le même traitement (texture, rotation, agrandissement, etc.) à plusieurs primitives.

POV-Ray

L'intersection se charge de ne conserver des objets initiaux que les parties qui leur sont communes. L'objet final est constitué uniquement de la matière qui est à la fois contenue par la sphère et par le cube. Si les deux objets ne se touchent pas, on obtient rien, s'ils sont inclus l'un dans l'autre, on obtient le plus petit.

POV-Ray

La différence est particulièrement efficace pour creuser un objet, puisqu'elle permet de supprimer un volume à un autre. En fait, il s'agit de réaliser l'intersection d'un objet avec l'inverse d'un autre, ce qui conduit à ne conserver du premier objet que les parties qui ne sont pas dans le second. C'est, selon les auteurs de POV, la façon dont le calcul est effectivement réalisé.

POV-Ray

D'un point de vue mathématique (ça se complique un peu), on peut résumer les trois opérations par des pseudo-formules qui se rapprochent de la théorie des ensembles (les fameuses "patates" que l'on apprend à dessiner en classe primaire) :
  • union {A,B} = {A,B}
  • intersection {A,B} = {union {difference {A,B}, difference {B,A} inverse}
  • différence {A,B} = intersection {A,B} inverse}
Listing

/* Listing "3 en 1" par R. Hervagault le 24 mars 1993 pour Amiga News.
Test des opérations booléennes disponibles en CSG avec POV.
Remplacer $$OPERATION$$ par un des mots-clés UNION, INTERSECTION, DIFFERENCE.
Attention : temps de calcul très courts ! */

// Une source de lumière blanche
object {
  light source { <-50 50 -50> color red 1 green 1 blue 1 }
  }

// L'observateur fixe les deux objets
camera {
  location <-10 20 -20>
  look_at <0 4 0>
  }

/* L'opération choisie, appliquée à une sphère et un à cube qui se touchent.
Texture bleue rapide à calculer avec un petit reflet pour accentuer le relief */

object {
  $$OPERATION$$ {
  sphere { <0 0 0> 10 }
  box { <-5 5 -5> <5 15 5>}
  }
texture {
  ambient 0.333
  diffuse 0.666
  color red 0.333 green 0.666 blue 1
  phong 1 phong_size 25
  }
}

Exercice

Maintenant que vous connaissez ces trois opérations, voici un petit exercice d'application dont nous verrons une correction la prochaine fois. Je vous propose de modéliser un dé à jouer classique avec six faces, selon le principe suivant : un cube aux arêtes arrondies pour qu'il puisse bien rouler et dont les points seront en creux sur les faces (une hémisphère centrale évidée pour la face "1", une hémisphère évidée dans chacun des coins pour la face "4", etc.).

Observez bien, sur un véritable dé, l'ordre des faces avant de vous lancer, et bon travail...

Pour exemple

La petite abeille qui agrémente cet article est ici en réponse à plusieurs questions qui m'ont été posées concernant les limites de la modélisation avec POV.

POV-Ray

A ma connaissance, et contrairement à des rumeurs persistantes, il n'existe toujours pas de modeleur pour POV. Pourtant, les superbes exemples fournis dans le kit de distribution, comme le poisson symbole de cette rubrique, sont loin d'avoir été écrits "à la main" comme ceux que je vous propose. Il n'y a qu'à jeter un coup d'oeil aux scripts : qui peut prétendre modéliser des courbes avec une précision de sept chiffres après la virgule sans utilitaire ? Les auteurs de DKB-Trace ou POV ont leurs propres petits programmes spécifiques qui ne sont malheureusement pas distribués, et c'est pourquoi le réalisme des scènes écrites "à la main" n'atteindra jamais ce qu'un véritable modeleur comme celui de Real 3D peut apporter.

Cela dit, avouez qu'on peut obtenir un résultat charmant (dans le plus pur style des célèbres "fables géométriques") pour peu que l'on fasse un petit effort pour écrire le script. Celui décrivant mon abeille, que j'ai écrit au début de mon apprentissage de DKB-Trace, est long d'une bonne dizaine de pages et ne contient que des primitives car je ne connaissais pas bien les opérations CSG à l'époque (l'abeille entière est un seul objet composite) ni texture particulière. L'image est en mode 640x512 HAM8 des puces AGA (262 144 couleurs), excellent compromis entre HAM et 24 bits, qui convaincra, je l'espère, ceux qui hésitent encore à passer à la nouvelle gamme Amiga.


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]