dimanche 22 octobre 2017

Ma base est complète !

Enfin ! Après 7 voyages, j'ai pu compléter ma base. J'ai donc mon module de communications, deux modules d'habitation, un laboratoire, et un réservoir de carburant détaché pour des raisons de sécurité (en fait, surtout parce que le moteur physique faisait exploser les pieds quand le réservoir était trop rempli, et donc trop lourd). J'ai également fait venir deux rovers de chantier qui m'ont permis de déplacer les composants de la base, et deux rovers explorateurs, bourrés d'équipement scientifiques, qui permettront à mes équipes d'aller faire le plein de science.

L'on notera que si la faible gravité de Minmus est fort pratique pour l'atteindre avec un minimum de DeltaV, et d'atterrir très facilement sur les surfaces planes, il rend la conduite fort périlleuse, et la moindre manœuvre un peu brusque vous envoie en l'air et risque de casser quelque chose. Il faut donc prendre son mal en patience, et se déplacer tout, tout, tout doucement !

lundi 16 octobre 2017

Prémices de base sur Minmus

Après des dizaines d'heures à préparer ma base et à l'envoyer en pièces détachées, j'ai attaché les deux premiers morceaux : mon centre de contrôle, et un bout de couloir ! Le laboratoire est également arrivé, et il ne me manque donc plus que l'arrivée des lieux de vie avec leurs 9 Kerbals : 1 commandant de bord, 2 scientifiques dans le labo, et 2 équipes composées chacune d'un pilote, d'un ingénieur, et d'un scientifique, qui iront chacune visiter les endroits déjà repérés pour faire le plein de science.

jeudi 5 octobre 2017

Les proxy, c'est magique aussi !

Dans la série des fonctionnalités qui changent la vie dans Blender VSE, le composant de montage vidéo intégré à Blender, voici le "proxy".

Si vous avez tenté de monter une vidéo un peu grosse, vous avez du vous en rendre compte : ça rame. Et ce n'est pas étonnant : les fichiers vidéo, c'est souvent très gros, et les codecs modernes sont finalement assez gourmands en temps de calcul. Ajoutez à cela qu'une vidéo est optimisée pour la lecture linéaire : les codecs encodent généralement une image complète de temps en temps, et travaillent en différentiel entre les deux. Ce qui veut dire que si vous voulez voir une image particulière, il faut repartir en arrière pour trouver l'image complète précédente, et appliquer les différentiels jusqu'à atteindre enfin l'image cible.

Donc, ça rame. Et c'est particulièrement pénible de monter une vidéo quand ça rame.

Alors, il y a des choses à faire, hein. Blender cache les images, donc lui donner plus de mémoire est un bon début. Cela se contrôle dans les préférences utilisateurs.

Vous pouvez également bidouiller le MPEG preseek pour demander à Blender d'aller chercher des images en avance, dans les propriétés du strip.

Mais il y a mieux : le proxy. L'idée, c'est de ré-encoder le strip en un format plus petit et de qualité moindre, qui sera utilisé pour l'affichage lors du montage. Lors du rendu final, c'est bien le strip original qui sera utilisé. Pour ce faire, allez donc faire un tour dans la section "Proxy / Timecode" des propriétés du strip. Cochez, choisissez un répertoire pour stocker le proxy, choisissez une taille, par exemple 50%, et appuyez sur "Rebuild Proxy and Timecode Indices".

Armez vous de patience tandis que Blender ré-encode la vidéo dans un format plus adapté.

Cela fait, il faut indiquer à Blender d'afficher le proxy. Dans la prévisualisation de la scène, tirez le petit "+" pour faire apparaître les paramètres de rendu. Déroulez la boite "Proxy rendering" et choisissez la taille que vous avez choisi pour le proxy, dans notre exemple 50%.

Essayez de vous balader à travers le strip, pour voir. Les performances devraient être grandement améliorées. Et si à un moment vous voulez voir la frame en haute qualité, un petit F12 vous affichera le rendu réel. Pratique, non ?

vendredi 29 septembre 2017

Le denoising, c'est magique !

On continue d'explorer les nouvelles fonctionnalités de Blender 2.79, et je viens de découvrir le denoising. Particulièrement utile pour se débarrasser des "lucioles", il peut faire des merveilles sur des scènes très contrastées. Voyez plutôt:

Alors ? C'est magique, non ? Non seulement pour le look, mais également pour les perfs : en effet, il devient possible de réduire drastiquement le nombre de samples tout en permettant l'obtention d'une image bien propre. La phase de denoising en elle-même prend moins d'une seconde.

Il est peut-être temps de reprendre toutes mes scènes contrastées (par hasard, la scène du bureau) et laisser le denoising nous montrer ce qu'il sait faire.

mercredi 27 septembre 2017

Microphone

