本稿は TeX & LaTeX Advent Calendar 2017 の23日目の記事です.22日目は VoD さんでした.24日目は golden_lucky さんです.
皆さんもよくご存知のように TeX は組版ソフトウェアであり,一般的にはレポートや論文,書籍を作成するために用いられます.最終成果物の形態は様々ですが,多くは電子データ(PDF など)のままか,あるいは紙に印刷して利用されるものがほとんどでしょう.
しかし,TeX の可能性はそれだけのことにとどまりません.
2017年の便利な世の中には,レーザーカッター(レーザー加工機)という画像データを入力として様々な素材1を切断したり彫刻したりすることのできるスゴいマシンが存在します.TeX が出力するモノは基本的には「文書」ですが,見方を変えれば「画像」を出力するソフトウェアとも言えます.ということは,TeX を用いて作成した画像(デザイン)に基いて,レーザーカッターを動かすことができそうです.
この「TeX の新たな可能性」を実証するため,今回は TeX を用いて時計の文字盤をデザインし,レーザーカッターを用いて実際に木製の時計を制作してみました.
制作の経緯
私の通っている T 京大学の近くに T 京藝術大学という国立の総合芸術大学があり,そこの Art Media Center という施設にレーザーカッターが設置されています.このレーザーカッターは芸大生であれば無料で借りて利用できるということであったので,知り合いの芸大生・I さんに全面的に協力してもらい今回の時計制作を行いました2.
作り方
さて,ここからは実際に TeX とレーザーカッターを用いて時計を制作する手順をご紹介します.時計の制作手順とは言っても,ムーブメントや針は工作時計キットを使ってしまうので,実質的には文字盤を作って簡単な組み立てを行うだけです.
1. 材料を用意する
まずは時計の材料を用意します.必要なものは以下の3つです:
- ムーブメント(モーター)
- 時計針
- 文字盤用の板
ムーブメントと時計針は規格が同じものを買った方が簡単でしょう.私はこれらを T 急ハンズというお店で買いました.合計で2,000円はしないぐらいでした.
板は利用予定のレーザーカッターで加工可能な素材・サイズのものから適当に選びます.時計の外枠もレーザーカッターで切り出してしまうので,目的のサイズより大きければ形は何でも大丈夫です.私は近所のホームセンターで木板(300mm × 300mm × 5.5mm のプリント合板)を2枚購入しました(1枚は予備です).こちらは1枚あたり数百円ほどだったと思います.
2. 文字盤のデザイン画像を作成する
材料が揃ったら,いよいよ文字盤のデザインを行います.今回は Art Media Center の指定に基づき,入力データを AI 形式(CS3 互換)で作成する必要があったので,TeX で出力した元データ(PDF)を Adobe Illustrator を用いて AI 形式に変換しました.
LaTeX で文字盤をデザインする
レーザーカッターの入力に用いる画像データですが,基本的にはすべての色をグレースケールで指定する必要があります(RGB 値はすべて0).そして一般的な機種・環境では「色が濃い(=黒に近い)部分ほど深く彫り込まれる」という原則が成り立ちます.特に,完全に黒い部分3は切断されます.
この方針に基いて,LaTeX で文字盤データを作成します.
どのようなツールを用いても構わないのですが,今回は現在 TeX 界で最もアツい画像描画パッケージであるところの TikZ を利用して文字盤デザインを作成しました.また,フォント周りの設定が簡便であるという理由で LuaLaTeX を採用することにし,次のようなデザインを作成しました.
%#!lualatex
\RequirePackage{luatex85}
\documentclass[border=10mm]{standalone}
\usepackage{tikz}
% フォントの指定
\usepackage{fontspec}
\setmainfont{A-OTF-HaruGakuStd-Light}
% カラーの指定
\usepackage{xcolor}
\definecolor{base-gray}{gray}{0.2}
% 文字盤サイズの指定
\newlength{\radius}
\setlength{\radius}{140mm}
\begin{document}
\begin{tikzpicture}[line cap=round]
% 外枠
\draw [draw=black, line width=0.001pt] (0,0) circle (\radius);
\filldraw [color=base-gray, fill=white, line width=.04\radius] (0,0) circle (\radius);
% 文字盤
\foreach \angle / \label in {
0/3, 30/2, 60/1, 90/12, 120/11, 150/10, 180/9,
210/8, 240/7, 270/6, 300/5, 330/4
}{
\draw [line width=0.02\radius, color=base-gray]
(\angle:0.95\radius) -- (\angle:\radius);
\draw [font=\fontsize{.2\radius}{0pt}\selectfont, text=base-gray]
(\angle:.75\radius) node {\label};
}
\foreach \angle in {0, 90, 180, 270}
\draw [line width=0.03\radius, color=base-gray]
(\angle:.9\radius) -- (\angle:.98\radius);
% 中心の穴
\node [draw=none, font=\fontsize{.05\radius}{0pt}\selectfont, text=base-gray]
at (0,-0.13\radius) {produced by \TeX};
\draw [draw=black, line width=0.001pt] (0,0) circle (5mm);
\end{tikzpicture}
\end{document}
フォントはアカデミック版モリサワパスポートに含まれる「はるひ学園」を採用しました.\setmainfont
命令に適当なフォントファイル名を与えることで,簡単に別のフォントに変更することが可能です4.
先述したように,彫刻したい部分はグレースケールに差をつけて深さを調節することもできますが,今回はシンプルにグレースケールを 0.2 に統一しています.一方,文字盤の外枠と中心部にムーブメント取り付けのための穴を切り出すために,0.001pt のグレースケール 0(黒)の線を入れてあります(特に外枠は,出力画像を原寸大で見ても視認することは難しいでしょう).
また,上記の LaTeX ソースではほとんどの構成要素のサイズを最終的に作成したい文字盤の半径からの相対値で指定しているため
\setlength{\radius}{140mm}
の部分に,目標とする文字盤サイズの半径を指定するだけで任意のサイズの文字盤データを出力することができます.ムーブメント取り付けのため中心に空けている穴のサイズは半径 5mm に固定していますが,これを変更したい場合は tikzpicture 環境の終了間際にある
\draw [draw=black, line width=0.001pt] (0,0) circle (5mm);
をいじります.
余談:ボツになった文字盤デザイン
ここで紹介するのは,TeX の機能を最大限アピールするために私が試しに考案したデザインたちです.これらを実際にレーザーカッターによって出力することはなかったデザインですが,せっかくなのでここで供養をしておきたいと思います.
- ローマ数字を用いたデザイン
ユニークな使い方ができることで有名な\romannumeral
プリミティブを利用した,クラシカルな文字盤のデザインです.別に TeX でなくても作れそうです.
- 数式を多用したデザイン
TeX といえば「美しい数式組版」ということで,悪ノリで作ってしまいました.大学では抽象度の高い数学にしか取り組んでこなかったこともあり,具体的な数を表す数式を考えるとなると 3 あたりですでにネタ切れしてしまって辛かったです.なお実用性は(ry
- かわいい☃のデザイン
TeX で作る “本質的なモノ” といえば,ゆきだるま☃
というわけで,“画期的な” デザインも考えてみました.この文字盤デザインを作成するにあたっては,doraTeX さんのゆきだるまで素因数分解を可視化するアレに登場するマクロを流用させていただきました.
Adobe Illustrator を用いた AI 形式への変換
この部分は使用するレーザーカッターの機種や各工房の環境によって必要とされる要件が異なると思われるので,本稿の内容を再現する場合にはあまり参考にならないかもしれません.
Art Media Center のレーザーカッターを利用する場合は,以下の条件を満たす AI データを作る必要がありました.
- ファイル名は半角英数字のみ
- カラーモードは RGB
- CS3 互換
というわけで LuaTeX が出力した PDF を,Illustrator を用いてこれらの条件を満たすように編集します.
PDF を開いたら,まず「ファイル>ドキュメントのカラーモード」から「RGB カラー」を選択します.
次に,すべてのオブジェクトを選択した状態で「書式>アウトラインを作成」を押して文字の部分をアウトライン化します.
あとは,CS3 互換の AI 形式でこの画像を保存するだけです.簡単ですね!
3. 文字盤を作成する
さて,文字盤データができればあとはレーザーカッターに仕事を丸投げできてしまいます.
ここまでで作成した AI データを入れた USB フラッシュドライブ(セキュリティとか知らない)と文字盤にする木板を持って,I さんと共に例の Art Media Center を訪問しました5.ちなみにその工房というのはこんなところです.
写真の中央部に写っている大型の(?)マシンが今回使用したレーザーカッターで,Epilog Laser 社の Fusion シリーズの機種のようです.
現地での作業はとても簡単で,普通のプリンタで普通の書類を印刷するのとほとんど手順は変わりません.
まず持ち込んだ入力データを併設のコンピュータで開き,「印刷」ボタンを押して,印刷設定のダイアログを開きます.ここでプリンタとして「Epilog ***」を選択します.
すると,今度はレーザーカッターの設定ダイアログが現れるので,彫刻や切断のスピードやパワーなどの設定を行います.
今回,私たちは初めてレーザーカッターを使用したので,このあたりの設定の最適解についてはよくわからなかったのですが,とりあえず Art Media Center に用意されていた手順書で推奨されていた値をそのまま採用しました.
コンピュータ上での設定ができたら,レーザーカッターの蓋を開けて指定の箇所に木板を正しくセットします.当たり前ですが,彫刻したい面を上にします.
さて,ここまでできたら若干の緊張感とともに GO ボタンを押します.ポチッと……
すると,あとはレーザーカッターがすべてよしなにやってくれます.作業が完了するまで時間があるので,のんびり待ちます.
レーザーカッターのしくみの詳細は本稿では省略させてもらいますが,基本的には普通のインクジェットプリンタのようにヘッドが左右を往復しながら移動していき,このヘッドから適切なタイミングでレーザーが照射されることによって素材が彫刻されていきます(ラスター彫刻).
写真でもこの速度感が伝わるでしょうか.今回作成したのは直径が 280mm の円形の文字盤ですが,だいたい30分程度で彫刻が完了しました.
ラスター彫刻が終わると,次は自動的にベクター切断モードに切り替わり,3時の方向から反時計回りにヘッドが円を描いて,板が切断されていきます.少し炎が立つので驚きますが冷静に見守ります.外枠の切断が終わるとヘッドが自動的に中心の穴の所に移動して,こちらも丸く切り抜かれます.切断は1分もかからない程度で終わりました.
無事に文字盤ができました!
4. 仕上げ
レーザーカッターで作成した文字盤にそのまま針を取り付けてもよかったのですが,少し「バリ」やレーザー照射によって木材が焦げた「スミ」が気になったので,サンドペーパーと固く絞った濡れ雑巾でそれぞれを除去して仕上げます.
5. 文字盤にムーブメントと針を取り付ける
最後に,用意してあったムーブメントと時計針を,メーカーの説明の通りに文字盤に取り付けます.これは本当に簡単で,30秒足らずで組み立てられました.
はい,これにて完成です!
制作ムービー
ここまで文章と写真だけで時計の作成工程を説明してきましたが,レーザーカッターが動いているところは実際に見ていただいた方が面白いだろうと思います.
というわけで,今回の時計制作の様子を1分間の短いムービーにまとめてみました.動画は YouTube にアップロードしてあります.
それでは皆さん,よいクリスマスをお過ごしください!
-
加工可能な素材は機種によって様々ですが,典型的には木材・樹脂・金属などが挙げられます. ↩︎
-
芸術大学のような特殊な施設でなくとも,有償で一般向けにレーザーカッターをレンタルしている工房が日本各地にあるようです.レーザーカッターを使用したいけれど協力を仰げる芸大生の知り合いがいないという場合は,そのような施設を利用するといいかもしれません. ↩︎
-
私が利用した Art Media Center のレーザーカッターの場合,正確には「線幅 0.001pt の黒い線」の部分が切断される仕様でした. ↩︎
-
正確には fontspec パッケージが見つけることのできる場所にフォントがインストールされている必要があります. ↩︎
-
私は部外者ですが,I さんの協力者という形で入室許可をもらいました.また撮影の許可もいただいています. ↩︎