samedi 26 mai 2012

25# Motif

Je voulais faire un motif genre baroque, mais ça a tourné en vitrail / motif floral de tapisserie ancienne. En fait j'arrive pas bien à le qualifier (ça ressemble aussi au carrelage de chez mes grands-parents),  , m'enfin bref: Toujours est-il que ça s'accorde plutôt bien. J'ai utilisé en partie la fonction kaléidoscope de Painter 12 pour parvenir à ce résultat; ça permet de reproduire sur plusieurs axes de symétrie ce qu'on dessine dans une zone.
Painter 12- 20mn            -         clic clic
J'en profite pour vous montrer autre chose: http://kuler.adobe.com/#
C'est un genre de site de partage de nuanciers de couleurs (je l'ai encore seulement survolé vite-fait), mais ça m'a beaucoup plu; on tombe parfois sur des nuanciers super harmonieux, qui évoquent effectivement l'idée de leur titre, à moins que ça ne soit une association subjective que fait l'esprit après avoir vu ledit titre. En tout cas c'est inspirant :D
Dans les jours qui suiuvent, je vais refaire le design du blog; une fois du plus /o/

bonne journée.

lundi 21 mai 2012

24# Bébé-tumeur

780 450 000,24562 h, notepad
(clic clic)
ehelelekr lone loop of apocalypspeose !!!

mardi 1 mai 2012

23# MsPaint xp

J'apprends à me servir de Qt, et c'est fou comme on peut avoir un résultat facilement avec, j'aurais du me pencher dessus plus tôt.
En parrallèle j'apporte des améliorations à mon extension pour paint; j'ai déja fait un splash screen avec fondu animé et tout :D
Splash screen 1
 Splash screen 2 
J'en ai fait deux mais je penche plus pour le second.

J'essaie de récupérer un maximum de variables de paint, en sauvegardant leur adresse. Comme je l'avais déja expliqué dans mon post la première fois, j'accède aux variables de paint depuis mon propre programme grâce à l'API windows, alors je les refous ici comme ça j'aurais plus qu'à retourner sur ce post pour retrouver toutes mes ressources:

Taille pinceau: 0103EA48      |       Taille aérographe: 0103EB28
Taille crayon: 0103EAB8       |       Taille gomme: 0103EAF0
y curseur : 0103EDDC          |       x  curseur: 0103EDD8
Type de pinceau: 0103EA4C (0=rond, 1=carré, 2 et 3=oblique)
épaisseur trait (droite): 0103E9D8
épaisseur trait (courbe): 0103F1EC
Couleur principale: 0103E87C
Couleur secondaire: 0103D6A0
Couleur tertiaire: 0103D6A4

Et puis j'ai fait un set d'icônes, mais je sais encore pas lesquelles je vais utiliser...

Au final, l'application se présentera comme une boîte à outil supplémentaire pour Paint, surement collée à un bord de l'écran, façon rocketDock, et proposera des options pour:
-activer / désactiver la reconnaissance de la pression du stylet, avec une taille minimale et une taille maximale de pinceau paramétrable (cette modification s'applique en fait à la gomme, au crayon,à l'aérographe, et au pinceau)
-activer / désactiver le dégradé entre la couleur secondaire et la couleur tertiaire selon la pression, et paramétrer les couleurs principale / secondaire / tertiaire, et proposer un nuancier
-activer / désactiver un point d'ancrage dans l'image, c'est chiant à expliquer alors vous verrez.
Si j'arrive à récupérer d'autres variables, j'essaierais de faire d'autres améliorations. Si vous aves des idées, n'hésitez pas à les suggérer !

Au passage, j'ai trouvé ça: http://halfhourhacks.blogspot.fr/2009/04/ms-paint-animation.html, et c'est assez impressionant je dois dire :D

samedi 28 avril 2012

22# AUUGH