Cela faisait un petit moment que je rêvais d'un vrai microphone. Je me suis finalement laissé tenté par le Blue Yeti, plutôt par hasard. C'est un micro USB qui cible clairement les podcasteurs et les musiciens amateurs. Il fournit 4 modes d'enregistrement : la cardioïde, l'avant-arrière, la stéréo, et l’omnidirectionnel.

Première impression : que c'est lourd ! Au moins, ils ne nous vendent pas du vent. On branche, c'est facile, Ubuntu reconnaît le micro, ainsi que la sortie audio, car le micro est muni d'une prise jack pour écouteurs, avec probablement un DAC de bien meilleure qualité que celui de ma carte audio intégrée. Après, on enregistre, et là, on sent vachement la différence avec le micro pourri que j'avais sur mes écouteurs. Une belle gamme dynamique... Plus de bruit de fond... Enfin, plus de bruit blanc. On entend juste le murmure des ventilos de mon PC. Voici la même chose enregistrée avec un micro pourri au dessus, et le Blue Yeti en dessous. Y'a pas photo.

Après, on peut toujours appliquer la suppression du bruit de fond avec Audacity, et là, on entend vraiment plus rien. Fun !

Pour tester la latence, j'ai lancé une petite session Ardour, histoire de voir. Je me suis enregistré chantonnant sur les temps du métronome. Puis je me suis ré-enregistré par dessus, en me calant sur ce que j'entendais. En rejouant le tout, les deux voix se calent impeccable, et je ne perçois aucun décalage. C'était avec un noyau Linux non-temps réel, et Alsa plutôt que Jack, donc j'imagine que l'on doit pouvoir faire encore mieux, mais je ne compte pas non plus monter un studio complet d'enregistrement.

Finalement, d'où vient ce nom, "yeti" ? Il suffit de pousser le micro vers l'avant pour le voir :

Ceci dit, il donne l'impression de hurler de douleur en se bouchant les oreilles, ce qui est un peu curieux quand on veut vendre un microphone !

jeudi 21 septembre 2017

Préparation de ma base Minmus

J'en suis presque à 5 heures dessus (sans parler du temps à y réfléchir), et voilà le test de ma base. Je l'assemble pièce par pièce avec un rover qui s’agrippe par en dessous, c'est assez fun. Maintenant, je pense atteindre les limites du moteur physique, et j'ai déjà vu quelques pieds exploser, je vais donc en rester là, tout empaqueter, et balancer ça sur Minmus.

vendredi 15 septembre 2017

Ma dépêche Blender 2.79 sur Linuxfr.org

J'ai posté mon petit compte-rendu de la release 2.79 de Blender sur linuxfr.org. L'occasion de parler PBR et Filmic Blender, avec des images d'exemple.

Maintenant que j'ai les effets volumétriques sur mon GPU, je vais me ré-attaquer au rendu de nuages.

jeudi 14 septembre 2017

Capture vidéo sous Linux

