2020-07-13 16:03:49 +11:00
|
|
|
# Importer des fichiers .OBJ
|
|
|
|
|
2023-04-09 20:13:56 +11:00
|
|
|
* https://en.wikipedia.org/wiki/Wavefront_.obj_file
|
|
|
|
* http://fegemo.github.io/cefet-cg/attachments/obj-spec.pdf
|
|
|
|
* https://people.sc.fsu.edu/~jburkardt/data/obj/obj.html
|
2023-03-30 14:39:36 +11:00
|
|
|
|
2020-07-13 16:03:49 +11:00
|
|
|
```
|
|
|
|
v -1.177934647 -6.833468914 -73.19773865
|
|
|
|
vn -0.1279897094 -0.4501263499 -0.8837448359
|
|
|
|
v -0.8008174896 -6.425453663 -73.32041931
|
|
|
|
vn -0.05844723806 -0.09480132163 -0.993778944
|
|
|
|
```
|
|
|
|
|
2023-04-09 20:13:56 +11:00
|
|
|
## read_obj
|
|
|
|
|
2020-07-13 16:03:49 +11:00
|
|
|
Première étape : en lisant les vertices, nous saurons positionner
|
2023-04-09 20:13:56 +11:00
|
|
|
nos bubulles. Ensuite, en explorant les faces, nous pouvons
|
|
|
|
en déduire les arètes (aka: edges).
|
2020-07-13 16:03:49 +11:00
|
|
|
|
2023-04-23 03:42:25 +11:00
|
|
|
Et à partir de cette analyse, nous allons générer un fichier
|
|
|
|
binaire contenant les points xyx, et les arêtes pointA-pointB.
|
2023-04-27 14:56:40 +11:00
|
|
|
Le format de ce fichier doit être considéré *opaque*.
|
|
|
|
il sera généré dans le $PWD en utilisant le basename du fichier .OBJ mais
|
|
|
|
avec l'extension `.evblob`.
|
2023-04-23 03:42:25 +11:00
|
|
|
|
|
|
|
Ce n'est qu'une première étape, d'autres formats de sortie
|
|
|
|
pourront être implémentés.
|
|
|
|
|
2023-03-30 14:39:36 +11:00
|
|
|
Attention, mon parser EXIGE des fichiers Unix bien conformés :
|
2023-04-09 20:13:56 +11:00
|
|
|
c'est-à-dire que la dernière ligne du `.obj` DOIT être terminée
|
2023-03-30 14:39:36 +11:00
|
|
|
par un newline !
|
2020-07-13 16:03:49 +11:00
|
|
|
|
2023-04-23 03:42:25 +11:00
|
|
|
## export_evblob & bla.awk
|
|
|
|
|
|
|
|
Deuxième étape : À partir du fichier .evblob généré à l'étape
|
|
|
|
précédente, nous allons créer (entre autres options ?)
|
|
|
|
un fichier utilisable par Povray. La première option a été
|
|
|
|
la génération des arêtes, nous aurons donc sur `stdout`
|
2023-04-27 14:56:40 +11:00
|
|
|
six nombres réels: xyz(pointA) et xyz(pointB) :
|
|
|
|
|
|
|
|
```
|
|
|
|
25.2275466 19.5029792 -25.1227169 35.6406135 19.5029792 0.0166420
|
|
|
|
35.6406135 19.5029792 0.0166420 0.0881849 19.5029792 -35.5357818
|
|
|
|
0.0881849 19.5029792 -35.5357818 25.2275466 19.5029792 -25.1227169
|
|
|
|
```
|
|
|
|
|
|
|
|
Et là, c'est trop facile pour la suite, Unix sait le faire depuis
|
|
|
|
quarante ans.
|
|
|
|
Un petit [script Awk](./edges2cylinders.awk) fera l'affaire,
|
|
|
|
en toute simplicité.
|
2023-04-23 03:42:25 +11:00
|
|
|
|
2023-04-27 14:56:40 +11:00
|
|
|
Bien entendu, la même chose pourrait être faire pour les vertices,
|
|
|
|
ce qui nous remet dans la droite ligne orthodoxe des bubulles.
|
2023-04-23 03:42:25 +11:00
|
|
|
|
2023-04-09 20:13:56 +11:00
|
|
|
## TODO LIST
|
|
|
|
|
|
|
|
* Songer à un système d'auto-scaler et de recentrage
|
|
|
|
* Comment générer un `.obj` à partir d'une image flottante ?
|
|
|
|
* Gérer les arêtes de longueur nulle (degenerated cylinder)
|
2023-04-27 14:56:40 +11:00
|
|
|
* Que faire des vertices qui ne sont pas utilisées par des faces ?
|
2023-04-09 20:13:56 +11:00
|
|
|
|
|
|
|
## rendu final
|
2020-07-13 16:03:49 +11:00
|
|
|
|
2021-05-07 21:27:16 +11:00
|
|
|
Quatrième étape : aller vivre à la campagne ?
|
|
|
|
|
2020-07-13 16:03:49 +11:00
|
|
|
|