Coucou.
J'ai dessiné ça sur paint, en partie avec mon extension que je m'étais programmée. Ça m'a donné envie de l'améliorer, et en parallèle j'ai commencé à apprendre à utiliser Qt (une bibliothèque C++ axée sur la création de fenêtres). Je vais donc peut-être finalement y ajouter quelques fonctionnalités et lui faire une belle GUI...
Concernant le moteur de voxels: j'ai implémenté le rendu par display list, mais il s'avère que l'approche pour le stockage de voxels dans un tableau tridimensionel n'est pas une idée si lumineuse que ça. Il se trouve que la majorité du temps, seuls environ 25% des "cases" du tableau sont remplies avec un voxel effectivement solide, le reste représente de l'air, du vide et n'est pas représenté graphiquement, mais prend néanmoins de la place en mémoire. Alors le rendu avec les display accélère effectivement l'affichage, mais le volume occupé en mémoire est ingérable (j'ai peur de dire une bêtise, je sais plus ce que ça représente, mais c'est beaucoup) pour un terrain de seulement, mettons 300*300*300 voxels. Je vais donc tenter une autre manière de stocker mes voxels: les 'map'. Il faut que j'en apprenne d'avantage avant d'aller plus loin, mais ça a l'air plus efficace et j'en parlerai quand j'en saurais plus. Si toutefois une personne pouvant m'aiguiller lit ces lignes, qu'elle se manifeste s'il vous plaît; je n'ai pas trouvé de ressources ou exemples satisfaisants sur internet, et j'ai du mal à distinguer la différence entre map, unordered_map, table de Hash, faut-il préférer boost::map ou std::map, sont-ce les mêmes ? Voilà. Pour les images c'est toujours pareil: clique pour agrandir :]

samedi 14 avril 2012

21# Projets avortés

J'ai décidé de vous montrer quelques projets jamais finis, souvent commencés avec enthousiasme, mais finalement abandonnés.
1:Projet de site
Y'a un petit moment j'avais projeté de me faire mon propre site internet. Ça c'est pas fait car je ne peux pas me payer un nom de domaine. Ce que vous voyez là est une maquette, c'est à dire que je l'ai dessinée. J'avais pas encore commencé le dévellopement à proprement parler.
2:Hamburgore
Vous vous rappelez surement de Hamburgore, un petit projet autour duquel j'avais fait un peu trop de teasing :]. En fait j'avais tout simplement pas le niveau pour faire ce genre de choses à l'époque, et j'ai pas envie de reprendre ça maintenant donc depuis je le laisse là ou c'en est: c'est à dire rien de bien impressionant, mais j'avais quand même commencé le menu :D !
pour tester le menu, go là: Menu Hamburgore
Ou là lien n°2 , mais là ça prend toute la page donc ça va être plus lent...

... Il se peut que le fichier prenne du temps à charger, soyez patient :]
Et ça ira pour aujourd'hui. J'ai une quantité inimaginable de jeux flash ou de projet de programmes qui auraient pu être prometteurs mais que j'ai jamais eu le courage de continuer tout seul ou de dessins qui mériteraient d'être finis mais qui sont oubliés dans les tréfonds de mon ordinateur, mais ça constitue quand même des ressources réutilisables donc c'est pas perdu /o/



samedi 7 avril 2012

20#

Salut et je

lundi 2 avril 2012

19# Voxels - 2


Quelques tests, je m'amuse avec le moteur :D. Je pense quand même reprendre tout le code depuis le départ et repenser la structure du programme pour avoir de meilleures performances et un FPS décent.

dimanche 1 avril 2012

18# Moteur de terrain en voxels



J'ai commencé il y a peu à travailler sur un moteur de terrain en voxels, dans le but de faire un jeu dont la nature n'est pas encore tout à fait définie (je programme toujours en C++, avec OpenGl et SFML). Pour l'instant vous pouvez vous régaler de ces images, je posterai probablement une vidéo plus tard.


