2021.01

ZBrush を初めて起動した

去年のセールで買ったきり放置していた ZBrush を使い始めました。思ったより癖が強くてびっくりしました。とはいえ、オペレーションに慣れてしまえばあとは純粋な造形力の勝負という感じで能力の圧倒的不足に向き合わされています。絵を描くのに比べると筋肉や骨格の知識が直接的に役立つ気がするので勉強にはとてもいいです。頂点を意識するモデリングはどうしても造形よりトポロジーに目が行きがちなので、それと比べてもよりよい気がします。直近の目標はしわラボの素体を自由なライセンスにできるように自分で用意することですが、当たり障りのない素体を作り続けるのはつまらないので早く終わらせてかわいく動く美少女を作りたいです。でも UV 展開とリギングはやりたくありません。なんとかなりませんかね。

鶏と魚は皮を弱火でひたすら焼くとおいしい

最近フライパンのコーティングが剥がれてきたのでティファールから鉄製のものに変えました。それに伴って油をちゃんと敷くようになり、すべての炒めものがおいしくなりました。特にオムレツと鶏 / 魚のソテーはとてもおいしいです。オムレツは油を大さじ1敷いてよく予熱したフライパンに鶏ガラスープの素を小さじ0.5混ぜた溶き卵を入れて焼くだけ。卵をフライパンに落としたときにジュッと言うくらいがちょうどいいです。今までは空焚きがコーティングに良くないというのを過剰に意識して温まりきらないうちに入れていたのですが、しっかり予熱することで剥がれやすく外はカリッと中はトロッとしたとてもおいしいオムレツが焼けるようになりました。(テフロンは 200 ℃以上(つまり油が発煙し始める温度)にすると良くないということで、この程度の予熱なら問題はなかったはずです。)鶏や魚のソテーは塩を振って10分くらい置いたあと片栗粉(小麦粉がないので)をまぶし大さじ1の油を敷いたフライパンが熱くなり始めた頃に皮目から入れます。極めて弱い火で10分少々焼くと匂いが変わってくるので様子を見つつしっかり焼き目がついたらひっくり返して最後まで火を入れます。弱火でしっかり焼くと皮がパリパリになってそれだけでおいしいです。これまで野菜と肉を曖昧に蒸したものを食べ続けていたのでおいしい焼き物ができるようになって幸せになりました。

ケトルベルとマットを買った

何か道具を買うと運動のモチベーションが上がると聞いて買ってみました。ケトルベルとはダンベルの丸い部分だけを切り取ってケトルの取手のような物をつけた重りのことです。僕は初めて知りました。今のところ1週間くらい続いているのでやる気には多少つながっている気がします。筋トレグッズの身体性は馬鹿になりません。

AtCoder に登録した

何かあったときにさらっと DP が書けるようになりたいので練習します。とりあえず積んでいた蟻本を引っ張り出しました。

2021 やること

アニメを作る

自分の技術的興味と好みを満たせるものが何かと考えたときに 3DCG アニメがそれだと気づきました。 昔から完成作品を作ることよりもアセットパイプラインを整えることにのめり込みがちなのですが、本質に集中していきたいです。

ツールをいくつかリリースする

2020 年末は しわラボ を作っていました。 実用に供するにはまだ先が長いので引き続きがんばります。 3D のパイプライン整備、モデル・ポーズデータの作成、web フロントエンド開発とタスクが幅広いのでおもしろいです。 また、他にもアイデアだけ温まっている制作ツールがたくさんあるのでその中から一つ実装したいと思っています。

しかし、個人制作かつ中途半端な状態から公開していくような作り方をする場合、リリースって何なんでしょうね。

シェーダー芸に入門する

ピクセルシェーダーはある種の絵を描くための画材として非常に優れています。 そのスイートスポットを自分の絵に取り込みたいです。 最近 shadertoy をみてすごいやつを真似ています。

普段お世話になっている OSS を読む

何かをイチから作るのはおもしろいですが、そればかりだと自分のわかっている範囲のコードしか書かず技術的な向上が少ないので既存のすばらしいソフトウェアスタックに学びたいです。

ネタ帳:

量子情報を学ぶ

SF の面白さは現実世界の見方が変わる点にあると思っていますが、そもそも世界のありかたを古典物理の範囲でしか理解できていない(いや、古典物理すらわからない……)現状では楽しめる範囲が限られているように感じました。 古典計算機プログラマーがいらなくなった場合に量子計算機プログラマーに転身できるようになるという打算も込みで、世界の解像度を上げるために量子情報と関連する分野を芋づる式に勉強します。

【Blender】 いらないシェイプキーをまとめて削除する

使わないシェイプキー(Maya, Unity で言うブレンドシェイプ)が大量にあってファイルサイズが無駄に肥大化している場合、Python スクリプトで一括削除すると便利です。

シェイプキーが大量にある例
いらないシェイプキーが大量にある……

シェイプキーが設定されているメッシュが m_avg オブジェクトにあり、Basis シェイプキー以外を削除したい場合は以下のようなスクリプトを実行します。

f:id:arcturu:20201228184532p:plain
m_avg オブジェクト内のメッシュのシェイプキーを消したい

import bpy

# 消したいシェイプキーが存在するメッシュのオブジェクト名
target_name = "m_avg"

# 当該オブジェクトを選択する
bpy.data.objects[target_name].select_set(True)

# シェイプキーのリストを取得する
shape_keys = bpy.data.objects[target_name].data.shape_keys.key_blocks

# シェイプキーのリストを逆順に舐める
# (先頭から消すとインデックスがずれるので後ろから消す)
for i, shape_key in reversed(list(enumerate(shape_keys))):
    # 消したくないシェイプキーは除外する
    if shape_key.name != "Basis":
        # シェイプキーを選択して、削除
        bpy.context.active_object.active_shape_key_index = i
        bpy.ops.object.shape_key_remove()

参考

tangent がないモデルに法線マップを貼る

キーポイント

tangent space 法線マップを貼る際には、法線マップを作ったときの接空間を頂点ごとに復元する必要があります。一般には DCC ツールからのエクスポート時やゲームエンジンへのインポート時に tangent を計算してモデルの頂点属性に tangent を追加することが多いですが、頂点属性に tangent を入れずにフラグメントシェーダーで tangent を動的に計算することで接空間を復元することもできます。

tangent 再計算のためのキーとなるのが GLSL の dFdx() / dFdy() 関数(HLSL では ddx() / ddy() 関数)です。tangent を計算するには UV 座標とピクセルの位置座標の偏微分が必要ですが、dFdx() / dFdy() を使えばそれが求められます。(ただし、この関数で計算できるのはスクリーン座標系での偏微分なので適宜座標系を変換する必要があります。)

詳細

VFX of 2020.04

ツイッターで見たかっこいいエフェクト / 3DCG のまとめ 2020.04

 

 

VFX of 2020.03

ツイッターで見たかっこいいエフェクト / 3DCG のまとめ 2020.03

 Mitsuba 2 のソースコード公開

 汎用的なアイデアな気がする

 汎用的なアイデアな気がする(2)

VFX of 2020.02

ツイッターで見たかっこいいエフェクト / 3DCG のまとめ 2020.02

解説:Create nice and feasible volumetric cloud in Unreal Engine 4 | Asher.GG