歪曲収差を実現する

レンズを使ったカメラでは、映像が歪んで見えてしまうことがあります。

第17回 :レンズの大敵を探る 〜収差 3〜 デジカメの「しくみ」

"歪曲収差"と言う現象で、一般的に歪曲収差が少ないことがレンズ性能の良し悪しの判断で重要になってくるそうで。

3次元空間のある点を撮影して画像座標を得る時、 歪曲収差の無い理想的なレンズで(x_u, y_u)、 歪曲収差のあるレンズで(x_d, y_d)、 画像中心から(x_u, y_u)までの距離をr、 レンズの歪みをk_1 ~ k_5で表すと、 歪曲収差は以下のようにモデル化することができます。


x_d = (1+k_1r^2 + k_2r^4 + k_5r^6)x_u + 2 k_3 x_u y_u + k_4 (r^2 + 2 x^2_u)


y_d = (1+k_1r^2 + k_2r^4 + k_5r^6)y_u + k_3(r^2 + 2 y^2_u) + 2k_4 x_u y_u

ただし、実使用上はk_3以降は無視出来ることも多いらしく、以下のように簡略化する事も多いようです。


x_d = (1+k_1r^2 + k_2r^4)x_u


y_d = (1+k_1r^2 + k_2r^4)y_u

これを参考にして歪曲収差をGLSLで実現した物が以下。(表示崩れ回避の為gist使用)

歪曲収差の実現 · GitHub

twigl.app

参考

GLSLの冒頭の1行目について丁寧に解説する - Qiita

[GLSL] Shadertoyのシェーダ芸人になるためのTips集 - Qiita

ディジタル画像処理[改訂新版]

ディジタル画像処理[改訂新版]


数式とコード書こうとすると表示崩れてしまうのだが、両立させる方法あるんだろうか

ゆるレビュー】画像管理ツールAllusion

Allusionを人に紹介する用の簡単なレビュー。意外と話題になってなかった。 3dnchu.com

インスコまで

公式サイト allusion-app.github.io f:id:sareco:20210519235403p:plain OSを選択、流れに従いインストール

画像を追加

起動すると何も無い画面が出てきます f:id:sareco:20210519235654p:plain

左上Locations>+から資料追加ができます。サブフォルダもすべて走査して画像を読み込んでくれるみたいです。 f:id:sareco:20210519235829p:plain

読み込まれたファイルたち(ねっとで拾った画像ばかりなので念のため隠す) f:id:sareco:20210520003811p:plain

画像閲覧

ショートカットはsettingsから確認することができる f:id:sareco:20210520004021p:plain

f:id:sareco:20210520004345p:plain

詳細検索を使えば、タグだけでなくファイル名や拡張子に文字列を含む、なども可能。 f:id:sareco:20210520004449p:plain

ローカル版pinterest的な雰囲気。

直接AllusionからPureRefに画像をDDすることができる。

PureRef単体だとぽいぽいしてるうちにどうしてもリファレンス増えて重く+整理めんどくなるので、雑にぶっこんで都度タグからDDとかできるようになっていいのかも。

ちなみにタグ付けのメタデータも吐き出して共有できるみたいだから大人数での画像イメージ共有とかも最低限できそう。 f:id:sareco:20210520005441p:plain

github.com オープンソースなので既存のツールに組み込むこともできそう。PerforceのHTMLタブとか。

【Photoshop】Photoshop Shader Pluginの導入

使い方が分からないと嘆いている方を見かけたのでとりいそぎ。

導入

