隅歩つ

書いて理解を深める

pipの使い方

Pythonのライブラリをpipで更新する時、毎回やり方を忘れてしまう。

毎回ネット検索するのは大変なので、残しておきたい。

バージョン

pipのバージョンの確認

pip -V
pip --version

pipのバージョンアップ

python -m pip install --upgrade pip

リスト表示

全部表示

pip list

バージョン表示

pip freeze

最新版

最新版があるパッケージを表示

pip list -o
pip list --outdated

最近版をインストール

pip install -U package-name

インストール

インストール

pip install package-name

アンインストール

pip uninstall package-name

TouchDesigner で動画を書き出す方法(2 パターン)

TouchDesigner は作業中も常にプレビューできるので、動画の書き出し方を忘れがちです。

ということで、忘備録として残します。

circle が audio にあわせて大きさが変わるものを作成しました。

必要となるのは、矢印の[audio file in][out][movie file out]部分です。

TouchDesignerで動画を書き出す

パターン 1 [ Export Movie ]

ざっくり手順です↓

  1. Fileから[Export Movie…]を選択
  2. [Top Video]に完成版(nullなど)をドラッグ・アンド・ドロップ
  3. [Render Movie]の[Start]ボタンを押す
  4. ダウンロードされる

1つ目は [ File ] の [ Export Movie ] を使います。

[ Export Movie... ] を選択すると以下が表示されます。

矢印のところを設定して、一番下の「Start」ボタンを押します。

TouchDesignerで動画を書き出す

「TOP Video」と「CHOP Audio」にはドラッグ・アンド・ドロップで設定できます。

設定できたら、一番下の「Start」ボタンを押して、しばらくするとダウンロードされます。

パターン 2 [ Movie File Out TOP ]

ざっくり手順です↓

  1. 「Movie File Out」を「out1」につなげる
  2. 「Audio File in」を「Movie File Out」の「Audio CHOP」にドラッグ・アンド・ドロップする
  3. 「Record」を「On」にする
  4. 「Record」を「Off」にする
  5. ダウンロードされる

2つ目は、「Movie File Out TOP」を使います。

「OP Create Dialog」の「Movie File Out」を「out1」につなげます。

そして、「Movie File Out」の以下の画像の丸部分を設定します。

TouchDesignerで動画を書き出す

「Audio CHOP」にはドラッグ・アンド・ドロップできます。

設定後に「Record」を「On」にすると書き出しがスタートします。

ストップするときはもう一度押します。

パターン2は、時間の調整が可能です。

もっと別のいいやり方がありそうですが、とりあえずこの2つの方法で書き出せます。

yuuuha.hatenablog.com

Blenderでmaterialを半分で違うものに分ける

Blenderでmaterialを半分で違うものに分ける

Pythonの勉強のためにBlenderを始めました。

けど、Blenderを普通に使えるようになったら楽しそうと思うようになりました。

Shader Node

特にShader(Shading)を理解したいです。

ということで、基本的なことから始めます。

この本にあるShader Nodeの章にあるShader Nodeをやってみました。

PlaneのMaterialを半分で違うものにします。

まず、画面をShadingします。

そして、以下のノードを追加します。

  1. Texture Coordinate
  2. Separate XYZ
  3. Greater Than

[Texture Coordinate]の[Generated]を、
[Separate XYZ]の[Vector]につなぎ、
[Math][Greater Than]の[Value]につなぐ。
そして、[Greater Than]の[Value]を[Principled BSDF]の[Metallic]につなぐ。

Blenderでmaterialを半分で違うものに分ける

これで、Planeが半分はRoughnessで、半分がMetalicになる。
※ベースをMetalicにしています。

Blenderでmaterialを半分で違うものに分ける

Texture CoordinateのGenerated

Texture CoordinateのGeneratedがよくわからないです。

調べてみると以下のようにありました。

変形前のメッシュの頂点位置から自動的に生成されたテクスチャ座標。座標は、サーフェスのアニメーション時でも保持します。未変形のメッシュのバウンディングボックス上で0.0から1.0の範囲。

docs.blender.org

