DKBTrace raytracer sur Synology

 

earth-tgaLe package DKBTrace est enfin disponible pour Synology ! Pour ceux qui s’intéressent à l’image de synthèse, il s’agit d’un programme en ligne de commande pour construire des images 3D en raytracing.

L’avantage de ce programme est qu’il est écrit en langage C portable et ne nécessite pas de bibliothèque additionnelle. Découverte…

Histoire de DKBTrace

lamp-tgaDKBTrace est un programme écrit par David K. Buck en 1986 et représente l’ancêtre du plus connu POV-Ray.

Il s’agit d’un programme qui réalise des images de synthèse à partir d’une description des scènes via un langage type script et dont le rendu se fait suivant la technique de raytracing (littéralement « lancé de rayons »).

Au départ écrit sur Amiga, celui-ci a été conçu pour être portable sur d’autres plateformes -telle qu’Unix. La dernière version est la 2.12 finalisée en 1989 avec Aaron Collins.

Il ne s’agit ni d’un modeleur (pas d’interface graphique pour construire les scènes), ni d’un programme pour visualiser les rendus (il faut utiliser d’autres logiciels pour afficher et/ou convertir les images obtenues).

Installation sur Synology

illum1-tgaAvant de passer l’installation, je vais présenter la structure des différents répertoires  de DKBTrace :

Le package se trouve sur votre NAS Synology dans le répertoire principal suivant  :

/usr/local/dkb-trace

Il y a différents sous-répertoires structurés de cette manière :

  • app : pas utile, sert au package synology uniquement
  • bin :
    • dkb-trace : programme à lancer pour exécuter le rendu d’une scène
  • share/dkb-trace/dat/ : contient l’ensemble des scènes dont on peut faire le rendu (fichiers se terminant par.dat) avec 3 fichiers un peu à part :
    • colors.dat : fichier qui contient une bibliothèque de définition de couleurs
    • shapes.dat : fichier qui contient une bibliothèque de définition de formes
    • textures.dat : fichier qui contient une bibliothèque de définition de textures

  • doc/dkb-trace/
    • dkb212.doc : contient la documentation complète de DKBTrace au format texte

Pour installer le package sur son NAS Synology, il faut aller dans les paramètres de « Package Center » puis « Community » :

community

Attention l’option « Trust Level » doit être changée à « Any Publisher » :

trustlevel

Ajouter une nouvelle source de packages en indiquant l’adresse : http://digitalbox.chez.com comme indiqué ci-dessous :

digitalboxpackages

Une fois le choix validé et l’affichage rafraîchi, vous devriez voir le package disponible dans la liste communautaire de votre NAS :

dkbtrace-package

Lancez l’installation et laissez vous guider. Une fois celle-ci terminée les fichiers seront installés dans le répertoire indiqué précédemment.

 

Utilisation de DKBTrace

L’utilisation de DKBTrace se fait uniquement via la ligne de commande. Il faut donc avoir accès à votre NAS à minima via SSH. Une fois connecté à votre NAS, voici les options disponibles :

skyvase-tga
+ft - format de sortie Targa-2
+fd - format de sortie DKB/QRT Dump f
+a = antialiasing
+l<xxx> = chemin vers le répertoire dat
+w<xxx> = largeur de l'image
+h<xxx> = hauteur de l'image
+i<filename> = fichier en entrée
+o<filename> = image de sortie

 

Ainsi la génération de la scène « skyvase.tga » se fait via la ligne de commande suivante :

/usr/local/dkb-trace/bin/dkb-trace  +i/usr/local/dkb-trace/share/dkb-trace/dat/skyvase.dat +l/usr/local/dkb-trace/share/dkb-trace/dat +o$HOME/skyvase.tga +w320 +h240 +ft +a 

Sur mon NAS le rendu de cette scène prend 12 s et voici les statistiques obtenues :

                  Statistics
                  ----------

# Rays:      709602    # Pixels:       77120  # Pixels supersampled:      10227


Intersection Tests:

   Type       Tests    Succeeded
   ----    ----------  ----------

  Sphere       683231           1
  Plane      15982164     8326939
  Triangle          0           0
  Quadric     3950676     1732230
  Quartic           0           0
  Bounds      1180084      692648

  Calls to Noise:       947138
  Calls to DNoise:     1638108
  Shadow Ray Tests:    2482712     Blocking Objects Found:      175897
  Reflected Rays:       540439
  Refracted Rays:            0
  Transmitted Rays:          0

Render Time:        0 hours  0 minutes 12 seconds (12.310 seconds)

Le Render Time a été inspiré des sources de POV-Ray et j’ai ajouté cette statistique dans DKBTrace (d’où la version 2.14 pour le package et non la 2.12 d’origine).