Les voxels, depuis l'épidémie de minecraft, vous en avez probablement déja entendu parler: c'est tout bêtement une entitée basique contenant quelques informations (Position, couleur, texture) et graphiquement représentée par un cube. Un voxel dans un espace en trois dimension est comparable à un tile ou un pixel dans un espace en deux dimensions. Toutefois je ne compte pas faire une énième pâle copie de minecraft, et j'ai choisi le voxel car c'est simplement un moyen pratique de travailler en 3D, et que son rendu donne un certain côté rétro que j'aime beaucoup.
Au niveau du fonctionnement, dans le principe, je stocke mes voxels dans un tableau tridimensionnel. Visualisez un tableau qui comporte des cases dans les trois dimensions:

Chaque case de ce tableau contient des informations de couleurs uniquement (je ne compte pas utiliser de texture). Ici nous avons un tableau de 3*3*3 voxels. Les coordonées des informations dans le tableau constituent par la même occasion les  coordonnées du voxel correspondant. On appelle un voxel de la façon suivante pour accéder ou modifier ses propriétés: tableau3D[i][j][k], où i j et k sont des indices permettant de parcourir le tableau. La structure du prorgamme est plutôt simple à concevoir, à partir de là il suffit, à chaque raffraichissement d'image d'afficher graphiquement un cube aux coordonnées dites du tableau et avec les propriétés indiquées.
Seulement les choses se compliquent vite: avec cette méthode, si je veux afficher ce cube de 3*3*3 voxels, tout va bien, mais en pratique il me faudrait afficher plusieurs centaines de milliers de voxels à chaque frame. Or afficher tous ces voxels sans distinction prend beaucoup trop de ressources, même pour un ordinateur actuel normalement constitué, et au dela de plus ou moins 20*20*20 voxels, soit 8 000 voxels et donc 8 000*6 = 48 000 faces, le framerate chute à moins de 5 FPS, ce qui devient très vite injouable.
Il a donc fallu créer des algorithmes de tri, entre autres le plus évident: ne pas considérer les voxels déja entourés par six autres voxels (donc ceux dont toutes les faces sont cachées), et chez les autres voxels existants, ne pas afficher les faces en contact avec une autre. Avec quelques autres modifications liées au dessin directement avec OpenGl, je parviens maintenant à afficher des zones de 100*100*100 voxels avec un framerate d'environ 15 FPS, ce qui est toujours très insuffisant.
Le terrain est destructible, et grâce à quelques algorithmes je peux facilement créer des formes géométriques simples (sphères, parallélépipèdes), et je planche sur un moyen de créer d'autres formes, comme des polygones réguliers (triangles, pentagones, etc ...) extrudés en hauteur. L'optimisation des performances n'est pas finie non plus et il faut que je me renseigne sur d'autres moyens d'affichage en OpenGl, comme les VBO, mais je n'en sais pas plus.
Je donnerai des nouvelles sur l'avancement de temps en temps.
Si vous avez des suggestions par rapport à ce projet je veux bien les entendre, et si quelqu'un s'y connait en OpenGl j'aimerai beaucoup qu'il m'explique quelques trucs :] !

dimanche 18 mars 2012

17# 23HBD 2012


