はじめに
ブルーノイズは, Computer GraphicsやComputer Visionによく使われる分布です.
その性質をもつ点群の場合は, ランダムでありながら各点がほぼ等間隔に離れて位置します.
2次元の波の場合も, 均等に配置される見た目になります.
ドキュメントがまだできていませんが, コードはcppblueにあります.
ブルーノイズサンプリング
2次元のブルーノイズ点群を生成するアルゴリズムとして, Weighted Linde-Buzo-Gray Stipplingがあります.
ボロノイと点列の生成のはなしという記事があり, あげられたコードを写経してみましたが, まともな結果が得られず, さらに全く計算が収束する気配がありませんでした. 写経ミスがあるかもしれませんが, 何度も見返してチェックしてもダメなので, 元のコードが正しいのかかなり怪しいと思いました.
楽と横着は違います, 元論文からちゃんと実装しました. 元論文との違いは,
- ボロノイ図の描画に
Jump Flooding Algorithm
を使う- 論文の実装ではコーンをOpenGLで描画
- タイリングになっている
ブルーノイズテクスチャ
The void-and-cluster method for dither array generationで, 1から3次元まで作成できるようにしました. 2024年では特許の期限は終了しているようです.
こちらもタイリングになっています.
まとめ
サンプリングのいろいろなアルゴリズムや手法をまとめたライブラリにしておいた方がいいのだろうか.