オブジェクトのバウンディングボックスに一致するように Location(位置) と Size(サイズ) を変更します。これにより、 Auto Texture Space(自動テクスチャ空間) が無効になります。これはカーブオブジェクト専用であることに注意してください。

docs.blender.org

おそらく、Texture CoordinateのGeneratedでUV座標を付けるのだと思います。

Blenderでmaterialを半分で違うものに分ける

yuuuha.hatenablog.com

BlenderでObjectを光らせたい

Pythonの勉強のためにBlenderをやり始めたけど、Blenderも使いこなしたいなと思うようになってきた。

サイバーパンクな世界観を作りたいので、光らせる方法を調べてみました。

発光・グローの作り方

私が知りたかったすべてが以下の動画にありました。
動画の時間も短くてサイコーです。


www.youtube.com

eeveeの場合

Shadingで「Use Nodes」した後、「Principled BSDF」を削除し、「Shader」の「Emission」をつなげます。そして、ColorとStrengthを調整します。

BlenderでObjectを光らせたい。eeveeの場合

次に、「Render Properties」の「Ambient Occlusion」「Bloom」「Screen Space Reflections」にチェックを入れます。

BlenderでObjectを光らせたい。eeveeの場合

レンダリングすると、以下のように発光します。
eeveeの場合はライトも設定する必要があるようです。

BlenderでObjectを光らせたい。eeveeの場合

cyclesの場合

cyclesの場合は、Render Engineを変更するだけではダメなようです。

「Compositing」で「Glare」を足して、「Frog Glow」にします。
この作業でオブジェクトの周りの光を作っているようです。

BlenderでObjectを光らせたい。Cyclesの場合

これで完成です。

BlenderでObjectを光らせたい。Cyclesの場合

eeveeでもCyclesでもライトの設定は必要ですね。

yuuuha.hatenablog.com

NumPyの基本

Pythonを勉強しているとNumPyはたくさん目にする。

NumPyは行列とか数学的なことをする場合に使うものだと思っていて、勉強するのはもう少し後になるのかなと思っていました。

けど、全然そんなことはなく便利でした。

便利なNumPy

▼ まず、NumPyをインポートします。

import numpy as np

▼ 基本のリスト

np.array([1,2,3])
# array([1, 2, 3])

▼ 1行以上のリスト

np.array([[1, 2, 3], [4, 5, 6]])
# array([[1, 2, 3],
#        [4, 5, 6]])

▼ リストの行と列の数の確認

a = np.array([[1, 2, 3], [4, 5, 6]])
np.shape(a)
# (2, 3)

▼ 複数の行と列

np.eye(3,3)
# array([[1., 0., 0.],
#        [0., 1., 0.],
#        [0., 0., 1.]])

▼ 0のリスト(1行)

np.zeros(10)
# array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

▼ 1のリスト(5行5列)

np.ones((5,5))
# array([[1., 1., 1., 1., 1.],
#        [1., 1., 1., 1., 1.],
#        [1., 1., 1., 1., 1.],
#        [1., 1., 1., 1., 1.],
#        [1., 1., 1., 1., 1.]])

▼ 1ずつ増えるリスト

np.arange(1,11)
# array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

▼ ランダム

np.random.random((3,3))
# array([[0.08910152, 0.44080173, 0.67781888],
#        [0.71417229, 0.49370306, 0.06723678],
#        [0.63298313, 0.43933795, 0.24166997]])

▼ 最大値(上のランダムのリスト)

np.max(a)
# 0.714172289264594

▼ 最小値(上のランダムのリスト)

np.min(a)
# 0.06723677920677973

▼ 平均値(上のランダムのリスト)

np.mean(a)
# 0.42186947810066644

▼ すべて0の5行5列のリスト

np.full((5,5),0)
# array([[0, 0, 0, 0, 0],
#        [0, 0, 0, 0, 0],
#        [0, 0, 0, 0, 0],
#        [0, 0, 0, 0, 0],
#        [0, 0, 0, 0, 0]])

今後、どんどん足していきます。

用語がわからないのでテキトウに書きました。
少しずつ修正していきます。

yuuuha.hatenablog.com