Oh noes ! Le week-end prochain c'est apparement les 23 heures de la BD, session 2012. Je voulais me rattraper de ma lamentable merde de l'an dernier, mais j'en aurai pas l'occasion, je suis pris :(
Celà dit, vous, lecteurs, pouvez toujours tenter le coup. Relayez aussi l'information !

> leur page Facebook

samedi 3 mars 2012

16#

Je suis parti une semaine et quand je suis revenu le thème bloggerBiduels avait foiré, alors j 'en ai refait un vite-fait moche.
Sinon voila des speeds:




Bonus: la nouvelle image de fond,
dont je suis très fier.

dimanche 19 février 2012

15# Nitronic Rush

Toxic m'a fait découvrir un jeu récemment, que je vous propose d'essayer à votre tour: Nitronic Rush !


Je suis vraiment pas un fan des jeux de voitures et pourtant celui ci est génial. Faut dire qu'il est plutôt original. On note une certaine influence  graphique à la Thron, et c'est plutôt agréable, mais c'est surtout au niveau du gameplay que c'est purement jouissif.
Le concept du jeu, les dévellopeurs l'ont déja formulé pour moi:

"Nitronic Rush is an experimental survival driving game. Using the car’s many abilities (including boost, wings, and jump), avoid obstacles that the city throws at you. In many ways the game is a tribute to racing games of the 1990s but with fresh graphics, audio, and gameplay."

En gros, c'est donc un jeu expérimental, qui consite à utiliser une voiture avec des aptitudes diverses et hinabituelles (capacité à voler, sauter ...) pour éviter des obstacles tout en allant le plus vite possible.
C'est gratuit, fait par des étudiants en C++, c'est génial. Alors gogogo LA (y'a une vidéo aussi)

jeudi 9 février 2012

14# It's Banjo time !




Je me suis mis au banjo récemment, et contrairement à ce qu'on pourrait penser c'est pas si proche de la guitare... Le son agresse un peu l'oreille à cause du micro, tant pis.
Pour certains d'entre vous deux lecteur peuvent apparaître, le premier est la balise audio HTML 5. Dites moi si ça marche pour vous, chez moi ça fonctionne pas.

mercredi 1 février 2012

13# Programmegramme

Un programme que j'ai fait pour mon TPE (c'est pas un jeu ...), qui sert à illustrer les principes des forces aérodynamiques, dans le fonctionnement d'un avion.
Vous avez droit à un screen:


Les unités des valeurs indiquées sur la droite (à part pour l'angle et le Cz, qui est un coefficient nécessaire à l'application de la portance) sont en pixels ou en pixels par frame (soit un nombre de pixel parcouru à chaque rafraichissement d'image).

vendredi 27 janvier 2012

12# C++ test pourri


Un test à la con, qui ne mène à rien mais c'est toujours drôle de programmer ce genre de choses.
- C'est un personnage affiché en texte, c'est juste ça qui en fait l'interêt .... -

.J'avais essayé y'a quelques temps de faire un moteur de collisions -en 3D- (de la même manière que celui avec les cubes, vu sur crapaud forcés, mais plus complexe, avec d'autres types de polyhèdres) mais j'ai pas encore assez de connaissances en Maths, donc j'ai arrêté.

 Sinon je compte peut-être faire un autre projet plus construit, toujours en 3D, avec Tox' , on verra ...

mardi 17 janvier 2012

11# Speed test painter 12

Painter 12, 30 min,   clique,  clique 

Edit:
Painter 12, 1h30

dimanche 8 janvier 2012

10# 42

Je profite d'un post juste pour partager avec vous ma fabuleuse découverte: le magazine 42.



→ Le titre étant en référence directe à Douglas Adams, certains auront peut-être reconnu.
Ce magazine traite divers sujets avec humour, avec pour thème principal l'univers de l'informatique, des technologies, du jeu vidéo et d'internet ainsi que de la science fiction et les jeux de rôles en passant par un peu d'actualité, et tout ce qui s'y rapporte de plus ou moins loin. C'est fait par des amateurs et ça recèle de perles. Mengez-en c'est bon pour votre culture, et en plus c'est marrant :D
Autre aspect intéréssant; les premières de couverture sont souvent très sympa

Je vous laisse découvrir et lire ici (en fait j'ai lu qu'un seul numéro pour l'instant, mais ça m'a emballé, j'attends vos retours...)

  

jeudi 5 janvier 2012

09#

Oups oups - des aperçus d'un petit film d'animation en stop motion -fait récemment, mais pas fini en fait- en coopération à trois, avec Gravedigger ( surement peu se rapelleront de lui) et un ami. Vous pourez en jouir en temps voulu.

  _____________ _____________ _____________ _____________ _____________ _____________  





mardi 3 janvier 2012

08# Demie kactuksse - Cube song

Une autre musique pour demi kactuss, c'est expérimental.

dimanche 11 décembre 2011

07# Extension pour MSpaint sur windows XP

MIS A JOUR, téléchargement

Description | Instructions | Téléchargement
*Les ancres HTML ne semblent pas marcher ... :(

Description:
Comme je vous en avais parlé, j'ai travaillé sur un petit projet cette semaine, qui pouvait me permettre d'augmenter les possibilités de Paint. Les outils que j'ai rajouté permettent principalement de peindre en faisant des dégradés, et reconnaissent la pression du stylet. Ça dénature un peu Paint, mais c'était assez marrant à faire.

Ce programme est donc tout à fait à part et externe à Paint.
     





Démarche:
Pour commencer, j'ai essayé de retrouver l'adresse en mémoire des variables concernant les éléments dont j'avais besoin (taille du pinceau, couleur courante, etc ...) grâce à CheatEngine. Il a fallu ensuite vérifier que ces variables restaient aux mêmes emplacements d'une éxécution à l'autre, et sur différentes machines. C'est bien le cas de la version de Paint pour windows XP, mais pas de celle pour Seven (donc on peut rien faire pour lui). J'ai pas eu l'occasion de tester sur Vista.
A partir de là, j'ai du me documenter un peu sur l'API Windows pour parvenir à accéder aux variables d'un autre programme depuis le mien, connaissant seulement leur adresse.
Une fois cette étape réeussie, j'avais le contrôle sur la taille du pinceau depuis mon programme. Alors j'ai commencé par implémenter le plus important: la reconnaissance de la pression du stylet. Après plusieurs heures de recherches peu fructueuses, je suis finalement tombé sur bbTablet, une bibliothèque C++ basée sur WinTab et permettant de supporter et de récupérer des informations sur les tablettes Wacom.
La partie la plus longue était faite.
Puis je me suis mis à toucher à la couleur. En voulant récupérer la couleur dans la variable correspondante, je me suis rendu compte d'un problème: je recevais un nombre entier avec une valeur aberrante (16 000 000, pour du blanc, par exemple), alors que j'avais besoin des habituelles valeurs RGB pour pouvoir les modifier correctement. Après de nombreux tests je me suis rendu compte, un peu au hasard, que si on apelle le nombre entier incompréhensible "Color", on a:


Color = R + V*256 + B*256²

________________________________________________________________________________________ 
Mais dans mon cas, j'avais Color, et je cherchais R, V et B. Soit une équation avec trois inconnues, que je ne savais pas résoudre. Alors, j'ai cherché à tatons, et j'ai fini par trouver (je ne comprends d'ailleurs pas comment, alors si quelqu'un pouvait m'expliquer ... ):

B = Color / 256²
V = (Color-B*256²)/256
R = Color - B*256² - V*256 

Ça paraît tout à fait illogique, et pourtant ça fonctionne dans tous les cas...
________________________________________________________________________________________

Merci Evarin :D
J'ai donc finalement:
B=(Color>>16);
V=(Color>>8)&0xFF; 
R=(Color)&0xFF;

C'est vrai que c'est plus joli...
Une fois ça acquis, j'ai fait en sorte que le dégradé s'applique sur la couleur courante, selon la pression, et entre les couleurs 2 et 3 (séléctionnables dans Paint en faisant clic droit, et Ctrl + clic gauche dans le nuancier)

Enfin, pour éviter d'avoir une fenêtre encombrante en même temps que l'utilisateur dessine, j'ai ajouté un KeyHooker, en gros, un écouteur sur le clavier qui permet d'intercepter les touches frappées mêmes si vous n'avez pas le focus sur mon programme - c'est parfois utilisé dans certains virus. Mais pas de panique: il est plutôt bas niveau, puisqu'il n'écoute que l'appui sur la touche "Entrée", pour choisir d'afficher / cacher la fenêtre de contrôle de mon programme depuis Paint. De plus, il est fait grâce à une simple fonction de l'API Windows: GetKeyState().
Je vous le dis, vous pouvez avoir confiance, mon code est clean, et vous avez accès à la source (voir téléchargements) si vous voulez en savoir un peu plus.
Pour l'instant, l'extension ne permet rien de plus, mais c'était déja un gros défi, et le plus dur est derrière moi.
...

Instructions:
             • Evitez de sélectionner une couleur par clic gauche comme il est d'usage sur paint: ça ne sert plus à rien.
             • Sélectionnez la couleur 2 par un clic droit sur le nuancier. C'est la couleur d'arrivée du dégradé (la plus présente quand la pression est la plus forte).
             • Sélectionnez la couleur 3 en faisant Ctrl+Clic sur le nuancier. C'est la couleur de départ du dégradé. (la plus présente avec la pression la plus faible).

             • Entrée pour afficher / cacher la boîte à outils
             • Flèche du haut/bas pour augmenter/baisser la taille maximale du pinceau
             • Lancez PaintXP pressure.exe APRES avoir lancé paint.
             • Vous pouvez toujours utiliser Paint sans l'extension. Le programme ne modifie rien.
             • Le programme-extension ne se ferme pas en même temps que paint (enter pour l'afficher et le fermer
             • L'extension ne supporte:  _ que les tablettes Wacom
                                                       _ que les versions Xp de Paint
               Toutefois elle peut être utilisée sur d'autre systèmes d'exploitation si c'est toujours la version Xp de paint (déja testé sur windows seven). Je ne me suis pas préoccupé de Windows 98 et avant :D
             • Je ne garantis pas pour autant que ça fonctionne sur toutes les configurations

Voilà, j'avais la flemme de faire une jolie boîte à outil alors forcémment c'est moins ergonomique, mais si quelqu'un veut reprendre le projet ...
 
Téléchargement:


                           Executable simple

                           Source (projet Code::Blocks) (C++)


                           Télécharger MSPaint version Xp


----------------------------------------------
Cette application est tout à fait inutile, et je suppose que ça ne vous servira pas beaucoup en pratique mais j'aimerais bien entendre vos retours. Et désolé pour ceux qui sont sur mac ou sous Unix.
* J'ai fini par bacler ce projet sur la fin désolé,  mais je ne l'améliorerais plus à priori

mardi 6 décembre 2011

06# Saturne

Paint, 2h  - Clique pour voir les traits pixelisés
Une animation bien sympa à connaître aussi: http://www.youtube.com/watch?v=UCmMebE0pIg
Abstenez vous si vous avez peur d'avoir peur. Ça peut choquer les plus jeunes

dimanche 4 décembre 2011

05# Soon, I will be the master

Depuis hier je travaille sur une extension pour Paint (oui, le logiciel de base livré avec Windows) en C++.
Ce serait un programme qui permettrait quelques améliorations, dont une reconnaissance de la pression du stylet. J'ai pas mal avancé, et je donnerai plus de nouvelles le week-end prochain.

Cette extension relève plus du défi que de l'application ayant une réelle utilité, mais ça sert toujours, et à moi le premier.

04# Again

Painter, plus d'une heure
Une autre session. Cette fois les personnages ont un air débile que j'ai pas réeussi à enlever :D
Vous pouvez les reconnaître, cette fois encore.

lundi 28 novembre 2011

03# Fesses

Painter, ~30 minutes
Une petite session de speeds, en recopiant des images trouvées sur internet. Celui qui reconnait un personnage plus ou moins connu gagne un Shflarntdek convexe.

dimanche 27 novembre 2011

02# Blue waffle


J'ai fini par perdre l'habitude d'utiliser des traits noirs propres

Painter 11

samedi 26 novembre 2011

01# Voix ambiguë d'un coeur qui au zêphyr préfère les jattes de kiwis.

virgule point
J'ai décidé de créer un nouveau blog, car over blog m'a passablement agacé en foutant des pubs dessus. Celui-ci est plus sobre et plus léger.
Painter 11 & Photoshop, en 4 à 5 heures


Et hop ! Une GROSSE illustration, ça faisait longtemps.