La commande « time » de Linux permet aussi d’avoir cette statistique si on ajoute cette commande juste avant l’appel à « dkb-trace » :

real    0m12.416s
user    0m12.221s
sys    0m0.096s

 

Le format « tga » est un format brut qui n’est pas lisible par tous les logiciels, je conseille donc de passer par « Image Magick » pour le convertir dans un format « png » plus universel.

Pour cela vérifiez que vous avez bien l’option « Beta » de cochée dans vos paramètres de packages et installez « Image Magick »  de SynoCommunity :

betasyno

imagemagick

La conversion en « png » de votre scène se fera alors très simplement via la commande suivante :

/usr/local/imagemagick/bin/convert  $HOME/skyvase.tga $HOME/skyvase.png

 

Alternative : lancer DKBTrace via son serveur Webtorus-tga

Avouez que ce n’est pas très pratique de passer par la ligne de commande pour lancer le rendu d’une scène.

Magie du NAS : une autre option s’offre à vous. En effet pourquoi ne pas appeler DKBTrace via un formulaire qui contiendrait la description de votre scène (le fameux fichier .dat) ?

Et par la suite faire un appel via php à DKB-Trace en lui envoyant le contenu de votre formulaire puis convertir le résultat via ImageMagick en  PNG ?

Illustration via mon NAS

La contenu de la scène « lamp.dat » se trouve dans un formulaire web disponible via une page d’accueil. On peut donc modifier cette scène à notre convenance, et une fois les modifications faites, envoyer le contenu via « Envoyer  » :

dkbtrace-form

Le formulaire envoi le contenu à une page PHP qui fait l’appel à DKB Trace, puis ensuite lance la conversion ImageMagick vers le format PNG. La page web affiche alors l’image PNG résultante :

dkbtrace-image

En bonus, on récupère aussi dans la page Web les statistiques de DKB Trace comme par exemple le temps de rendu :

dkbtrace-stats

Ce fonctionnement peut être amélioré pour prendre en compte les paramètres de DKB Trace comme la taille de l’image ou le mode anti-aliasing.

 

Description d’une scène

window

Pour ceux qui veulent créer des scènes sous DKB-Trace, il faudra lire le documentation pour comprendre tous les concepts. De manière simple il faut retenir 3 concepts pour décrire une scène:

  • Indiquer un point de vue (le spectateur)
  • Indiquer une source de lumière (emplacement, couleur)
  • Décrire le ou les objets présentés (emplacement, couleur, texture, etc)

 

Voici l’illustration pour cette scène de la sphère bleue :

Le point de vue :

VIEW_POINT
   LOCATION <0.0  20.0  -100.0>
   DIRECTION <0.0 0.0  1.0>
   UP  <0.0  1.0  0.0>
   RIGHT <1.33333 0.0 0.0>
END_VIEW_POINT

 

La source lumière blanche (en haut à droite, un peu en arrière ):

OBJECT
   SPHERE <0.0 0.0 0.0> 0.001 END_SPHERE
   TRANSLATE <50.0 111.0 -130.0>
   TEXTURE
     COLOUR White
     AMBIENT 1.0
     DIFFUSE 0.0
   END_TEXTURE
   LIGHT_SOURCE
   COLOUR White
END_OBJECT

 

La sphère bleue réfléchissante :

OBJECT
   SPHERE <0.0 25.0 0.0> 40.0 END_SPHERE
   TEXTURE
      COLOUR Blue
      REFLECTION 0.8
      AMBIENT 0.3
      DIFFUSE 0.7
   END_TEXTURE
   COLOUR Blue
END_OBJECT

 

Le damier jaune et vert :

OBJECT
   PLANE <0.0 1.0 0.0> -10.0 END_PLANE
   TEXTURE
      CHECKER COLOUR Yellow COLOUR Green
      SCALE < 20.0 20.0 20.0 >
      AMBIENT 0.1
      DIFFUSE 0.9
   END_TEXTURE
   COLOUR Yellow
END_OBJECT

 

Voilà. Pour les curieux, il ne vous reste plus qu’à regarder la documentation et prendre quelques exemples de scènes pour vous inspirer des principes.

L’appel via une page Web ne fait pas partie actuellement du package DKBTrace, mais permet de comprendre l’intérêt. J’ai pu ainsi appeler DKBTrace depuis mon IPhone ou encore via une tablette (en changeant éventuellement le contenu d’une scène), et visualiser le résultat une fois que le NAS avait fini ses calculs et la conversion de l’image.

En bonus, quelques images de scènes fournies avec DKBTRace :

Ce diaporama nécessite JavaScript.

 

 

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s