Photoshop Shader Plugin by Vladimir Rymkevich, Alexandr Zelensky

  1. 公式からダウンロード(3ドルぐらい

  2. 落としてきたファイルのShaderPluginInstaller_v1.1_x64.exeをダブルクリック

  3. 以上

成功している場合C:\Program Files\Adobe\Adobe Photoshop 2020\Plug-ins 以下に ShaderPluginができています。

f:id:sareco:20201109233348p:plain

使い方

f:id:sareco:20201109232156p:plain
ウィンドウ表示はフィルターから

対象のレイヤーを選んだ状態でフィルター>Shader Pluginで起動ができます。v1_1から管理者権限での起動も必要がなくなったようです。 一番上のShader Pluginメニューは直前に利用した内容の再適用でした。

大きく分けてImage / Settingsタブがあり、Imageの中でVertex / fragmentの記述ができるようです。

記述を見る限り、どうやらOpenGL3系のようですね。 wgld.org

f:id:sareco:20201110002215p:plain
fragmentだけかと思いきやvertexも使える

このようにrgbの反転を記述したfragment結果を適用させたい f:id:sareco:20201110002746p:plain

Applyを押すことで元のレイヤに対してフィルタが適用されます。

f:id:sareco:20201110002909p:plain
元レイヤに結果が適用された

サンプルもいくつか用意されていて、実装の参考にすることができます。

f:id:sareco:20201110003143p:plain
サンプル一覧

f:id:sareco:20201110003632p:plain
サンプル : セルシェーディング

つかいどころ

使い道は無限なのですが、Photoshopのあの機能を再現したい!となるとデフォルトでやりなさいってなるしタイリングーとか幾何学模様の作成ーとかいう時に輝く感じでしょうか。遊べはしそうです。

つかったがぞう https://pixabay.com/images/id-5713337/

【Helixcore】P4V HTMLTools

P4Vには内蔵ブラウザがあり、わりと自由にカスタマイズ出来る。

www.slideshare.net スライド19枚目

導入

HTMLツールを有効化

プリファレンス > Enable HTML Toolsをチェック

P4VJSサンプル

ちなみにRun HTML Tools in demo modeを押すとP4Vを再起動するまでサンプルのツールやウィンドウを有効に出来る。 サンプルの置き場は

C:\Program Files\Perforce\P4VResources\p4vjs 以下

P4VJSというモジュールが用意されている。

HTMLToolの追加

WindowとTab、そしてsubmitアクション前後の動きをカスタマイズできるActionの3つ。 CustomToolについては別の記事で。

後はシンプルな作りです。タブに関してはアイコンも設定する事ができたりします。 ツール構成をxmlでExport/importすることも出来るので、共通ツールとして配布も容易かと思います。

参照

www.perforce.com

簡易的にローカルサーバを立てる

CORS違反がうざくて手軽にローカルサーバ使うためにflaskを使った時のメモ。

導入手順

Flaskいんすこ

pip install Flask

はろわ

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'hello'

if __name__ == '__main__':
    app.run(port=8080)

表示されるhoge:8080でアクセスすると確認できるはず。ctrl+cで終了 ctrl+cに頼らない終了は参考資料参照(/shutdownで終了処理入れてあげてアクセスする奴)

ファイル構造について

root\
|--static\ //cssとjsはこの下
|  --index.js
|--templates\ //templates内にhtmlを置いてあげる
|  --index.html

HTMLを表示

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/index')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(port=8080)

参照

flaskのパスを指定する - Qiita Flaskの簡単な使い方 - Qiita python — ctrl-cを使用せずにflaskアプリケーションを停止する方法

【HelixCore】個人的メモ

About the P4Python User Guide

Helix Core P4コマンドリファレンスのバージョン情報

p4 where

ディポが割り当てられているワークスペースのパスを調べる

p4 where "depotname"

p4 set

現在のP4環境変数一覧を取得

p4 set

P4CLIENTにworkspaceを指定

p4 set P4CLIENT="workspacename"

p4 info

ClientNameのみを取得

p4 -Ztag -F %clientName% info

ShaderGraph/SubGraphのViewを2Dにする

環境

Unity2019.4.1f1

ShaderGraph@7.3.1

タイトルの通りです。後で機能追加されるかもしれませんが今のところEditorから変更する事が出来なかったので。 f:id:sareco:20200709080648p:plain

手順

ShaderGraph本体を編集可能にする

そのままだとRead-Onlyなので、 C:\Users\USER\AppData\Local\Unity\cache\packages\packages.unity.com\com.unity.shadergraph@7.3.1 を UnityProject\Packages 配下に移動させて編集可能な状態にします

【Unity】PackageManagerが提供するパッケージのダウンロード先と、パッケージを改造する方法 - テラシュールブログ

f:id:sareco:20200709081330p:plain

SubGraphNode.csの153行目PreviewModeを2Dにする

Packages\com.unity.shadergraph@7.3.1\Editor\Data\Nodes\Utility\SubGraphNode.csの153行目のPreviewModeを3Dから2Dに変更

f:id:sareco:20200709081755p:plain

Editor再起動

f:id:sareco:20200709081947p:plain

:done: