WindowsでOpenVDBをビルドする環境を作る

OpenVDBを使ったアプリをWindowsでビルドしたくなったのでvcpkgというVisual C++のパッケージマネージャで環境を用意してみました。

VC++の準備

Visual Studioを使わないのであれば、chocolateyでインストールすると楽。

choco install visualstudio2022buildtools
choco install visualstudio2022-workload-vctools

私は以前WindowsでRust環境をつくった際に以下の記事を参考にして環境を作りました。(Rust環境にはc++ビルドツールが必要)
# WindowsでRustの開発環境を構築する(not on WSL)

vcpkgをインストール

vcpkgのgitリポジトリを適当なディレクトリへクローンし、中のバッチファイルを実行する。

git clone https://github.com/microsoft/vcpkg C:\dev\vcpkg
cd /d C:\dev\vcpkg
bootstrap-vcpkg.bat

すると、vcpkgの実行ファイルができる。また、このgitリポジトリの中にインストールされたパッケージ群が入る

次に、各種環境変数を追加する。Powershellでは$PROFILEが指すファイルが最初に読み込まれる。notepad $PROFILEでメモ帳を開いて確認する。もしファイルが存在しない場合はそのまま作成できるので作成し、以下のように環境変数を設定する。(コントロールパネルから設定しても問題ないはず。)

$env:VCPKG_DEFAULT_TRIPLET = "x64-windows"
$env:VCPKG_ROOT = "C:\dev\vcpkg"
$env:Path = "$env:Path;$env:VCPKG_ROOT"

OpenVDBをインストール

ここまできたらopenvdbがインストールできるはず。それなりに時間がかかる。

vcpkg install openvdb
vcpkg install openvdb[tools] --recurse # recurseはtools付きでビルドし直す明示フラグ

toolsの方はvdbファイルのプレビューツール(vdbview)とかが入る。ちなみにインストールされたバイナリファイルは$env:VCPKG_ROOT\installed\x64-windows\tools\openvdb あたりにあるはず。

テストビルド

適当にディレクトリを作って簡単なサンプルをビルドしてみる。(以下のコードはChatGPTにが生成してくれた。)

CMakeList.txt

cmake_minimum_required(VERSION 3.20)
project(openvdb_test LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(OpenVDB CONFIG REQUIRED)

add_executable(openvdb_test main.cpp)
target_link_libraries(openvdb_test PRIVATE OpenVDB::openvdb)

main.cpp

#include <openvdb/openvdb.h>
#include <iostream>

int main() {
    openvdb::initialize();

    // 例: float グリッドを作って 1ボクセルだけ値を入れる
    openvdb::FloatGrid::Ptr grid = openvdb::FloatGrid::create(/*background*/0.0f);
    grid->setName("density");

    auto acc = grid->getAccessor();
    acc.setValue(openvdb::Coord(0, 0, 0), 1.0f);

    std::cout << "OpenVDB OK. active voxel count = "
              << grid->activeVoxelCount() << std::endl;

    openvdb::uninitialize();
    return 0;
}

以下のコマンドでcmakeを実行。

cmake -S . -B build `
   -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" `
   -DVCPKG_TARGET_TRIPLET=x64-windows `
   -DCMAKE_POLICY_DEFAULT_CMP0167=NEW

DCMAKE_POLICY_DEFAULT_CMP0167CMP0167の警告がでるので設定している。これはvcpkg側がFindBoostという非推奨モジュールを使っているためにでている警告らしい。なくても問題なくビルドできたが、ここで指定しておくとBoost探索を FindBoost 依存から、BoostConfig.cmake 探索へ切り替えることができるとのこと。 以下のコマンドでビルドを実行

cmake --build build --config Release
.\build\Release\openvdb_test.exe

生成された実行ファイルを実行してOpenVDB OK. active voxel count = 1とでたら成功しているはず。

おわり

windowsc++のライブラリをビルドして用意するとか鬼門だと思っていたんですが、ChatGPTとvcpkgのおかげで以外と簡単にできました。環境構築はめちゃくちゃつらいのでChatGPTがいい感じにアドバイスくれるのはとてもありがたいですね……

となモ7にディーラー参加しました

2025年6/7, 6/8に開催されたガレージキット即売会、となりのモケイフェスティバル7にディーラーとして参加しました。

www.tonamo.jp

相変わらずの亀ポストです……

今回はキュッチャン(@kyu190a)と合同で参加しました。キュッチャンの参加あとがきはこちら。 note.com

きっかけは二台目の3DプリンタであるBambu Lab A1をセールで購入したこと。

Bambu Lab A1(奥にはAnker Make M5)
そしてキュッチャンがなにか新しいキャラモデリングをしたいと言っていたところにフィギュアでも作ればいいんじゃないかと声をかけ、なんやかんやでイベント参加まで話が進みました。

ちょうど最近制作していた、フラクタルボックスを博物ふぇすてぃばるというイベントで販売しようかと考えていたこともあり、これを模型系のイベントであるとなモに出してどのような反応があるか見るという目的もありました。

結果としてオリジナルキャラクターのガレージキットフラクタルの模型という謎の組み合わせで出展することに。フラクタル模型の制作に関しては以前から進めていたため、この記事ではあまり触れず、 次に予定している博物ふぇすてぃばるの記事で触れようかと思います。(これも参加から一月立っており、非常によくない)

製作

私はキャラモデリングができないので、基本的にキュッチャンがモデリングをし、送られたパーツをこちらでプリントし、組み立て、塗装することに。フィギュアの塗装などやったことはありませんし、道具もないので模型製作に詳しい友人に色々聞きつつ塗装ブースやエアブラシなどの道具をそろえました。これには結構な初期投資が必要でした。あとで別記事にでもまとめようかと思います。

塗装ブースや定番の食器乾燥機

当初はAMS liteを使用し、4色のフィラメントを用いた多色刷りで塗装は最小限にしようかという話があったのですが、制作を進める段階で、プリントに時間がかかりすぎることやクオリティの問題で白一色でプリントし、全塗装に方針転換しました。また、サポート痕をなるべく残さないように水溶性サポート材や異種素材サポート材の使用も予定していましたが、フィラメント切り替えでプリントに時間がかかりすぎること、結果が安定しないことから使用は断念。曲面が多いモデルをAMS liteによって多色刷りするのは結構しんどいと思います。

各パーツの印刷には0.2mmノズルを使用しました。0.2mmを使用すると見た目には積層痕がそんなに目立たないのですが、塗装をすると粗が目立ちます。PLAフィラメントに対して塗装を行うための表面処理について色々と調べましたが、結局500番の荒い缶サフを吹き、やすりで削ることに落ち着きました。

サフを吹いたり、接着剤で埋めたりしてやすりで削る
データをもらい、仮組みをして、組み立てに問題があれば調節を繰り返し、完成に近づけていきます。当然ですが、実際に組み立ててみたり、塗装したりしてみないと気づけないことも多く、手戻りも発生します。遠隔で分業するというのは大変です。
仮組の様子
また、オリジナルデカールも作成しました。最初はアイペイントか?という話もありましたが、あまりにも難易度が高そうなので断念。インクジェットプリンタでデカールを作成してくれるサービスにお願いし、それなりに安く作成することができました。
デカールテストの様子

塗装の調色については全然わからないので、ChatGPTに聞いたところ、かなり有益なアドバイスがもらえることが判明。

台座はタミヤのテクスチャペイントでかなり見栄えが良くなりました

なんやかんやで出展ぎりぎりになりつつ、どうにかサンプルと製品版を完成させることができました。サポート材外しや表面処理が大変なので、PLAフィラメントによるフィギュア制作はなかなかに厳しいのですが、根気があればできなくもないというのが感想です。慣れていればもっと楽に作れるのかもしれません。ただ、売り物用にサポート材をはずすのはしんどいのでもうやりたくないですね……

見本と梱包済みキット
おまけの招きキュッチャン

当日

会場は東京流通センター

東京のイベント会場・会議室ならTRC|イベント事業部|東京流通センター(TRC)

柱に電源があり、自由に使用できました。これを利用して、インフィニティフラクタルボックス用のライトの電源に加え、モバイルモニタで三次元フラクタルの動画を流しました。会場はそれなりに明るく、ハーフミラーのインフィニティフラクタルボックスは若干見えにくくなていました。もう少し周りを暗くする工夫が必要でした。

会場の様子

当日の感触として、意外とフラクタル模型に興味を持っていただいた方が多かったのに驚きました。主に3Dプリンタによる造形などに興味のある方が一定数いらっしゃるのだと思います。

フィギュアキットの方はあまり反応がなく、オリジナルキャラかつ無名初参加ですので、仕方ないとは思いつつもディスプレイの仕方も悪かったなと反省しています。方向性が正反対であるのも難しいので、いっそ卓を分けてしまった方がよかったかもしれません。

今回販売したフィギュアキットや3Dモデルデータ、フラクタルボックスはpixiv boothにて販売中です。

https://pulvis.booth.pm

フラクタル模型に関しては脈があることがわかったので、今後もこの系統のイベントにフラクタル模型を出そうと思っています。いつかは自分でキャラモデリングしてフィギュアも作りたいですけどね。

そしてずっと試したいと思っていた光造形が仲間に

次回のとなモ8の開催は11/30、12/1だそうです。ディーラー参加申し込み済みです。フィギュアの出品はありませんが、フラクタルについては形状バリエーションを増やし、手軽に手に取れる低価格ラインナップを増やしたいです。それでは今後ともよろしくお願いいたします。

Golden Hex置換ルールと非周期モノタイルについて

この記事はSESSIONS Advent Calendar 2024、14日目の記事です。 adventar.org

前回、SESSIONS 2024参加記事を書きましたので、そちらもよろしければ。

soma.hatenablog.jp

今回は私が投稿した作品、Golden Hex Blinkerで使用されている、Golden Hex置換ルールについてより詳しく解説します。

openprocessing.org

Golden Hex Blinker - soma_arc

この図は三角形、平行四辺形、台形で敷き詰められています。 下図は色を塗り直した図です。もともと、この図は三角形を各図形で敷き詰めた図になっており、赤の三角形、緑の平行四辺形、水色と青の台形で構成されていることがわかります。

この図は置換タイリングとよばれる手法でタイル張りをしました。

置換タイリングでは、ある入力タイルに対して、それを置き換えるタイルの組が決められています。 それらの置き換えを再帰的に行っていくことで、タイル張りができます。そして今回、私が使用したのがGolden Hex置換ルールとよばれるものです。

さっそくそのルールについてみていきましょう。 Golden Hexの入力タイルは4つあります。それぞれ、正三角形T、2辺の比率が黄金比の平行四辺形PD、同様に、2辺の比率が黄金比の等脚台形ZD,、ZTです。(ZD、ZTは合同な図形で、それぞれ異なる置換ルールをもちます。)

Golden Hex置換ルールにおける入力タイル群

これらの4種類のタイルで上図の三角形のタイル張りが構成されていることが確認できるはずです。 そして、それぞれのタイルに対する置換ルールは次のようなっています。

さて、置換ルールがわかったところで、実際に描画するためには、分割された各図形の内分点を求める必要が出てきます。初歩的な平面幾何学の問題ですが、私はこれにちょっと時間をかけてしまいました……適当な辺を未知数として、適当な補助線を引いて方程式を立てれば求めることができます。また、TとPZの内分点がわかれば、台形ZD, ZTは簡単に求められます。よくみるとPZの上にTが乗っかっている形であることがわかると思います。 実際に算出した値についてはソースコードを参照ください。

openprocessing.org

内分点がわかれば、これらの置換ルールをT,PD、ZD、ZTの順に適用させ、タイルの座標を計算することができます。置換によって得られるタイル張りは以下のようになります。

この置換プロセスは無限に行うことができますが、数回行えば十分な見た目なタイル張りができます。さらに、この三角形を各辺による鏡映でうつしてやれば平面全体を敷き詰めることができるでしょう。

非周期モノタイルとの関連について

最後に簡単に表題の非周期モノタイルとの関連について触れます。今回私がこのタイル張り題材に選んだのは、最近非周期モノタイルについて調べているからです。

正方形や正三角形といった図形は一定の規則にそって敷き詰めることで、平面全体を隙間も重なりもなく敷き詰めることができるというのは簡単にわかるかと思います。それでは、非周期的にしか敷き詰められない図形というのは存在するのでしょうか。この非周期にしか並べられないタイルを見つけるというのは、大きな関心を持たれている問題でした。

非周期的なタイル張りとして最も有名なものはペンローズタイリングかと思います。このペンローズタイリングは2種類のタイルを組み合わせることで非周期的なタイル張りを実現できます。

Shadertoyにもいくつか実装がありました。

www.shadertoy.com

それでは1種類のタイルではどうでしょうか?この非周期モノタイルが存在しているのかどうかが未解決な問題として長い間研究され続けていました。 しかし、昨年、2023年の初め頃にこのタイルが見つかったと話題になったのです。

今回の記事のゴールデンヘックス置換ルールは非周期モノタイルが平面充填できることを証明するための一助となります。 非周期モノタイルの一種であるスミス亀タイルと呼ばれるタイル張りにはGolden Hexに近いパターンが出てきます。 それがS.Akiyama, Yoshiaki Araki (2023) An Alternative Proof for An Aperiodic Monotile,より引用した以下の図です。

S.Akiyama, Yoshiaki Araki (2023) An Alternative Proof for An Aperiodic Monotile,より
[2307.12322v4] An alternative proof for an aperiodic monotile

先のGolden Hex置換ルールの各タイルがスミス亀タイルの塊になっており、その境界線はデコボコとしています。しかし、置換の回数が増えるごとに、そのタイルの境界線は直線へと近似されていきます。そのため、著者らはこれを近似Golden Hexルールと呼んでいます。この近似Golden Hexの「頂点地図」とよばれる概念を用いることで、スミス亀タイルが平面を充填することができることを証明しています。

非周期モノタイルの置換ルールについては少々複雑で、私はまだ描画するに至っていません。そこで、描画のとっかかりとしてGolden Hexによる置換タイリングを描画することにしました。 非周期モノタイルのタイリングの中にはフラクタル状の境界線を見て取れるものもあり、非常に興味深いです。後々はそれらの図を描画したいと考えています。

最後に参考としたリソースを紹介しておきます。

www.tessellation.jp

周期的なタイリングからペンローズタイル、非周期モノタイルまで、タイリング関連の話題を幅広く扱っています。非周期モノタイルに興味が湧いたのであれば、ひとまずこの書籍を読むことをお勧めします。Golden Hex置換ルールについても記載があります。 そして、より深い内容が知りたくなった場合は上記のサイトにある各種の参考文献などをあたるのもよいと思います。

この論文でGolden Hex置換ルール、近似Golden Hex置換ルールが導出されました。非周期モノタイルの非周期性や平面充填可能性をよりエレガントな手法で証明したという論文です。

ハチラボで開催されたテセレーション展でポワンカレの迷い鏡」を展示しました。

2024年4月23日(火)〜6月30日(日) こども科学センター・ハチラボで開催された「テセレーション展 あそんでたんきゅう!しきつめアート・パズル」に自作のアプリ「ポワンカレの迷い鏡」を展示しました。

www.tessellation.jp

今回の企画展は、日本テセレーションデザイン協会の協力です。

万華鏡のような図がモニタに移っており、ゆっくりと変形していきます。 参加者はカメラの前に立ち、無限に写されていく自分の姿を見ます。体を動かしてみることで鏡映による対称性を体感することができます。

アプリについて

この展示作品は大分前に制作したHyperbolic Tessellatorを元にしたものです。以下のURLから試すことができます。

Hyperbolic Tessellator

HyperbolicKaleidoScope

ここで描画されているのは双曲タイリングと呼ばれる、円盤を敷き詰めるタイル張りです。 エッシャーの天使と悪魔という作品のモチーフになっているのが有名です。タイルは円周に近づくにつれて小さくなっていき、無限に続いていくため、うまくコンピュータで描くには少し工夫が必要です。それについては以下の記事で書きました。

soma.hatenablog.jp

さらに、円盤上での敷き詰め模様を変形し、よりインパクトのある図形を描画する手法も導入しています。これについては以下の論文で書かれています。

archive.bridgesmathart.org

そして、タイルにカメラ映像を投影することで、万華鏡のように楽しめるようにしました。

元々のアプリにはUIがついており、各種パラメータを手で弄れるようになっています。しかし、今回の科学館における展示の対象となる年齢層は小学生くらいであるので、よりシンプルに、操作もいらないものにしました。タイルの変形パラメータは時間と共にゆっくりと変化していくようになっています。

また、展示用アプリケーションとするにあたり、Electronで起動できるようにし、起動時と終了時、エラー時にはSlackへIncoming Webhooksで通知を飛ばすようにしました。幸い、展示期間中に問題は起きなかったようです。

機材について

PCによる展示を行うにあたり、機材を用意する必要があります。予算も限られているので、どの程度のスペックのPCならば問題なく動くのかというのは重要かと思います。

今回のアプリは、シェーダを使って描画していますが、求められているスペックは高くありません。WebGL2.0が動作するブラウザが動けば問題はありませんでした。今回は中古のノートPCを用意していただきました。場合によっては快適に動作するPCでベンチマークをとってPCを選定する必要があるかもしれません。

USBカメラについては解像度とフレームレートが重要なところかと思います。あまり解像度が高くても無駄になってしまうと思いますが、ブラウザ側で解像度とフレームレートの組を選択できるので、それなりのものを用意すれば問題はないと思います。

私は以下の製品を使っています。値段も手ごろでスペックも申し分ないです。

DEPSTECH Webカメラ DW49

モニタについてはアスペクト比が重要になります。開発環境のモニタと本番環境のモニタでアスペクト比が異なると見え方が異なってしまいます。また、画像はシェーダで計算しているので解像度が高いモニタほど負荷が大きくなります。今回の展示では1920x1200ほどでした。

解像度とは別に画面の大きいと、より没入感がでると思います。今回は会場の大きなモニタで映してもらいました。

おわりに

ハチラボにおける企画展は既に終了しています。アンケートによると評判はよかったようです。 体験された方の反応や意見をもとに、改善を加える予定です。現時点で考えている改良は、なんらかのインタラクティブ性を加えることです。

例えば、フラクタルの境界にズームしていくデモは非常にインパクトがあるのですが、手で操作して見せることしかできていません。例えば、顔を近づけるとタイルの端にズームしていくといった見せ方はありかもしれません。

また、タイルは一種類しか用意していません。その他の種類のタイルも入れたいところです。ただ、タイルの種類をどのように切り替えるのかはうまく考える必要があります。タッチパネルなどのインターフェースは必要となるのかもしれません。カメラを使用しているので、ジェスチャも可能ですが、検討することは多いです。

最後に、つくばエキスポセンターで行われている「たのしい図形ふしぎな図形すてきな図形の大集合」という企画展でもこのアプリを展示していただいています。開催期間は2024年11月16日(土)から2025年1月26日(日)までです。

www.expocenter.or.jp

以上となります。ありがとうございました。

サイエンスアゴラ2024でポアンカレの迷い鏡と3Dフラクタル模型を展示しました

昨年に引き続き今年も日本テセレーションデザイン協会のブースで展示させていただきました。

www.jst.go.jp

サイエンスアゴラ2024は10/26, 10/27にテレコムセンタービルで開催されたサイエンスコミュニケーションイベントです。

詳しくは以下のページからどうぞ。

サイエンスアゴラとは、あらゆる人に開かれた科学と社会をつなぐ広場の総称です。 サイエンスアゴラは、異なる分野・セクター・年代・国籍を超えた関係者をつなぎ、さまざまな人たちが各地で主体的に推進する活動の広場です。

www.jst.go.jp

今年の展示では、双曲タイリングとその変形をカメラ映像に投影し、自分の姿を万華鏡のように映すアプリ「ポアンカレの迷い鏡」や、3Dプリントで作ったフラクタル模型を展示しました。昨年の展示については、以下の記事で紹介しています。

soma.hatenablog.jp

このアプリは、渋谷にある科学館ハチラボにも展示していただいていました。自分を映して遊べるこのアプリはそれなりに人気があったため、今年も持っていくことにしました。また、3Dプリンタで作った作品もT3パズルコンテストの副賞として制作していたので、過去の作品と合わせて展示しました。

ポアンカレの迷い鏡については、また別の記事で詳しく書く予定ですが、アプリ自体は以下のURLから試すことができます。

https://soma-arc.net/HyperbolicTessellator/

HyperbolicKaleidoScope

展示に関して、以前からノートパソコンの画面による展示があまり美しくないと感じていたので、モバイルモニタを導入しました。これを持っていったのは正解で、うまく体験の向上に繋がったのではないかと思います、

モニタは以下の製品です。

Acouto Zen18 モバイルモニター 18.5インチ

ちょうど値引き中で2万円以下で買えました。また、手元の機内持ち込み可能サイズのスーツケースも入るちょうどよい大きさです。ノートパソコンだと画面の大きさに加え、キーボード部分が邪魔になりやすいという欠点がありましたが、それも解消できました。

今回、カラフルな3Dプリント模型を展示したことで、来場者がそれをカメラに映して模様を楽しむ姿も見られました。これは予想していなかった遊び方でしたが、とてもよいアイデアだと感じました。今度はカメラに写して面白いものを持っていこうと考えています。また、直線が一本書かれた紙をカメラに写すだけでも、円の反転による直線の円の反転による直線の曲がり方や対称性を分かりやすくなるはずです。

アプリと模型は当初は別々の作品として扱う予定でしたが、やはり、これは何ですかと聞かれると、この模型だけで説明するのは難しいです。例えば、「フラクタルという概念があって、その模型です。」というように説明するのは簡単ですが、この模型も実はタイリングでできていることも説明したいところです。

実は、アプリで描画している万華鏡は三次元に拡張すると、三次元フラクタルになります。そのため、興味を持った人には二次元の万華鏡の話から三次元へともっていき、https://sphairahedron.net/のアプリでのデモを交えつつ説明することとしました。ただ、難しい話であるので、もっとシームレスにデモを通して解説する枠組みが必要だと感じています。3Dプリントの模型でタイリングを体験できてもいいのですが、作るのが難しいため、実現できていません。

また、一台のパソコンで別のソフトも交えながら解説していると、他の人が迷い鏡を体験できなくなるので、もう一台パソコンを用意して鏡専用機にするのもよいかと思いました。

参加者層としては小学生以下の子供を連れた親子が多いのですが、科学への強い興味をもった人たちが多いのが印象的でした。こういったイベントに来ているので、大人の人はもちろんなのですが、低年齢層の子供でもフラクタルなどの専門的な概念を知っていたり、3Dフラクタルの展示に対して鋭い質問を投げかけてきたり、と驚くことが多かったです。そのため説明のレベル感を探るのが少々難しかったです。

優秀な若人の時代ですね。

アプリに関して、ハチラボの展示は終わっていますが、現在つくばエキスポセンターの企画展でも置いてもらっています。今回の展示で得たフィードバックをもとに改善を加えていきたいです。

それではこのあたりで。ありがとうございました。

SESSIONS2024に参加しました

2024.11.16(土)-17(日)、日本科学未来館にて開催されたSESSIONS2024に参加しました。 SESSIONSは技術ベース創作にかかわる人が集まるイベントです。今回もとても良いイベントでした。

sessions-party.com

どのようなイベントだったのか、というのは公式サイトやアカウントの紹介にお任せして簡単に私が投稿した作品を紹介します。今回はshowcaseとcode graphicsの2部門に投稿しました。

3D Fractal Box

showcase部門に出展したものです。showcaseではLTや展示など、ほかの部門に当てはまらない、非コンペティション部門です。3Dプリンタで作ったフラクタルの模型は何年か前に作っており、Tokyo Demo Festなどにも持って行った記憶があります。

提出作品である3D Fractal Boxはその名の通り、アクリルボックスに3Dプリントしたフラクタル模型が収められています。その内側にはミラーシートが貼ってあり、CGで描画したフラクタル図形のような広がりを感じることができます。 ここで造形しているフラクタルの詳細は以下のページにまとめています。

https://sphairahedron.net

これはもともと、T3パズルコンテストというコンテストというコンテストに副賞として制作したものです。大学を出た後、自宅に3Dプリンタを買ったのですが、しばらく造形をやっていませんでした。しかし、数カ月前に、このコンテストになにか副賞を出してほしいとの依頼を受けました。3Dプリンタでフラクタルに関連するものを制作しようと考え、結果としてこのような作品となりました。結果としてそれなりにいいものになったかと思います。

www.tessellation.jp

また、今回はアクリルハーフミラーで試作中のInfinity 3D Fractal Boxも持っていきました。これは側面から見ることができるため、より広がりを感じることができます。

六角柱の方は突貫工事で作ったため、テープで止めただけなのですが、フィラメントの色もあいまって幻想的な雰囲気があります。箱をどのようにして綺麗に作るか、というのは今後の課題となっています。

ありがたいことに、これらの作品はそれなりに好評をいただけました。 Fractal Boxの制作はこれからも取り組む予定ですが、他にもたくさんの形状があるため、それらをずらりと並べられるとよいですね。

また、3D Fractal BoxはT3パズルコンテスト25冬の副賞としても提供予定です。コンテストの締め切りは1月なので、興味のある方は覗いてみてください。

Golden Hex Blinker

Code Graphicsに投稿したOpen Processingの作品です。平面上の敷き詰め模様が明滅します。

openprocessing.org

一部、色を付けていますが、もともとはこういったパターンになっており、三角形、平行四辺形、台形によって構成されたいるタイル張りであることが確認できます。

これはGolden Hexと呼ばれる置換タイリングのルールでタイル張りしています。

置換タイリングでは、あるルールに基づいて、タイルを再帰的に入れ替えていくことで、タイリングを行います。おそらく、プログラミングでフラクタルを描画したことのであれば、直観的に理解できる概念かと思います。(実際のところ、置換タイリングは、あるタイルを複数個複製し、組み合わせることによって新しいタイルを生み、タイル張りをするという見方もできます。)

en.wikipedia.org

Golden Hex置換ルールは以下の論文、書籍にて提示されているルールです。

arxiv.org

www.tessellation.jp

このルールは昨年度大きな話題となった非周期モノタイルの証明と関わりがあります。この置換タイリングをベースにして、非周期モノタイルの平面充填可能性を証明するエレガントな手法が上記の論文で述べられています。(といっても私はまだ完全に理解できていないのですが。)

非周期モノタイルによるタイリングは少々複雑なルールで行う必要があり、各種論文等を読み込んで理解する時間もなかったため、今回はこのGolden Hex置換ルールによるタイリングの描画から始めてみました。結果的には非周期モノタイルに関する理解が多少深まったのでよかったです。

しかしながら、パターン自体は描画できても、面白いアニメーションを作るのが難しく、色を変えるのみとなってしまいました。今回はOpenProcessingで書いていたうえ、最適化する時間もなかったため、あまり負荷のかかる計算ができなかったという理由もあります。

より詳しいGolden Hex置換ルールと非周期モノタイルについての話はSESSIONS Advent Calendarの方で書く予定です。

SESSIONS Advent Calendar 2024 - Adventar

以上となります。次回、よりよいものを出せるように粛々とやっていきます。 それではまた次の機会に。

サイエンスアゴラ2023に参加しました

昨年の11月の話になってしまいますが、サイエンスアゴラ2023にて幾何学に関するWebアプリケーションを展示しました。 サイエンスアゴラについては公式サイトを見てもらうのが早いかと思います。 このイベントには様々な企画がありますが、各出展者が科学に関する展示を行うブースがあります。

www.jst.go.jp

もう少し見栄えのよい写真を撮っておくべきでしたね……

ここ二年ほど、日本テセレーションデザイン協会会長の荒木さんにお誘いいただき、ワークショップや展示を一緒に行っており、今回もサイエンスアゴラの協会ブースに私のWebアプリケーションを置かせていただきました。 ここでいうテセレーションとは簡単にいうとタイル張り(模様)のことです。 今年の協会活動内容や今回の展示内容としてはこちらの協会誌をご覧ください。

私はというと、この表紙の右上に描かれているフラクタルについて書いています。

このブログでも何度か紹介してきました、円をベースにしたフラクタルです。

当初、展示にはこのフラクタルを描画できるWebアプリ、SchottkyLinkタブレット端末用に最適化して持っていく予定だったのですが、実装が間に合わず、急遽別のものを持っていくことにしました。 大分昔に書いた Hyperbolic Tessellatorです。

HyperbolicTessellatorの展示の様子とタイル張りされる荒木さん

双曲タイルにカメラの映像を貼り、それをタイル張りするソフトです。これはずいぶん前から公開していましたが、展示としても適しているということでこちらを持っていきました。 一応マウスでパラメータを操作することができますが、それ以外の入力はカメラであるので、体験するハードルは非常に低いです。

このイベントは小学生以下の子供を連れた親子が多く、子供はマウスによる操作が難しい場合が多いです。 一方、タッチパネルの操作がうまくできる人はいて、ノートパソコンの画面をピンチ操作しようとする人もいたので、タブレット端末などの操作になれているのでしょう。 そのため、Schottky Linkもタブレット端末用に最適化する必要があったのですが、実装を間に合わせられませんでした。 Hyperbolic Tessellatorはパラメータ操作をマウスでするようになっていますが、基本的に体をカメラに向け、体を動かすだけです。ほぼ説明不要です。

原理の説明としては、万華鏡の例えを用いています。これは協会誌にも同様のことを書きました。 万華鏡は筒の中に鏡とビーズなどのオブジェクトを配置し、それをのぞき込んで鏡に反射した様々な像を楽しむおもちゃです。 通常、鏡は平らなものを用いますが、それが曲がったもの、球面状のものであったならばどのような像が得られるでしょうか? 球同士による反射はクリスマスオーナメントやパチンコ玉のような物体を隣合わせておくことで確認することができます。 しかし、万華鏡として楽しむことは難しいでしょう。それを疑似的に再現しているのがこのアプリケーションです。といった説明です。

体験していただいた感触としてはなかなか好評だったように思います。 私はこの手の図形に見慣れており、特段面白くはないだろうと考えていたのですが、会場に来る人達には全く見たことのない興味深いものに見える、ということは気に留めておかねばならないと思いました。

今年の春あたりにもアプリを展示する予定があります。現在そちらに向けて準備を進めています。より良いものをお届けできるよう精進いたします。