Magic rebase and (re-) format

If you like clean coherent formatted code, you may already use something like clang-format and git hook to ensure format when commit

If you like clean history, you might use a log of rebase.

Sometimes during conflit, format is lost, but it’s pita to fix it afterwards without introducing some commit out of the clean history

I use run-clang-format script with rebase and exec. This will stop rebase if format is not respected

git rebase --exec "./run-clang-format.py -r -i \
--style file --extensions inl,cpp,hpp src/" \
new-base-branch

When it stops, you can examine the situation with

git status
git diff

Once everything looks good (in case of conflict, simply use remote, and reformat)

git add -u && \
git commit -m"fix format" && \
git rebase --continue

Then rebase -i again so you can squash/fix all “fix format” commits with their immediate ancestor.

TODO : explain a bit more

Turning crazy with sound

UPDATE: problem is still preset … still trying to find what is going on.

After a recent update on my debian workstation, I had spurious sound volume changes, only with line out, no matter my usb headset either plug in or out (but when I listen with the usb headset, there was no problem).

I did a few days of search, first is where to dig for a problem, then how to check pulse audio log, then how to check alsa, and acpi.

And the problem was … HARDWARE !

So the problem comes from spurious front jack headphone event as shown with the following logs. These plug/unplug event mess alsa and jack with volumes … maybe it can be fixed with some configuration to restore correct sound after unplug, but the problem is that I do not have front jack used at all.

headset

