2018-03-21

山種美術館

桜を題材にとった大量の日本画は見応えがあった.桜の花弁のように,薄くて光を拡散するものをどう表現するかの相違がみられて楽しい.淡彩素描としてさらっと塗って紙色と対比する,画面に対して盛り上げる,ぼかして塗る,油画のように塗るなどなど.

半分くらいの絵を近くで見ることができ,また比較的空いていたので立ったりしゃがんだりしながら視点を変えて眺めた.金箔を例に出すまでもなく,日本画は拡散反射の度合いが画面の場所ごとにまったく異なる.たとえば,紙は胡粉よりも多少つややかで,質感に異方性がある.

山種美術館では照明はおおむね天井に固定されていたから,縦方向に視点を移動するのが違いを最も強く感じられる.視点移動で知覚される質感の違いが意図されたものだとすれば,西洋絵画とはまた違う立体感の演出方法だと感じた*1.額に入れてガラスで覆ってしまうと,このあたりの面白みが少し減ってしまうようにも思われるが,作品保護という面もあるので一概に批判もできない.

金箔地のつくる空間については面白そうな研究*2を見つけた.この人の研究が僕の思っていたことをほとんど網羅してくれているので,そのうちNDLに読みに行こうと思う.

《醍醐の桜》(奥村土牛)は,いずれ実際の桜を見に行きたい.今年はもう咲いているようだ.土牛といえば,薄い絵具を何度も塗り重ねてあの色彩に到達したと読んだことがあるが,それだけではないように思われた.ひとつの塗り跡の中心は胡粉が,周辺は色のついた顔料が支配的であるように見えたが,絵具を薄く溶くと完全に乾くまでの間に何かの性質によって分離するのだろうか.

《春静》(東山魁夷)は,杉林と桜で顔料の凹凸の目の方向が異なっていたのが印象的だった.杉林では水平方向に筆の目が通って見えたが,桜は点描のごとく等方的に描かれていた.《桜花》(小林古径)は,花とともに赤い若葉を正面から描いており,端正で簡潔だった.

それにしても,山種美術館に行くと毎度雨や雪に見舞われているように思う.

根津美術館

近いので,根津美術館まで足を伸ばした.香合にはまったく興味も知識もなかったので,面の張りや細工の技巧を眺めるくらいしかすることがなかったが,そうして見るだけでもなかなか面白い.展示されているものの質感を頭の中でアルマイトなどに付け替えたりしてみると,不思議とそれでも成立しそうに思えてくる.折角なので微妙な面の歪みをスケッチしようと試みたが,どうもうまくいかない.形を強調して描くと良くないので,別途矢印などで示すのがよいのかもしれない.

庭園は静かで,冷たい雨に濡れる緑は心が落ち着いてよいものだった.橋の面から水面までのレベル差が300くらいしかなく,これくらいになると水が随分近くにあるという感じがする.現代の水盤とは違って,底が見えず,おそらくは軟らかい泥だろうというあたりから緊張感が出てくるのかもしれない.

石は濡れると表面仕上の表情があらわになる.粗面の仕上でもある程度空や周囲の明暗くらいは映るようになるから,幅広に浅く面を取っておくだけで随分それが際立つというのはひとつの発見だった.建材の知識があれば,何々仕上がどうと書くこともできただろうから,惜しいことである.

自作キーボード

予想されたことだが,まったく進捗していない.足の形をどうしたものかというあたりで無限に足踏みしている.

気分転換に,身の回りの面取りの半径を少し調べた.MacBook Pro Retina のカドは C0.14 くらいで面取りしてある.Anker の USB-C ハブはC0.2くらいだった.すごい世界で戦っているものである.

*1:2018-03-25 追記: 西洋絵画と日本画の違いについては,小林英彦:色と質感 浮世絵と国絵図から見えてくるもの,色の博物誌──江戸の色材を視る・読む pp.169-172 に少し述べられている

*2:文 眞英:総金箔地屏風絵での表現技法の再解釈による現代の空間表現について,https://www.housen.or.jp/aid/painting/result/pdf/26_06_wen.pdf

キーボード自作計画 1

これは何

メカニカルキーボードの自作が流行っているので,折角だからうちでもキーボードを作ることにした.

