Blender 2.9: サブサーフェイスで青みがかる
序文
Blenderでサブサーフェイスを使うと何故か青みがかかる。
本記事ではサブサーフェイスの挙動を色々調べて、青みがかる原因を考察していく。
まあ結局サブサーフェイスの原理とか青みがかる原因とかわからなかったので、なんとかしたいという人は最後の部分だけ読んであとは読まなくていい。
バージョンは2.9で実験したが、2.8以下でも同様と考えられる。
とりま青みがからせてみる
Blenderを起動→モンキーを生成→ライトを真上に配置→マテリアルを生成
マテリアルは"サブサーフェイス"を"1.0"に設定。
ライトは100wに設定。(ライトが強すぎると青みがからない) 後は初期設定のまま。
ビューポートでEeveeレンダーしてみる。
モンキーと立方体の縁あたりが青みがかった。
やったぜ。(違うそうじゃない)
さらに細長い直方体を作って、立方体とモンキーに接近させてみる。
直方体に接近(接触)させた部分が青みがかった。
さらにライトを非表示にさせてみる。 もはや青色しかない。
ついでに直方体のマテリアルを生成、"サブサーフェイス"を"0.1"に設定。
ちょっとわかりにくいが、青みがちょっと減った。
ちくせう。(だからそうじゃない)
直方体の"サブサーフェイス"を"0.0"に戻して、立方体とモンキーのサブサーフェイス範囲を"10.0, 0.2, 0.1"にしてみる。
すっげえ青くなった。
あと赤色の縞模様が見えるようになった。
立方体の縁では黄色い帯が見えるようになった。
そもそもなんで赤みがかかるんや
マテリアルを生成した際の初期設定として、"サブサーフェイス範囲"は"1.0, 0.2, 0.1"となっている。
これはまあ赤みがかかるような設定なんや。
(サブサーフェイス半径とか言ってよくわかんないから説明するのやだ)
で青みがかかるのは赤の補色であるシアンの色が出ているから。
なんでかはよくわからない。
Cyclesでレンダーしてみる
デノイズはやらない。
サンプル数4では明らかにシアンのドット(ノイズ)が見える。
サンプル数を増やすと青みが減っているような気がする。 (気の所為?)
縞模様を観察してみる
赤色の縞模様は"サブサーフェイス"と"サブサーフェイス範囲"をいじると間隔が変わる。
"サブサーフェイス範囲"の設定次第では緑色の縞模様や紫色の縞模様ができたりする。(作ってみよう!)
"サブサーフェイス範囲"を"6.0, 0.2, 0.1"に設定して、ライトと視点をいじってみる。 赤色の縞模様の間にシアンが出ている。 実際GPickで色を拾ってみるとシアンだった。
結局どうすればいい
Subsurface Scattering — Blender Manualによると、サブサーフェイス範囲の値を平均に近づける(同じ値にする)といいらしい。
また本記事の実験より、Cyclesでサンプル数を多めに設定してもそれなりに効果はあるようだ。
あとは"サブサーフェイスカラー"を"サブサーフェイス範囲"の色に近づけるとか。
(情況によって変わるので色々試してくれ)
調べると悩んでる人はいるがイマイチ解決できてる感じがしない。
描き終わった時に見つかった文献
こっちの方が色々しっかり書かれている。
まとめ
ようわからん。 首痛い。
BlenderでOpenCLが使えない問題
序文
Blenderでレンダリングする際、設定でOpenCLを有効にしようとしたら"No compatible GPUs found for path tracing Cycles will render on the CPU"と出てきた。(日本語表記忘れた さーせん) これを解決させた。
環境
解決法
AMDGPUドライバ (2020-08-27)をダウンロードし、$ ./amdgpu-pro-install --opencl=pal,legacy
を実行、rebootしたら解決した。
以上
余談
$ amdgpu-pro-install
にはオプションが色々設定できるので、amdgpu-pro-install -h
又は以下サイトを確認されたし。
Radeon Software for Linux Installation | AMD (2020-08-27)
pal
とlegacy
の違いは知らん。
RaspberryPiにArchLinuxを入れる
序文
ラズパイB+にArchLinuxを入れるときに手こずった部分を書き記す。 全手順を解説するとは言ってない。
全手順は以下リンクで
無線WiFi
有線に繋げば楽なのだろうが、ラズパイやらノートPCを移動させるのがめんどかったので頑張った。
# netctl start (設定したやつ)
で繋がらなかった問題が生じたが、以下リンクで解決した。
pacman -Suy
が上手く行かなかった
keyが無いとかでエラーが出た。 以下リンクで解決した。 Arm build error · Issue #81 · sdrausty/TermuxArch · GitHub
まとめ
日本語文献充実してるからなんかあったら自分で調べろ。
Blender 2.8-betaでObjectを非表示にする
序文
BlenderでObjectを一時的に非表示にするにはObject選択中にH
Keyを押せばいい。
がしかしレンダリングをすると写ってしまう。
2.7xでは"render layer"をいじれば実現出来るが、2.8-betaでは"View Layers"をいじる。
手順
先ずは2つのオブジェクトを生成させ、レンダリング。 今回は赤の立方体を非表示にする。
次に赤の立方体を別のCollectionに移す。
最後に非表示にしたいObjectが入ってるCollectionを右クリックし、View Layer > Set Exclude
を選択する。
ショートカットキーはOutliner Window上(正しい呼び方かは知らん)でE
Keyを押すと良い。
3D Viewportから非表示になり、さらにレンダリングをしても写らない。
元に戻したいならView Layer > Clear Exclude
を選択、又はOutliner Window上でショートカットキーAlt + E
Keyを押せばいい。
参考文献
View Layers and Collections — Blender Developers Blog (2019/2/4)
ArchLinuxでHuion Kanvas Pro 13を動かす
序文
Windows10使いたくないでござる。
ペン機能が使えるようにする
ここ嫁わんわん。
Refactor UC-Logic driver and support new Huion tablets by spbnick · Pull Request #134 · DIGImend/digimend-kernel-drivers · GitHub
https://github.com/DIGImend/digimend-kernel-drivers/issues/215
https://bbs.archlinux.org/viewtopic.php?id=239082
ディスプレイが映るようにする
HDMI-USB変換ケーブル(FL2000DX)を使ってるため難航中。
スペクトル項の求め方
序文
遷移金属のスペクトル項の求め方がようやく(何となく)わかったので書き記す。
これが正しいやり方かどうかは知らんがまあ求められる。
d軌道に電子2つの()の場合
先ず電子のスピン状態を とする。
d電子2つの場合以下の場合がある。
(例えば ,は、d軌道にある"スピン状態がの電子"がそれぞれ2, 0個あるという意味)
ここでそれぞれの場合におけるスペクトル項を求める。
の場合
この場合はパウリの排他原理により、同じ軌道角運動量を持つ電子は存在できない。
(両方ともスピン量子数が同じで、2つの電子がd軌道に入っていて、かつ同じ"磁気量子数に対応する軌道"に入ることはできないということ)
また全スピン量子数は1になる。
電子の軌道角運動量が+1 .. -1の範囲内において、2つの電子の軌道角運動量の組み合わせは以下の3パターンが挙げられる。
+1, 0 +1, -1 0, -1
これはスペクトル項に相当する。
パターンの数は、要は順番を区別しない"組み合わせ"なのでで求められる。
次に電子の軌道角運動量が+2 .. -2の範囲内において、2つの電子の軌道角運動量の組み合わせは以下の10パターンが挙げられる。
+2, +1 +2, 0 +2, -1 +2, -2 +1, 0 +1, -1 +1, -2 0, -1 0, -2 -1, -2
これもパターンの数はで求められる。
このうち、[+1, 0-], [+1, -1], [0, -1]の組み合わせはスペクトル項と同じなので取り除く。
残りの7パターンがスペクトル項に相当する。
の場合
これはの場合と求め方が同じなので割愛する。
の場合
2つの電子スピン量子数が異なるため、それぞれ同じ軌道角運動量を持つことができる。
全スピン量子数は0になる。
2つの電子の軌道角運動量の組み合わせは5*5=25で結構いっぱいあるのでパターン一覧は書かない。
全軌道角運動量は4 .. 0 まであり、スペクトル項は大きい順にとなる。
全ての項をまとめる
の場合、及びの場合より、にはという項が含まれていることがわかる。
(左上付きの数字はスピン多重度の値(全スピン量子数の取りうる値の数)で、3の場合は三重項と呼ぶ)
また3つ目の## の場合より、にはという項が含まれていることがわかる。
この内、は三重項と重なるため、取り除く。
以上より、の場合のスペクトル項はとなる。
まとめ
LuaでAtCoder解いてみた
序文
AtCoderはプログラミング初心者にとって良い練習サイト
問題
Biginner001-Aを解く。
要は2つの整数を標準入力して減算して標準出力しれば良き。
コードと結果
h1 = io.read("*number") h2 = io.read("*number") print(h1 - h2)
https://www.lua.org/pil/1.htmlを見ながら書いた。
で結果がこちら。
結果: Accept 得点: 100 コード長: 66 Byte 実行時間: __7__ ms メモリ: 628 KB
え?おっそ。
書き直した結果
他の人の提出したコードを参考に書き直した。
h1 = io.read("n") h2 = io.read("n") print(h1 - h2)
で結果がこちら。
結果: Accept 得点: 100 コード長: 54 Byte 実行時間: 1 ms メモリ: 256 KB
速度爆上がりである。
どう違うんだ...