perspectographe.fr

journal de recherches

Aberrations chromatiques,

Tags : apophorisme

C’est l’angle de vue qui définit la clarté ; trop de biais, on diffracte. Les lois sont des émergences, des découvertes, car je ne suis pas le dessinateur, mais le défricheur. J’expérimente et trouve les limites du système que je pense imaginer, et appelle cela “conception”. Mais de concevoir s’agit d’énoncer, agencer, montrer. Concevoir, impossible, est accueil d’émergences, de conséquences, quand on pense agir en respect de causes.

Abraham Rationnel Abraham Rationnel

Pie-aillements,

Tags : oiseaux encore

Quelques pies se chamaillent par ma fenêtre, se crachent dessus en petits groupes et j’essaie de me concentrer malgré tout. Quand toutes les pies sont arrivées, c’est la fête d’anniversaire, il y a de la musique forte, de l’alcool, et celles qui s’adressaient “Ta gueule avec tes ailes rabourgries” plus tôt se bécotent en grignotant quelques chips ou vers dodus.

Visions de netteté ,

Tags : ciels

Les taches d’Airy sont une vue géométrique de la netteté qu’on trouvera ensuite. Déformés, c’est imparfait, mais concentriques, les cercles annoncent de belles vues à venir.

disques d'Airy disques d’Airy

La vision subjective et la séparation des sens - Crary,

Tags : regard, fatigue, crary

Un court passage de Techniques de l’Observateur, traduit de l’anglais :

En cherchant à effleurer l’essence et l’immédiateté de ce qu’il appelle le sens intime, Maine de Biran distille et floute l’identité de l’interiorité même qu’il cherche à affirmer. Il emploie le mot coenésthèse pour décrire « la connaissance dans l’instant de la présence du corps dans la perception de chacun » et « la simultanéité d’une composition d’impressions et de sensations provenant de différentes parties de l’organisme ». La perception visuelle, par exemple, est indissociable des mouvements et spasmes musculaires de l’œil et de l’effort physique permanent qu’implique le maintien du focus sur un objet, ou le simple fait de garder l’œil ouvert.

Pour Maine de Biran, l’œil, commme le reste du corps, devient une contingence physique présente et obstinée, demandant l’exercice permanent d’une force et d’une activité. En renversement du modèle classique de l’appareil observant comme pure fonction de transmission, les organes sensoriels de l’observateur et leur existence physique sont invariablement liés à l’objet qu’ils agrippent. Sept ans avant que Gœthe ne publie le Fahrenlehre, Maine de Biran explique que notre perception de la couleur était déterminée par la tendance à l’épuisement du corps, l’oscillation d’une fonction physiologue au fil du temps, et que le processus même de se fatiguer est en fait un processus d’observation de cette fatigue.

Quand le regard se fixe un certain temps sur une couleur, avec sa façon se se fatiguer, un mélange se formera de cette couleur et d’autres nouvelles, et au fil du temps la couleur d’origine ne sera plus présente dans ce mélange.13

13 Maine de Biran, Influence de l’habitude sur la faculté de penser, 1803

Jonathan Crary, Techniques of the Observer, MIT Press

Les citations de de Biran sont re-traduites de l’anglais bien que son texte d’origine soit en Français.

çatourne Çatourne

Nettetés,

Tags : photo, scope

Filmé au téléscope, le lila d’en face [en face loin, en face difficile à voir], tremble et pique l’image d’artefacts. Une fois combinées, quinze secondes de vidéo forment un film plan comme plan film, aux contrastes saisissants. Quelle joie !

sureau Sureau ? Lila ?

Des codés moirés,

Tags : photo, lumière

Quand on pose une grille sur l’autre, c’est un moiré… Quand on voit un motif, on en cherche la cause… Décodage impossible d’envies de logiques

Code_n Code_n

Code_1 Code_1

Code_4 Code_4

111001111000001
111011000011000
000100011100011
111100101110111
001111100000110
001111000010000
011100111110000
000011110011111
000011111100011
110000111111101
101100000001111
110

Ramenés en octets

11100111 10000011 11011000 01100000 01000111 00011111 10010111 01110011 11100000 11000111 10000100 00011100 11111000 00000111 10011111 00001111 11000111 10000111 11110110 11000000 01111110

Puis en ascii