とはいえ,図面を引くための資料を集めて満足して終わるのがいつもの流れである.背水の陣にすれば少しは作る気も起きるだろうと思い,製作の過程を晒しながらやっていきたい.筐体を作る方法は,レーザーカット,3Dプリント,CNCなどがあり,おおむね後ろにいくほど高価になる.せっかくなので CNC を最終目標にして,その間で色々試したりしてみるつもり.

続きを読む

Vezér + Processing でキーフレーム

概要

  • Processing は便利だが,キーフレーム・音同期のハードルが高い
  • キーフレームだけ別のソフトから送ってあげればよいのでは?
  • Vezér を使って Processing にキーフレームだけ送る

f:id:lunar0:20170919015941p:plain
処理全体の流れ


1. Vezer 側の準備

ダウンロードと初期設定

  • Vezér の体験版をダウンロードします.
  • 起動したら New Project をクリックします.
  • メニュー > Vezér > Preferences > OSC
  • OSC Outputs の Port を 8000 に設定します*1

f:id:lunar0:20170919022130p:plain
送り先のポート番号を確認

トラックを作る(レイヤーのようなもの)

  • 画面下・中ほどの [+] ボタン(図の赤丸)から,新しいトラックを作成します.OSC Value を選びましょう.
  • OSCアドレス(図の赤枠)に /video/key1 と入力します*2

f:id:lunar0:20170919024630p:plain

キーフレームを打つ

  • トラックの適当な場所をダブルクリックすると,キーフレームを打つことができます.
  • キーボードでスペースバーを押すと,カーソルが動いて再生されていることがわかります.

f:id:lunar0:20170919024844p:plain


2. Processing 側の準備

ダウンロードと初期設定

  • Processing 3 をダウンロードします.
  • 起動して,OSCP5 をインストールします.
    • メニュー > Sketch > Import Library > Add Library…
    • 検索窓に oscp5 と入力して,出てきたライブラリをインストール(右下のボタン)

f:id:lunar0:20170919023038p:plain
左上の検索窓からライブラリを検索する

Processing のコード

/* OSCP5を使うための準備 */
import oscP5.*;
OscP5 oscP5;

/* 受信したキーフレームを入れておく変数 */
float oscKey1 = 0.0f;

void settings() {
  size (200, 200);
}

void setup() {
  oscP5 = new OscP5(this, 8000);
  rectMode(CENTER);
}

void draw() {
  background(0);
  // フレームごとに,受信した値の大きさで四角形を描く
  rect(width/2, height/2, width*oscKey1, height*oscKey1);
}

/* キーフレームを受信したときの処理 */
void oscEvent(OscMessage message) {
  if (message.checkAddrPattern("/video/key1")) {
    // 先の変数に受信した値を書き込む
    oscKey1 = message.get(0).floatValue();
  }
}

3. 実行してみる

  • Processing の再生ボタンを押します.
  • Vezér の再生ボタンを押します.
  • うまくいけば,添付画像のように,四角形が打ったキーフレームにしたがって伸縮するはずです.

f:id:lunar0:20170919025122p:plain

*1:実際には,何でもかまいません.ただし, Vezer と Processing で同じ番号を使う必要があります

*2:これも任意に決めて構いません.ただし, Vezer と Processing で同じ文字列にする必要があります

「かえうち」を買った

概要

2018-03-21 追記:現時点では,改善によりかなり機能やUIが変わっているようなので,この記事の内容は参考にならないと思われます

USBキーボードのキー配列を変換できるハードウェア「かえうち」を買った. 管理者権限のない Windows パソコンでも好みのキーボード配列を使用することができるのが利点.設定画面はやたら難しかったが,高機能な設定ソフトウェアというのはそういうものなのかもしれない.

f:id:lunar0:20170911021142j:plain

使ってみる

設定の目的

  • システムの設定が JIS になっている Windows 環境で US キーボードを使う
  • Cocoa キーバインドWindows でも使いたい
    • Ctrl は Windows の Ctrl として使って Caps を Mac でいうところの Ctrl のように使いたい

設定内容

そもそもどうやって操作するか
  • 画面の下半分でマッピング先のキーを選択
  • その状態で画面の上半分をクリックすると,選択したキーが入る
JIS → US 変換
  • 「修飾キーを押している間の配列面」を,Shift 左右ともに「1」に設定.
  • JISとUSで記号が違っているところを,全てUS基準に変える(ピンク色の部分).
    • Shift を押さない場合の記号は配列面 0 に入れる.
    • Shift を押した場合の記号は配列面 1 に入れる.

f:id:lunar0:20170911015108p:plain