(I use the explanation here to have pulseaudio log, tldr:

systemctl --user stop pulseaudio.socket #since the socket relaunch pulseaudio all the time.
echo autospawn = no >> ~/.config/pulse/client.conf 
LANG=C pulseaudio -vvvv --log-time=1 > ~/pulseverbose.log 2>&1
$ cat pulseverbose.log  | grep Jack | grep plug
(6391.015|   6.180) D: [pulseaudio] module-alsa-card.c: Jack 'Front Headphone Jack' is now plugged in
(6391.036|   0.018) D: [pulseaudio] module-alsa-card.c: Jack 'Front Headphone Jack' is now unplugged
(6476.288|  67.655) D: [pulseaudio] module-alsa-card.c: Jack 'Front Headphone Jack' is now plugged in

$ sudo acpi_listen 
 jack/headphone HEADPHONE plug
 jack/headphone HEADPHONE unplug
 jack/headphone HEADPHONE plug
 jack/headphone HEADPHONE unplug

I tryied to plug/unplug an headset in the front jack, and the event do not coicinde … so I unplug the front jack from the motherboard, TADAA ! no more spurious event.

Next step is to check cable conductivity, and clean with contact cleaner, but nevermind, I do not use this jack anymore.

Take home message, sometimes events are related sometimes not … when dealing with computer events used to be linked (the update mess up a lot of things, because of gnome-shell update and incompatibility with some plugins), but this one was not, and it slow down a lot the resolution (since most of my net searches have gnome 3.38 in the key words, or debian update …) After a few days, I think of the problem differently, as how I can track what is going on rather than something is not correctly installed.

Internship proposal: Stroke clustering for stylized animation automatic in-betweening

Location : Laboratoire IRIT, STORM research team, Université Paul Sabatier – Toulouse

Advisor : David Vanderhaeghe, vdh@irit.fr, www.dlyr.fr, Amélie Fondevilla

Funding : ANR project Structures ANR-19-CE38-0009-01

Keywords : stroke-based rendering, painterly animation, example-based methods, computer graphics

Context.

Animation movies show great media of artistic expression (see Fig. [fig:ex]), allowing artists to convey powerful narrations, while not being limited to the existing range of shapes and motions. Unfortunately, they are significantly tedious and time consuming to produce. It is particularly the case for 2D animation composed of sets of marks, such as paint or drawings.

Standard stroke-based rendering methods can automatically produce stylized content made of marks such as paint strokes or hatching . They either focus on a specific style or technique to propose a fully automatic process, or allow to tweak style along larges sets of parameters , which may not be the more intuitive solution for an artist. They usually do not take into account style features related to motion, which is an important aspect of animation design .

Internship Project.

The high level goal of the project is to ease the creation of stroke based rendering animation, with the look and feel of hand made animation. One key question is how to capture user style and automatically create new frames of the animation. This kind of approach mixes an animated input (a 3D scene in our framework) with style information (digital painted frames in this proposal). The goal of the internship project is to analyze user created frames and generate intermediate frames in the same style. The first step is to define a metric to cluster strokes in a given frame. Theses clusters could be linked to an underlying 3D scene, which guides the animation. The second step is to create link the clusters extracted from two frames, and then provide a interpolation scheme to create in between frames.

Candidate’s profile.

Potential candidates for the thesis should have :

  • Master student in Computer Science, or equivalent.
  • Strong background in real time computer graphics, mathematics, and c++ programming.
  • Additional skills in some of the following topics would be appreciated: expressive rendering, user interface, numerical optimization.
  • Fluent french or english speaking.

Application.

Send your application to David Vanderhaeghe (vdh@irit.fr) with

  • a complete CV,
  • high education grades report
  • reference name/email address

About STORM-IRIT

STORM is a research team part of the IRIT Laboratory (UMR CNRS 5505). We conduct research on computer graphics, including geometric modeling, 3D animation and rendering. See our webpage for more details about recent research https://www.irit.fr/STORM/site/. The PhD will take place on the Rangueil campus, in the IRIT building, south of Toulouse, nearby all facilities and ground public transport to reach the city.

Git: cleaning a branch before a PR, and merge back the clean history to the messy WIP branch

Sometimes, I have a branch with a new feature I work on, call it Feature_mess.

At some point I want to show this feature to colleagues, so I want to have a clean history, and remove some WIP stuff

To this end :

git checkout Feature_mess
git checkout -b Feature_clean
git rebase -i Feature_clean master (or whatever base you want)

Cleanup history here, remove crappy things, merge a lot of commits, rewrite history !
Now to benefit from this clean history as a base of Feature_mess

git branch temp Feature_mess
git checkout temp
git reset --soft Feature_clean

Now you are in the state of mess, with the history of cleanup, you can check diff and then

git commit

Et voilà !

More information on git reset here : https://gist.github.com/tnguyen14/0827ae6eefdff39e452b

Debian update to buster

# huge emoji in thunderbird titles, remove by adding a new font
apt install fonts-symbola
# save and cleanup app armor, old conf prevent from opening attachment files from thunderbird.
mv /etc/apparmor.d /etc/apparmor.d_backup
apt install --reinstall apparmor apparmor-profiles apparmor-profiles-extra
# TSC_DEADLINE errata warning, update micro code
apt install intel-microcode

Reboot (I do not find out why a systemctl restart apparmor do not work, reboot is fine)

Master internship : Color point cloud structure for picture color grading

We are looking for a highly motivated Master student for a research internship.

  • Keywords: Image manipulation, Color grading, Point clouds, Computer Graphics
  • Advisor: David Vanderhaeghe, Nicolas Mellado
  • Location: Laboratoire IRIT, STORM research team, Université Paul Sabatier – Toulouse
  • Duration: from February/March 2018, 5-7 months

The internship will take place in the IRIT laboratory, on the Université Paul Sabatier, campus of Toulouse. The recruited intern will be a full member of the research team, integrated with other team members, PhD students and permanent researches. He/she will participate to working groups, scientific seminars and other activities of our group.

Context

Professional pictures present strong color ambiances influencing the style and the mood of the image. These ambiances are usually set at the capture stage using light spots of different colors or adjusted at the compositing stage.

Professional softwares (such as Photoshop) provide different tools to change the color temperature or shift color hues. These filters are applied globally on the image.

Goal

Following recent works [1,2] and preliminary investigations, the rgb point cloud (fig 1 right) corresponding to an image depicts structures that can enable image manipulation.

The purpose of this internship is to analyze the rgb point cloud to extract meaningful geometrical structures. Using this structure, the student has to propose tool to edit the image.

A preliminary result is presented below

Fig1 Example of an image and its associated point cloud

Student profile

  • Master student in Computer Science or Applied Mathematics
  • Strong programming skills (C++), GPU programming (OpenGL)
  • Basic knowledge on linear algebra and optimization algorithms
  • Fluent English or French spoken

How to apply

Send your application to David Vanderhaeghe (see mail above)

  • a complete CV,
  • previous internship reports if available,
  • reference name/email address (optional)

Bibliography

[1]  Jianchao Tan, Jyh-Ming Lien, and Yotam Gingold. 2017. Decomposing images into layers via RGB-space geometry. ACM Trans. Graph. 36, 4, pages. DOI: https://doi.org/10.1145/3072959.2988229

[2]  Sylvain Duchêne, Carlos Aliaga, Tania Pouli, and Patrick Pérez. 2017. Mixed illumination analysis in single image for interactive color grading. In Proceedings of the Symposium on Non-Photorealistic Animation and Rendering (NPAR ’17), Stephen N. Spencer (Ed.). ACM, New York, NY, USA, Article 10, 10 pages. DOI: https://doi.org/10.1145/3092919.3092927

Master internship : Stroke based rendering by example

We are looking for a highly motivated Master student for a research internship.

  • Keywords: Stroke Based Rendering, Painterly Rendering, Realtime Rendering, Computer Graphics
  • Advisor: David Vanderhaeghe
  • Location: Laboratoire IRIT, STORM research team, Université Paul Sabatier – Toulouse
  • Duration: from February/March 2018, 5-7 months

The internship will take place in the IRIT laboratory, on the Université Paul Sabatier, campus of Toulouse.
The recruited intern will be a full member of the research team, integrated with other team members, PhD students and permanent researches. He/she will participate to working groups, scientific seminars and other activities of our group.

Context

Stylized images are ubiquitous in visual communication for animated movies, commercials or scientific illustrations. These images leave room for the spectator’s imagination and interpretation while conveying a strong and clear message. They bear the visual identity and ambiance of an art movement, an artist or a company. This is why it is essential for the content creator to be able to control the appearance — give his style — when creating a stylized image.
Our graphic design research project focuses on stroke based rendering, an expressive rendering  approach for the creation of stylized images.The goal is to understand which control structures are interesting for the creation of stylized images. These structures will provide new means of control that will adapt to the expertise, work habits, capacities and needs of content creators.

Objectives

The main topic of this master project is the definition and implementation of a automatic stroke based generator (fig 1). The generator style will be controlled by paint function to determine the shape of each stroke. Ideally these functions would be built by example given small user inputs. The selected student would have to study, adapt or invent new stroke based generation process, based on state of the art stroke based algorithms and propose example based control for this generator.

screenshot-from-2016-11-22-10-34-24


Fig 1. The painting on the canvas is composed of a set of strokes. Here stroke shape are depicted with on canvas and floating 3D shape to  catch their arrangement.

Student profile

  • Master student in Computer Science or Applied Mathematics
  • Strong programming skills (C++), GPU programming (OpenGL)
  • Basic knowledge on linear algebra and optimization algorithms
  • Fluent English or French spoken

How to apply

Send your application to David Vanderhaeghe (see mail above)

  • a complete CV,
  • previous internship reports if available,
  • reference name/email address (optional)