��`G�s�DŽ��LJ��~

Évidemment !

Plaquage de capteur,

Tags : ciels

Tous les adaptateurs pour logitech c270 vers oculaire 1.25” trouvés sur internet souffrent de déplacer le capteur trop loin de l’ouverture si l’on souhaite l’utiliser sans lentille, et cela rend la mise au point compliquée.

Le support, imprimé Le support, imprimé

Voici un adaptateur tout simple. Il permet d’enlever entièrement la coque de la caméra, et de la caler dedans pour avoir au centre le capteur nu. Il faut ajouter deux points de colle, ou de ruban adhésif, sur les deux surfaces qui seront en contact avec le plastique. L’espacement de ces deux points de contact prend en compte l’épaisseur des composants présents sur le PCB.

Une vue du fonctionnement Une vue du fonctionnement

Après une nuit de test, il joue son rôle.

C270.blend, 799kB et C270.stl, 28kB

Le voici monté Le voici monté

Saccade technique,

Tags : machine

Les essais de couleur produisent un curieux déplacement, ces bleus profonds et noirs qui transparaissent transforment l’objet jusqu’ici technique en objet poétique, ou machine-pensée plutôt que machine-appareil, machine à rêver même. L’image ci-dessous est symptômatique de cette translation, je m’en rends compte pendant sa mise en ligne :

Machine pensée

Pour la première fois, j’ajoute ici une image de la machine en tant qu’objet qui me plaît, auquel je prête des qualités d’idée et d’esthétique, plutôt qu’en tant que prototype technique en mouvement. Je prends la photo de l’objet hors de son usage prévu, comme un objet beau. Je prends la photo de l’objet chez moi, dans une petite serre en verre que nous avons construit à deux, juxtaposé à un citron que j’ai fait sécher avec attention pendant six mois environ, parce que l’idée de le voir à cet endroit me plaît.

L’objet s’adoucit, se détache de son statut de work-in-progress (ou working-progress ici), et devient objet rêvant. Une étape nécessaire pour détacher l’attention quelques temps de son dessin technique, encore inabouti, et la porter vers son dessein.

Simondon du désert / Simondon of the desert from HORS ŒIL EDITIONS on Vimeo.

Bleu nuit, nuit noire,

Tags : machine

Après les tests de forme, structure, dimensions c’est au tour des couleurs d’être tentées et teintées.

Bleu nuit, lumière du jour Bleu nuit, lumière du jour

Petits outils célestes,

Tags : ciels

Un masque de Bahtinov simple à adapter,

Bahtinov Bahtinov
Bahtinov, source Bahtinov, source
Bahtinov, source Bahtinov, source

Et un support de téléphone en deux parties, simple lui à imprimer :

Support Xperia Support Xperia
Support Xperia, source Support Xperia, source

Sources Blender : BAHTINOV_MASK.blend, 667kB

XPERIA_MOUNT.blend, 704kB

Libres adaptations de https://www.thingiverse.com/thing:1134273 (par “falconphysics”, CC-BY-SA) et https://www.thingiverse.com/thing:43581 (par “hansit”, CC-BY-SA)

Les deux adaptations sont soumises à la licence la plus permissive possible vis à vis de leurs licences d’origine.

Let's bring garbage collection to media uploads,

Tags : web, architecture

Traditional content websites allowing rich text editing chronically suffer from a never-ending media ingestion syndrome. Knowing when to delete an asset is not trivial if not tackled from the beginning of the lifecycle of an application.

I’ve seen multiple approaches in the wild, and tried (too late) to add garbage collection to projects mid-way. Here’s what I encountered, from the least to the most certain :

  • Notifying the user on a media page, derived from a filesystem, that an image might be suitable for deletion.
  • Keeping track of post thumbnails, page headers, and deleting those images when the parent content is deleted. When rich text comes into play, this is inefficient.
  • Periodically running a job whose task is to compare the list of images present in the filesystem with a list of images that should be reachable, according to analysis of various post types and content types.

Let’s define “media” as “anything that isn’t directly text, but referenced inside of it”.

Those approaches range from ineffective to dangerous. What would be really nice would be to keep track of every media uploaded, its kind, and a reference count of its uses. Inserting/Updating a container datatype would run an asset delta calculation, to track newly used media, and newly unused media, updating their respective reference count.

This would bring the benefit of having a consistent media library, allowing to show where and how a specific asset is used through the site.

Then, every media dropping to zero could be collected after some time. Or some could be marked uneligible for collection, and stay in the media library until they bitrot.

Those requirements would be quite trivial to implement iff we have a total control on the various editing widgets on the site, consistent data structures, and content -> asset delta routines are kept up to date. Ideally, content insertion and updating should fail if the content -> asset delta routine produces a wrong result. Known and hidden sources and results could be used.

Décentrement à 77,

Tags : machine

La construction correcte La construction correcte, tant en nombre d’objectifs qu’en terme de dimensions. Nous avons pu utiliser les feuilles de bois percées à 150mm il y a trente ans, par un beau hasard.

150mm de diamètre extérieur, c’est petit pour un système optique qui nécessite d’avoir 77mm entre la sortie d’objectif (ou son entrée, puisqu’il est idéalement sans épaisseur) et le capteur (un capteur nu de logitech c270).

Cette contrainte vient de la réutilisation de matériaux précédents (les feuilles de bois), et, plus trivialement, de la nécessité de produire nous-mêmes sans décupler d’efforts matériels ces pièces. L’imprimante 3D que nous utilisons est à son maximum lorsqu’elle trace un cercle de 150mm. J’ai pu monter jusqu’à 160 de manière hasardeuse, mais aucune impression n’a pu terminer. 154mm semblait raisonnable, mais avec un bâti de 4mm d’épaisseur, on n’obtient que 71mm de l’intérieur au centre optique. Cela ne règle donc rien.

Bâti, capteur Bâti, capteur

De plus, le capteur lui a une épaisseur de 4mm à la zone qui nous intéresse. La protubérance noire est un micro, qui sera déssoudé pour l’occasion. Les LEDs présentes sur le PCB ont été enlevées pour ne pas créer de pollution lumineuse.

Delta

Une fois cela pris en compte, on arrive à un delta de 8mm entre la distance focale désirée pour une ouverture de 0.3mm par oeil et celle obtenue en pratique. À cette échelle, c’est crucial.

Beaucoup d’essais ont donc eu lieu, de couper les hémisphères en tranches pour pouvoir les imprimer en plus grand, mais en vain. L’ajout de complexité de construction est absurde.

Nous avons donc, vendredi 21, jour de l’été, eu cette idée : il suffirait de décentrer le support du capteur pour avoir un centre optique correct, relatif à un oeil au moins. L’idée de centre est de toute manière très artificielle lorsqu’on a autant de sources.

Décentrement Décentrement

La prochaine étape sera donc le dessin d’un support à capteur, ou plutôt d’une famille de supports à capteurs, permettant d’en positionner un ou deux, côte à côté pour une vision binoculaire, ou dos à dos pour une vision panoptique, et cela de manière assez simple pour être rapidement amovible.

Support Un premier croquis

Hier soir jupiter,

Tags : jupiter

On ne sait plus vraiment, à ce moment, ce que voir signifie. Voir devient incertain, affaire de sensation, de l’impression d’une image plutôt que d’une image, l’odeur de la sauge sans en voir le pied… Étrangement, les modes de tramage deviennent là une représentation fidèle de ce que l’on sent voir.

Jupiter et ses lunes Jupiter et ses lunes, une manque, et une impression de coloration rouge, une impression de la reconnaître, une évidence du besoin de savoir voir pour interprêter. Ce n’est donc pas une mauvaise photo, mais un bon dessin..

Il y a tellement peu à voir qu’il faut sans cesse combler les vides, inventer de l’image avec les yeux, combattre les phosphènes qui dansent devant l’image tremblante.

Une routine de rendu de pages destinées à l'impression via Vue,

Tags : vuejs, impression

Nous avons souvent eu besoin de générer des médias paginés destinés à l’impression (d’abord via wkhtmltopdf, utilisant une version figée du moteur de rendu Webkit), puis via PhantomJS (utilisant Chrome headless), puis enfin, actuellement, via Puppeteer, nous assurant des mises à jour fréquentes de Chromium.

Il s’est avéré, d’expérience, plus simple de simuler des directives de layout (gestion des sauts de page, gestion des tailles de page, des marges tournantes) en concevant des composants dédiés qu’en utilisant les directives CSS correspondantes (@page, page-break, etc.). Malheureusement, même Chrome qui semble poussé vers la génération d’imprimé est encore très fragile dans son interprêtation de page-break.

Lab212 - rendu d'un projet prêt à être imprimé Lab212 - rendu d’un projet prêt à être imprimé

Vue fut une belle surprise en ce sens, en réduisant drastiquement la quantité de code nécessaire à répliquer ces directives CSS, tout en créant une structure agréable au travail de l’imprimé.

Ainsi, notre séquence de pages ci-dessus s’exprime de cette manière :

<page v-for="(page, index) in pages">
  <page-inner :index="index" total="total">
     <page-fragment 
        v-for="fragment in page.content"
        :fragment="fragment"
        @rendered="renderStep"/>
  </page-inner>
</page>

Cependant, les contenus du site ne nous proviennent bien sûr pas sous forme paginée. La conversion se fait, dans cet exemple réduit, au niveau du composant hébergeant cette séquence de pages.

/* Un utilitaire adapte le projet à une séquence ayant du sens en imprimé */
import { transformProject } from './transformers';
import { MAX_A4_INNER_HEIGHT } from './layout/constants';

export default {
  props: {
    project: {},
  },
  data() {
    return {
      pages: [[]],
      currentPage: 0,
      contentChunks: [],
    };
  },
  computed: {
    contents() {
      return transformProject(this.project);
    },
  },
  methods: {
    /* layout/0 */
    /* renderStep/0 */
  },
  async mounted() {
    this.layout();
  },
};

On observe donc que chaque fragment de page (rendu par un composant différent selon son type) émet un évènement “rendered” après son rendu. Cela permet d’attendre des ressources externes (images, etc.) et d’être certains de leur chargement (et donc dimensionnement) sans risquer de créer de course de données ou d’effectuer une étape de rendu trop tôt. Le composant “Fragment de page” n’est donc pas plus complexe que cela :

 <component :is="getComponentType(fragment)" :fragment="fragment" @stable="$emit('rendered')"/>

Cette flexibilité permet d’implémenter layout/0 et renderStep/0 d’une manière très simple :

Attendre que Vue ait terminé son cycle de rendu. Sélectionner l’élement DOM correspondant à la page courante dans le flux de page.

S’il possède du contenu en débord, ajouter une page, supprimer de la page courante son dernier fragment, et l’ajouter à la page fraîchement ajoutée. Incrémenter le compteur suivant la page actuelle.

Sinon, il suffit pour chaque composant d’attendre qu’il émette rendered, ce qui appelle renderStep et place le prochain fragment.

{
/* data, computed, etc. ...*/
async layout() {
  this.contentStash = this.contents.slice(0);
  await new Promise(resolve => this.$nextTick(resolve));
  this.renderStep();
},
async renderStep() {
  await new Promise(resolve => this.$nextTick(resolve));
  const wrapper = this.$el.querySelectorAll('.page-inner')[this.currentPage];
  if ((wrapper.getBoundingClientRect().height) > MAX_A4_INNER_HEIGHT) {
    this.pages.push([]);
    this.contentStash.unshift(this.pages[this.currentPage].pop());
    this.currentPage += 1;
    this.renderStep();
  } else if (this.contentStash.length > 0) {
    this.pages[this.currentPage].push(this.contentStash.shift());
  }
}};

Cette simplicité d’implémentation tient à Vue, qui permet ici de contenir l’état nécessaire à implémenter cela sans générateurs, ni continuations, etc. Le composant enveloppant la séquence est responsable de garder trace des fragments placés, de la page courante, et de l’état du déroulé.

Bien entendu, l’implémentation ci-dessus ne termine pas si un fragment lui-même est plus grand que la zone utile de contenu. Il est très simple d’ajouter la logique nécessaire à cela, ou de s’assurer de cette pré-condition directement via les styles du fragment.

Vers des visions,

Tags : machine, anti-photographie

Verde Visions, vers des visions, c’est peut-être là l’objet de recherches sur les modes de captation, devenant toujours malgré eux modes de lecture. Lorsque la technique photographique se confond avec photo-réalisme, c’est de l’établissement d’une vision standard par la standardisation d’une vision qui se fait.

À voir

À voir des visions, avoir des visions, halluciner, mal-voyant, rêveur pour irréaliste, le champ lexical que l’on applique à l’aliéné - au mis-à l’écart laisse entre-voir la cause de son renvoi de l’autre côté du diaphragme - un défaut de vision. Si le révélateur amplifie la réaction du substrat photo-sensible, avoir une révélation indique un bousculement.

À vivre

C’est donc à faire de regard