f:id:lunar0:20170911015123p:plain

Cocoa キーバインド
  • Cocoa キーバインドを配列面2に入れる.
    • C-k は Ctrl+Shift+End Ctrl+x のようにマクロを設定する
    • C-o はあきらめる
  • 配列面0で Caps Lock を押したときに配列面2が呼び出されるように設定する.
    • Caps Lock をユーザモディファイヤ0として使う
    • ユーザモディファイヤ0で配列面2が呼び出されるようにする
    • Caps Lock 単体押しは殺しておきたいので,単体押しは「無効」のまま

f:id:lunar0:20170911015229p:plain

f:id:lunar0:20170911015335p:plain

f:id:lunar0:20170911015810p:plain

左Winを殺して,左Win + Caps → Caps
  • 左 Win をユーザモディファイヤ1として使う
  • ユーザモディファイヤ0で配列面2が呼び出されるようにする
  • 配列面2の Caps の位置に,モディファイヤキーなしの Caps を置く
  • 左 Win 単体押しは殺しておきたいので,単体押しは「無効」のまま

f:id:lunar0:20170911020331p:plain

f:id:lunar0:20170911020436p:plain

f:id:lunar0:20170911020152p:plain

IoTを作った

IoTでビッグデータディープラーニングTシャツ,略して IoT を作ったので,買わなくていいですよ. 届いたらまたこのあたりに写真を貼ります.

書体雑感

最近使った書体を,ウエイトを揃えてベタ組みで4つほど並べてみた.このなかでは,縦組みでは本明朝(新がな)が一番好みに思える.書体は本文の内容なども考えて選ぶべきもので,どれが好みで,また好みでないというのは,実際には比較的どうでもいい部類に入るかもしれない.

f:id:lunar0:20170117025827p:plain


さて,本明朝には Book というウエイトが設定されている.概ね L と M の中間のウエイトとのことだが,どうもかなだけでなくて漢字の形も随分違うようだったので,重ねてみた.単なる L と M の補間ではなく,例に出した「飾」の偏を見ても,各部の重心や向きがかなり調整されているのが見てとれる.

f:id:lunar0:20170117025839p:plain


何の情報もない組見本で考えたほうが幸せな場面もあるかもしれない.便宜上番号をふったが,本当は冊子の形にして,ページ番号と書体名の対照表でもどこかに置いておけば済む話である.

f:id:lunar0:20170117032220p:plain

Unity で DDS を読む

概要

Unity で画像をランタイムに読み込みたいとき,速度を重視するならば DDS 形式が便利.Mac では変換に使えるソフトが少ないが,圧縮率を試行錯誤する必要がなければ crunch-osx が便利.

追記: fnord software がDDSを読み書きできるオープンソースの Photoshop プラグインを公開している.ありがとう fnord software 😊😊😊🙏🙏🙏

経緯

問題

Unity に100枚くらいのスカイボックス(=600枚の4K×4K画像)を読み込ませたらデータが壊れた.10枚くらいのときは動いていたのでバグなのだろうが,泣いていてもしょうがないのでワークアラウンドを考える.

方法1: WWW.LoadImageIntoTexture()

Unity - Scripting API: WWW.LoadImageIntoTexture

利点
  • 簡単
  • JPG, PNGが使える
  • テクスチャをあらかじめ DDS に変換しておく手間がない
欠点
  • 遅い(小さな画像では気にならない)

方法2: Texture2D.LoadRawTextureData

Unity - Scripting API: Texture2D.LoadRawTextureData

利点
  • 読み込みが圧倒的に速い
欠点
  • 使い慣れたファイル形式が使えない
  • DDSに変換するのが遅い

結果

方法1を試したらテクスチャのロード時間が体感的に長かったので,方法2を使うことにした.面倒なので測定はしていないが,体感的に問題にならなさそうだったらわざわざ DDS に変換する必要はないだろうと思われる.画像を DDS に変換するにはそこそこ時間がかかる.1枚30秒〜1分くらい? 少なくとも Unity が JPEG を読み込むよりも遅い.

DDS を読み込む具体的な方法は Can you load dds textures during runtime? - Unity Answers を参照のこと.

注意点

そのまま Unity に読み込むとテクスチャが上下反転されるので, crunch-yflip オプションを使う.たぶん OpenGL が左下原点なのと関係があるのだろう.

$ crunch -dxt1 -fileformat dds -mipmode none -yflip -file inputimage.tga