Comment faire une vidéo de son écran sous Linux ? Avec le vénérable ffmpeg, pardi. Alors, il y a pléthore d'options, mais l'approche la plus simple pour avoir une vidéo de qualité potable, c'est d'enregistrer en lossless en mode "ultrafast", sans exagérer sur le taux de rafraîchissement (30 images par seconde, c'est bien, mais 60 images par seconde, ffmpeg lutte). Puis, histoire d'économiser 25% d'espace, de ré-encoder derrière en mode veryslow.

ffmpeg -video_size 1280x1024 -framerate 30 -f x11grab -i :0.0 -c:v libx264 -qp 0 -preset ultrafast mavideo.mkv

ffmpeg -i mavideo.mkv -c:v libx264 -crf 0 -preset veryslow mavideo_opti.mkv

dimanche 10 septembre 2017

Mon rover sur Minmus

Arrivée du rover sur Minmus ! Je suis assez satisfait de mon lanceur, mes calculs de Delta-V étaient justes. Je suis également assez satisfait de mon rover, que j'ai pu accrocher à mon lanceur, entouré d'une coiffe aérodynamique du plus bel effet, dont je me suis débarrassé dès ma sortie de l'atmosphère, que c'est toujours quelques kilos de gagnés.

Bonne préparation de ma part pour une fois, les lumières, qui m'ont permis de descendre sur Minmus dans la soirée, et le satellite relais en orbite, puisqu'il s'agit exclusivement de sondes robotisées et que j'ai donc besoin d'un lien radio vers Kerbal. Sans les lumières, et sans le relais, cela me forcerait à me poser uniquement du côté éclairé de Minmus lorsque celui-ci fait face à Kerbal, ce qui limiterait sérieusement la fenêtre.

La vraie bonne idée, ceci dit, c'était de mettre des RCS sur le rover, ce qui m'a permis d'une part de le descendre sans difficulté de son module atterrisseur (aminmusisseur ?), et d'autre part de le remettre sur ses pattes lors des nombreux accidents consécutifs à ma conduite peu prudente sur terrain très glissant et gravité très faible (j'ai déjà cassé un panneau solaire).

Vous noterez l'esthétique insectoïde du véhicule (pas le bon nombre de roues, ceci dit).

Et la suite ?

Je me voyais construire une base complète sur Minmus, les étendues planes s'y prêtant particulièrement bien. Mais finalement, je pense que je vais me contenter d'une base "en morceaux", sans essayer de les recoller une fois là bas. C'est moins joli, mais tout aussi pratique, du moins dans mon approche "points de science".

L'idée est donc d'y envoyer plusieurs vaisseaux non-habités, contenant véhicules sur roues ou RCS, et matériel scientifique, en les posant pas trop loin les uns des autres. Puis, d'y envoyer une capsule avec juste quelques Kerbals et une armoire pleine de modules de stockage. Une fois les Kerbals arrivés, les envoyer se balader un peu partout faire moisson de données scientifiques, et repartir.

mardi 5 septembre 2017

La Kerbal International Space Station est complète. Pour le moment ?

J'ai amené ma KISS là où je voulais. N'ayant pas réussi à lancer le gros réservoir, j'en ai mis deux petits, ce qui est plutôt esthétique.

Voici les points intéressants que j'en ai retiré.

Tout d'abord, il a fallu choisir l'altitude et l'alignement. Mon altitude choisie de 300km fonctionne finalement plutôt bien. Pour la rejoindre, je peux lancer une fusée à peu près à n'importe quel moment, la mettre en orbite à 100km, et ensuite rejoindre la station facilement avec moins de 150 m/s de delta-v. Mon alignement est également plutôt pas mal: parfaitement aligné sur l'orbite de la lune, il décale de moins de 1° de l'orbite équatoriale. Il suffit donc de décoller plein Est pour la ravitailler. Et la delta-v acquise est typiquement la bonne pour partir ensuite n'importe où dans le système kerbollien (kerbollaire ?).

Ensuite, correctement concevoir chaque module à lancer. D'abord, un module de contrôle avec suffisamment de points d'ancrage, ensuite un couloir, par exemple, avec des panneaux solaires et tout plein de points d'ancrage, et enfin les modules que l'on désire, réservoirs ou laboratoires. J'ai d'abord conçu ma station dans le VAB, puis je l'ai séparée et sauvé chaque morceau séparément. Puis, à l'aide de ma fusée lunaire modifiée en véhicule autonome, lancé et ancré chaque module séparément.

À mettre absolument sur chaque module à lancer, des RCS judicieusement placés pour l'approche et l'ancrage, et des lumières placées vers l'avant pour y voir quelque chose lorsque l'on ancre du mauvais côté du soleil et qu'on y voit rien.

Penser également au point d'ancrage vers la station, et à la séparation du module et du véhicule qui l'y a amené. J'aime bien utiliser deux points d'ancrage face à face comme d'un découpleur, plus doux lors de la séparation, ce qui évite donc à la station de dériver. Cela laisse également un point d'ancrage supplémentaire, ce qui est toujours utile, par exemple pour changer plus tard l'arrangement de la station.

Ensuite, il n'y a plus qu'à balancer tout ça dans l'espace pièce par pièce. Je n'avais pas tout compris au tutoriel d'ancrage initialement, et il m'a fallu le faire plusieurs fois et chercher des tuyaux sur le net avant de bien comprendre. La partie que j'ai mise le plus de temps à comprendre était la phase intermédiaire de l'approche : une fois en mode "target" et à distance raisonable (quelques kilomètres de la cible), il faut freiner rétrograde complètement, c'est à dire moins de 0.1 m/s, puis se diriger vers la cible, accélérer un petit peu, et lorsque l'on s'approche freiner rétrograde une fois de plus jusqu'à vitesse nulle. Recommencer jusqu'à être suffisamment proche de la cible pour utiliser les RCS. En étant suffisamment précis, 2 manœuvres de ce type devraient être suffisantes, mais n'hésitez par à recommencer autant de fois qu'il faut. La partie que j'ai vraiment mis du temps à comprendre est cette danse entre le point target et le point rétrograde, et la nécessité de freiner complètement afin d'aligner parfaitement notre trajectoire.

Une fois en RCS, utiliser d'abord la rotation pour s'aligner sur les points d'ancrage, et ensuite la translation pour aller s'accrocher. Avec un peu d’entraînement, ça vient vite !

jeudi 31 août 2017

Ma nouvelle manette

Ça faisait longtemps que j'avais envie de m'équiper avec un contrôleur un peu plus sérieux, et le TMS carabiné que je me choppe en jouant à Euro Truck Simulator au clavier et à la souris m'en a donné l'occasion. Je me suis donc laissé tenter par une manette Afterglow Xbox One, et j'en suis fort satisfait.

L'installation a été un petit peu ardue : la manette n'était reconnue ni par le driver xpad de base sous Ubuntu 16.04, ni par le driver xboxdrv de base, ni par le driver xboxdrv bidouillé par mes soins. Finalement, j'ai fini par découvrir que la dernière version du driver xpad semblait avoir ajouté le support de la manette. Après une installation manuelle en 3 lignes, la manette était reconnue.

sudo git clone https://github.com/paroj/xpad.git /usr/src/xpad-0.4
sudo dkms install -m xpad -v 0.4
sudo modprobe xpad

Après avoir passé 30 minutes sur Euro Truck Simulator avec le contrôleur, tout ce que je peux dire, c'est que ça change la vie. Comme recommandé sur de nombreux forums, j'ai mis l'accélérateur et le frein aux gâchettes, la direction au joystick gauche, ainsi que la vue au joystick droit. Ensuite, j'ai mis les essuie-glaces sur A, les phares sur X, le régulateur de vitesse sur Y, les clignotants sur LB et RB, et bien sûr le klaxon sur le bouton central.

J'ai désactivé le retour de force, qui était un peu brutal : en effet, la manette vibrait en permanence au rythme du moteur. Ensuite, on se met bien au fond de son siège, et d'une expérience au clavier / souris plutôt fébrile, on passe à la plénitude. On accélère, on tourne tout en douceur (attention à configurer la direction non -linéaire pour avoir un meilleur contrôle), arrivé sur l'autoroute on met le régulateur de vitesse, et on se laisse porter.

Prochaine étape : voir si l'on peut configurer la manette pour Kerbal de façon satisfaisante.

mardi 29 août 2017

La Kerbal International Space Station (KISS)

Eh beh, faut être minutieux, pour connecter un véhicule de 5 tonnes à un autre véhicule de 5 tonnes tandis qu'on orbite à 1500 m/s. Mais c'est fait, j'ai connecté deux modules de ma station. Maintenant, il me reste à trouver comment amener le gros réservoir de 5 tonnes (à vide !) jusqu'ici.

dimanche 27 août 2017

Trésor

Un "work in progress" d'une animation de pièces d'or tombant dans un coffre.

Je me suis bien amusé à rendre les pièces. Probablement un peu trop de polygones pour ce que c'est, mais le rendu est agréable. Après avoir divisé de partout mon cylindre, j'ai remonté certaines cases, ajouté de la subsurface, et basta !

Ensuite, un matériau de type métal, couleur or, avec un peu de bump mapping histoire de lui donner un aspect moins lisse, et voici une belle pièce d'or prête à être jetée dans un coffre.

La suite est plutôt facile. Un coffre (très basique), un peu de physique, en l'on fait tomber moultes pièces là dedans. Deux coussins histoire d'habiller l'images, suivies de quelques heures de rendu, et voici le résultat.

La prochaine étape, c'est d'améliorer le coffre pour en faire plus qu'un bloc de bois évidé, par exemple en ajoutant des bandes de métal clouté.

dimanche 20 août 2017

Une autre vue depuis Mun

C'était une jolie vue, alors je vous la met. J'ai Sol en face et Kerbin qui se lève un peu à gauche, et ma fusée à droite, depuis le pôle de Mun.

Cette capture d'écran a été prise lors de ma 3ème mission lunaire (munaire ?), et ce n'est toujours pas de la tarte. Mon respect pour Neil Armstrong, qui était déjà grand, s'en trouve d'autant augmenté, faire alunir une fusée, c'est quand même vachement compliqué.

Je continue de faire des missions lunaires les unes après les autres, pour engranger des points de science, et m'entraîner à être plus constant. La principale difficulté de la construction d'une base lunaire, est qu'il faut arriver à alunir toujours au même endroit !

vendredi 18 août 2017

Postgres et performances de l'indexage

Je suis en train d'effectuer un changement de types sur des grosses tables partitionnées (jusqu'à 1 TB par groupe de tables), et je découvre quelques aspects intéressants des performances de ce genre d'opérations. Aujourd'hui, parlons des performances de l'indexage.

Pour illustrer, voyons ce script qui créé une table avec 3 colonnes d'entiers, bytea et texte. Ajoutons 10.000.000 de lignes, et indexons chaque colonne à son tour.

create table t(f1 int not null, f2 bytea not null, f3 text not null);

insert into t
select i, i::text::bytea, i::text
from generate_series(1, 10000000) i;

create index t1 on t(f1);
create index t2 on t(f2);
create index t3 on t(f3);

Voyons à quelle vitesse chaque opération d'indexage s'est effectuée.

EntierByteaTexte
7 s18 s40 s

Alors, qu'indexer une colonne d'entiers soit plus rapide qu'une colonne de texte, ça ne me paraît pas choquant. En revanche, que le texte prenne plus de 2 fois le temps du binaire, voilà qui est surprenant !

Je n'ai pas d’explication à ce phénomène. Cependant, l'on notera que la différence principale entre le binaire et le texte est la présence d'un encodage. Celui-ci a certainement un impact lors de la création de l'index. Peut-être que Postgres revérifie que chaque chaîne est conforme à l'encodage ?

La bonne nouvelle, c'est qu'une fois l'index créé, le scan est aussi rapide pour les deux colonnes. Pas de quoi s'inquiéter, donc, mais à savoir lorsque l'on a besoin d'indexer quelques milliards de lignes avant Lundi matin.

Justement, parlons-en. Comment donc mettre à jour et indexer notre table efficacement ? Une approche qui fonctionne bien sur les machines multi-cœur est de supprimer l'héritage pour chaque table enfant, supprimer les index, et mettre à jour la table. Une fois l'opération complétée pour chaque table enfant, l'on peut recréer les index en parallèle : en effet, il est possible de créer des index en même temps sur différentes tables, et l'opération étant principalement limitée en CPU, l'on se retrouvera avec un temps divisé d'autant. Puis, l'on peut rattacher chaque sous-table à la table parent, et c'est reparti. L'on pensera à analyser les tables, car la mise à jour d'un type de colonne efface les statistiques.

Alunissage !

Enfin, après plus de 20 heures à jouer sur Kerbal Space Program, j'ai réussi à faire alunir un Kerbal, et à le faire revenir sur Kerbin. C'était pas de la tarte, et il m'a fallu m'y reprendre à plusieurs fois pour réussir la phase finale de l'alunissage, qui est quand même assez technique.

J'étais aussi très limite question carburant, et il m'a fallu optimiser mon retour aux petits oignons. Hors de question de freiner en arrivant sur Kerbin, c'est donc mon bouclier thermique qui a tout pris, en protégeant mes armoires pleines d'instruments scientifiques.

Au final, c'est une belle moisson, avec 332 points de science gagnés dans cette mission. En particulier, le retour d'un échantillon de sol lunaire m'a rapporté 120 points à lui tout seul.

Maintenant, il s'agit d'y retourner, avec peut-être un peut plus de carburant pour éviter les pics de stress, un "science lab" pour engranger les points, et peut-être mettre en place les prémices d'une base lunaire ?

mercredi 16 août 2017

Des coussins

Je génère des coussins ! C'est particulièrement ludique, puisque l'idée présentée dans ce tutorial vise à créer un coussin en gonflant une structure de type tissu avec un champ de force. Le tutoriel génère un coussin rectangulaire, mais rien n'empêche de tenter d'autres formes, comme ce coussin rond ou ce coussin cylindrique.

Tout cela est fort amusant, rend à toute allure, et me fournit une inspiration bien venue pour ma prochaine scène (que j'espère arriver à animer, cette fois ci...).

samedi 12 août 2017

Plus de couloir

Mon couloir, un poil plus meublé. En plus des appliques, j'ai rajouté ma table. Le tout ne rend pas trop mal, mais il a fallu de la patience, avec un temps de rendu de 40 minutes pour avoir suffisamment de samples pour éviter trop de lucioles et trop de bruit. Hors de question d'en faire une animation, donc.

L'image telle qu'elle est me plaît, mais il manque sans aucun doute quelque chose sur le mur du fond. Une porte entrouverte, peut-être ?

mercredi 9 août 2017

Modélisation d'une enclume par BlenderGuru

Excellent (comme toujours) tutoriel du Blender Guru sur la modélisation d'une enclume. Il passe en revue plusieurs techniques de modélisation, et en particulier comment bien utiliser les opérations booléennes.

Autant, avec un raytracer comme PovRay, les booléens sont nos meilleurs amis, car l'on parle de formes géométriques mathématiquement définies (une sphère, un plan...), autant, quand il faut travailler avec des formes définies à partir de petits polygones, les booléens font un peu n'importe quoi, et les faces partent dans tous les sens. Et ça, explique Andrew Price, ça casse ensuite tout plein de choses, en particulier le modificateur subsurface, qui a vraiment envie de travailler avec des quadrilatères. Il faut donc corriger l'opération booléenne pour redresser les polygones. Et ça, ça m'avait complètement échappé jusqu'à maintenant.

mercredi 2 août 2017

Un couloir

Un rendu d'un couloir, sol en bois et murs couverts d'une belle peinture verte, appliques murales du plus bel effet.

Maintenant, c'est bien l'image que je cherchais à obtenir, mais il y a encore beaucoup trop de lucioles pour le nombre de samples, et donc le temps de rendu. Je voulais rester dans un budget d'environ 1 minute par image, et me voilà déjà à 4m30 pour afficher un couloir tout nu...

mercredi 19 juillet 2017

Coucou le revoilou !

Une vielle connaissance refait surface : voici Léon, plus humide que jamais, dans un petit cadre que je viens de modéliser.

La modélisation du cadre ne m'a pas donné particulièrement de fil à retordre : formes géométriques simples, un peu de bevel, et c'est bon. Pour les matériaux, j'ai utilisé les suspects habituels : mon matériau de bois pour le cadre, un diélectrique de type papier pour le fond, et un diélectrique prenant l'image en entrée avec un peu de brillance pour donner un effet photographique. L'image, évidemment, est tirée de mon rendu de "Léon le philosophe".

À noter que j'use et abuse du paramètre de texture d'entrée "object", qui a l'avantage de fournir des coordonnées complètement isotropes, pour peu que l'on se souvienne d'appliquer les transformations (Ctrl-A). Pour des matériaux unis, de type bois, métal, plastique, et ainsi de suite, c'est très pratique. Il faut juste brancher les coordonnées de la texture sur un nœud de mapping afin de réajuster l'échelle.

En revanche, pour les images, il faut bien entendu créer des coordonnées UV correctes en dépaquetant l'objet.

Comme l'on peut se l'imaginer, le rendu ne pose aucune difficulté : 5 secondes de rendu à 250 samples. Et même à 24 samples, la qualité est déjà au rendez-vous.

J'ai l'intention d'utiliser ce tableau dans ma prochaine scène, où il décorera le mur d'un couloir.

lundi 17 juillet 2017

Un fidget spinner qui tourne !

Histoire de voir à quoi ça ressemble quand ça tourne, j'ai animé la rotation de mon fidget spinner. Le motion blur améliore grandement la qualité du rendu, et on obtient vraiment l'effet stroboscopique causé par une caméra. J'ai également lancé un rendu où le motion blur prend effet sur l'ensemble de l'intervalle, pour tenter de faire quelque chose de plus similaire à ce que voit l’œil.

dimanche 16 juillet 2017

Gaming

Après un long sevrage, je me remet à jouer, au risque d'aggraver mes TMS, mais bon, on a rien sans rien. J'ai donc profité des soldes sur Steam pour regarder ce qui pouvait se jouer sous Linux, et je me suis offert:

Kerbal Space Program

Voici un jeu qui fait un tabac chez les fanatiques de la conquête spatiale. Construisez votre fusée, et balancez là dans l'espace. C'est suffisamment réaliste pour être rudement complexe, mais également bourré d'humour, et généralement très bien pensé. Je maîtrise la mise en orbite, mais les rendez-vous spatiaux, ainsi que les alunissages, sont de sacrés défis.

Euro Truck Simulator

Une simulation de poids-lourd, ce n'est pas nécessairement ce qui semble le plus sexy, et pourtant, ce jeu est très prenant. Reproduisant plutôt fidèlement les routes d'Europe, il faudra remplir des contrats pour amener marchandises d'une ville à une autre, avant de pouvoir enfin se payer son camion et monter son entreprise de logistique. Météo, route de nuit, amendes pour excès de vitesse ou oubli des phares, c'est finalement très prenant, et un très bon déstressant: rien de tel qu'un petit tour de périph' à 3 heures du matin pour redevenir zen. À noter cependant que l'on découvre que faire une marche arrière avec une remorque, c'est extraordinairement compliqué.

Cities : Skyline

Digne successeur de SimCity, Cities : Skyline reprend exactement les codes du genre, où il faut placer zones résidentielles, commerciales et industrielles, routes et transports en commun, services et bâtiments uniques, mais permet un design en vraie 3D avec routes courbes et voies souterraines et surélevées, et pousse le vice jusqu'à simuler chaque citoyen, qui partira de son logement tous les matins pour aller à l'industrie qui l'emploie, et ainsi de suite. En plus, c'est vraiment très, très joli. À noter que les fous du jeu, sur Youtube, sont nettement plus intéressés par le mode argent illimité, qui leur permet de créer la ville de leurs rêves directement. Pour l'instant, je reste sur le mode standard.

Je viens également de découvrir Factorium, où l'on doit construire à partir de rien une usine complètement automatisée sur une planète hostile pour pouvoir construire une fusée et s'échapper. Savant mélange de "The Incredible Machine", tower defense, et casse tête, je suis très tenté... Mais finissons d'abord ceux que j'ai en stock !

vendredi 14 juillet 2017

Un fidget spinner

Si vous avez suivi un peu mon feed Twitter (c'est sur la droite, là), vous savez que j'essaie de modéliser un fidget spinner. Et sauf à vivre dans une grotte, vous avez probablement qu'un fidget spinner est un petit objet à vocation anti-stress vaguement hélicoïdal, qui tourne, et qui ne fait pas grand chose d'autre. Inutile, et donc indispensable. Cette mode semble sur une pente descendante, mais ce n'est pas une raison pour ne pas s'éclater avec Blender.

Après de longues batailles pour modéliser la chose correctement, j'ai fini par trouver une approche en commençant par un cylindre, puis en faisant un trou dedans, puis en utilisant des bouts de cylindres pour les rejoindre. En particulier, je tente de créer suffisamment de polygones afin que le modificateur "bevel" (on peut dire chanfrein, qui est un mot très joli) fonctionne et que je puisse obtenir l'effet d'arrondi qui m'échappais jusque là.

Une fois sur la bonne piste, il a été facile de rajouter les poids et l'axe, et de donner un joli matériau rose à paillettes. Et voici le résultat !

J'ai quelques idées pour intégrer le bidule à une animation un peu sympa, probablement un poil psychédélique sur les bords. J'y travaille !

jeudi 22 juin 2017

La qualitay

Les artefacts de compression sur ma vidéo du cube dans la piscine étaient hideux, et je pensais que c'était du au format non standard en 540 lignes. J'ai donc tout régénéré en 1080 lignes, et ce n'est pas mieux :

Alors, je pense que ce qui coince, c'est qu'il y a finalement beaucoup de bruit à la surface (ou au fond?) de ma piscine, et que ça se compresse très mal. Youtube, qui doit avoir des limites de bitrate, encode donc tout ça de manière cochon, et c'est moche. Alors, pour le fun, j'ai fait des tests de rendus avec différentes valeurs de samples: 24, 60, 125, 250, 500, et 1000. Voici le résultat :

La qualité de l'eau bénéficie clairement d'un grand nombre de samples. Bon, après, à 15 minutes par image avec 1000 samples, je ne vais pas sortir une vidéo à ce niveau de qualité, mais le cœur y est !

À noter, l'image avec 1000 samples est un PNG de 3.1 MB, contre 4.5 pour l'image avec 24 samples. Encore une preuve que c'est du bruit, et que ça se compresse très mal !

dimanche 18 juin 2017

Il ne faut pas glisser dans la piscine

J'expérimente avec la simulation de fluide, et c'est quand même assez chouette. L'on découvre quelques trucs, quand même. Tout d'abord, le matériau : le matériau "glass" fonctionne suffisamment bien pour un petit volume d'eau claire, là où on n'aura besoin d'effets volumétriques, pas encore supportés par mon GPU (peut-être avec Blender 2.79 cet été ?).

Ensuite, l'environnement : un petit volume d'eau (par opposition à un océan) étant très transparent et pas très agité, en isolation, on ne voit pas grand chose. Il faut donc fournir un environnement qui permette, par transparence et par réflexion, de voir les mouvements de l'eau. Pour ma piscine, j'ai rajouté des carreaux colorés, qui fonctionnent très bien.

Enfin, parlons performances. J'ai découvert avec horreur que le motion blur, quoique très joli, prenait un temps fou à rendre. Mais vraiment un temps fou. C'est à dire, une image en 15 secondes contre une image en 15 minutes. Alors je vous montre quand même ce que ça donne avec et sans, mais pour ma vidéo, je me contenterai de la version sans motion blur. Avec la vague de chaleur qui s'abat sur le pays, les ventilos de ma pauvre machine sont à fond, et j'aimerais la ménager un petit peu.

Voici la version finale de la vidéo. Je me suis contenté de 30 images par seconde et de 720 lignes, mais ça rend déjà pas mal.

samedi 10 juin 2017

Bzzz !

Voici le début de la modélisation de ma libellule robotique. Pourquoi robotique ? Parce que c'est nettement plus simple. Si je veux modéliser une libellule organique, on va bien voir que c'est moche. La modélisation tiendra peut-être à peu près, mais les matériaux, la texture du corps, des yeux, des ailes, tout cela sera très certainement hideux, parce que je n'ai pas les compétences, et je ne vous parle même pas de l'animation. Alors que si je modélise un robot libellule, il est alors naturel que les ailes bougent d'une manière plus simple, que le corps soit complètement métallisé, et que le modèle soit plus simple. Là où ça devient intéressant, c'est qu'une fois la contrainte posée, c'est un robot, cela peut être un catalyseur pour l'inspiration. Que mange une libellule robot ? Où vit-elle ? Dans un environnement industriel ? Quelles autres animaux robotiques peuplent les étangs d'huile de machine ?

Je dois maintenant ajouter la tête et les pattes de la bestiole. Je pense que cette nuit, je vais rêver de mandibules.

lundi 5 juin 2017

Bureau - L'animation

Enfin, après un week-end à faire du rendu, voici l'animation du bureau ! Bon, question mouvement, c'est limité, mais les reflets et réfractions dans le verre sont intéressants, ainsi que le balancier (on dit balancier, quand ça tourne sur soi-même ?). Comme prévu, il a fallu environ 30 heures pour rendre le bazar, même pas en 1080.

C'est dû en grande partie à la luminosité très contrastée et aux zones très sombres, qui affichent énormément de bruit sans une augmentation sérieuse du nombre de samples. Mais je voulais faire une étude de modélisation d'objets courants, et ça a donné quelque chose qui correspond amplement à mes attentes.

Maintenant, j'aimerais bien modéliser une scène un peu plus dynamique, avec jeux de caméras et effets de vitesse, mais je ne suis pas sûr d'avoir trouvé la scène qui me permettra de faire tout cela avec mes maigres compétences.

mercredi 31 mai 2017

Bureau - Rendu haute qualité

J'y ai mis tout ce que j'ai pu : haute définition, 100 samples (carrés, hein, donc en fait c'est plutôt 10000), et le résultat est à la hauteur, l'image est propre. Après 1 heure à faire chauffer le GPU.

Je vais maintenant faire le rendu d'une petite animation, qui fera tourner l'horloge, et avancera la caméra doucement, mais ça ne sera pas à ce niveau de qualité.

Temps de rendu

Andrew Price de Blender Guru a publié il y a quelques jours une vidéo qui présente 18 techniques pour accélérer le rendu avec Blender Cycles.

Ça tombe bien, la scène sur laquelle je travaille est particulièrement gourmande. Un rendu acceptable en HD prend 15 minutes. Pour en faire une animation de 10 secondes à 60 images par seconde, c'est 150 heures de rendu, et 10£ sur la facture d'électricité. Alors, tentons d'appliquer les techniques de Blender Guru à mon image. Voici le rendu de base, en 720 lignes pour passer moins de temps (tiens, la résolution, non mentionnée par Blender Guru ! Nous y reviendrons). Comme vous le voyez, tout ne s'applique pas, mais il n'y a pas de magie : chaque image est différente, et réagira plus ou moins bien à chaque technique.

Voici mon image de base, dont le rendu prend 1m53, avec beaucoup de bruit dans l'image. Commençons.

1 - Réduction des rebonds (light bounces)

Par défaut, le nombre maximum de rebonds est de 128. La réduction jusqu'à 5 ne donne pas grand chose, et finalement la réduction à 2 permet d'économiser quelques secondes : l'on passe à 1m37s. En revanche, le verre devient opaque ! Généralement une bonne technique, mais pas applicable dans mon cas, où j'ai besoin des rebonds...

2 - Utiliser les portails

Cette technique n'est applicable que pour les scènes d'intérieur éclairées par une fenêtre, par exemple. On zappe.

3 - Utiliser le GPU

Déjà fait ! Sans le GPU, la scène met 7m05s à être rendue. Y'a pas photo.

4 - Utiliser la taille optimale de tuiles

Mes rendus GPU utilisent généralement des tuiles 256x256, mais c'était l'occasion d'utiliser du 512x512. Résultat : 1m30s ! Toujours bon à prendre.

5 - Réduire les samples

En l’occurrence, plutôt les augmenter : il y a bien trop de bruit dans mon image. Voyons avec 48 samples : argh, 6m26s ! Et avec 36 : 3m31. Je vous ai mis l'image de base, la 36 et la 48 les unes après les autres. La différence de qualité est visible, et la 48 vaut le coup.

6 - Denoising

Celle là va de pair avec la précédente : peut-on atteindre la qualité 48 en enlevant le bruit de la 36 ? Pour ma scène, très contrastée, la réponse est non : le bruit que je veux voir partir (le fond du bureau, le fond de l'horloge) reste, mais les beaux reflets de ma lampe sont atténués ! Pas pour moi, celui là.

7, 8, 9 - La version de blender, le système d'exploitation, le clamp

Je passe rapidement sur ceux là : j'utilise la dernière version stable de Blender disponible, je suis déjà sous Linux, et je n'ai pas de problèmes de lucioles.

10 - Les caustiques

Voici quelque chose qui va provoquer des différences ! Voici la scène en 36 samples, avec et sans caustiques.

Alors, ça prend moins de temps, 3m02s au lieu de 3m36s. Mais qu'est-ce que c'est moins joli ! L'image est plus sombre, et les couleurs moins intéressantes. Plutôt normal, pour une scène où les effets de transparence et de réflection, métallique en particulier, sont primordiaux.

11, 12 - Instances, subdivision

Ma scène est suffisamment simple pour que ne souffre pas de problèmes de mémoire, et la faible profondeur de champ ne permet pas une utilisation de la subdivision adaptive.

Le reste

J'ignore le reste, qui ne s'applique pas à ma scène, qui n'a ni matériaux volumétriques, ni système de cheveux.

Conclusion : Comme quoi, il faut essayer, comparer, voir ce qui marche et ce qui ne marche pas... Je garde l'augmentation de la taille des tuiles, mais je continue à penser que l'image bénéficie vraiment des 48 samples. Reste les dernières variables d'ajustement : au lieu de full HD, si je me limite à 720 lignes, et que je réduis à 30 images par seconde, et que je me contente de 5 secondes d'animation, c'est 15 heures de rendu.