タグ: blender-manual

  • Blender : add-on取説~KJ Animated Morph Chaos Nodes ~ Objectの大きさ・波打ち・Noise・Jitter・TwistをAnimationで変化させる

    Blender : add-on取説~KJ Animated Morph Chaos Nodes ~ Objectの大きさ・波打ち・Noise・Jitter・TwistをAnimationで変化させる

    はじめに

    このadd-onを開発するきっかけは,炎・煙・雲などのもやっとした感じのshade nodeを作ったものの,その基底となっているobjectの形ももやっとしたほうが良いのではないかとの考えから作ってみました.

    KJ Animated Morph Chaos Nodes は、選択したMesh Objectに Geometry Nodes Modifier を追加し、Object全体の拡大縮小、波打ち、Noiseによる不規則変形、Jitter、Twist、Collapseなどをアニメーション的に変化させるためのAdd-onです。

    このAdd-onでは、Presetを選んでも作成されるNode構成は基本的に同じです。
    Presetは「作成するNodeを変える機能」ではなく、各Parameterを特定の変化パターンになるように初期設定する機能です。

    たとえば、Noise Only を選んでCreateすると、Noise関連だけが初期状態でONになり、Wave、Jitter、Twist、CollapseなどはOFFになります。後から別の変化を追加したい場合は、該当する Enable0 から 1 に変更し、関連Parameterを調整します。


    Add-onの目的

    このAdd-onの目的は、Objectに対して次のような変化を作ることです。

    • X/Y/Z方向の拡大縮小
    • Frameごとの大きさ変化
    • Sine波による周期的な伸縮
    • 表面の波打ち変形
    • Noiseによる不規則変形
    • Jitterによる細かい震え
    • Z軸方向のTwist
    • Collapseによる崩れ方向の変形
    • Z方向Maskによる変形範囲制限

    きれいな変形だけでなく、意図的に崩れたカオス的な変化も作れることを目的にしています。

    Geometry NodesはObjectのGeometryをノードベースで変更する仕組みで、Geometry Nodes Modifierから利用できます。Set Position Nodeは各Pointの位置を制御できるため、頂点単位の波打ち・Noise・Jitter変形に向いています。Noise Texture NodeはフラクタルPerlin Noiseを評価できるため、不規則な変形の元として使えます。


    対応Object

    初期版では、対象は Mesh Object です。

    対応例:

    Object対応
    UV Sphere対応
    Icosphere対応
    Cube対応
    Cone対応
    Cylinder対応
    Plane対応
    Torus対応

    Curve、Text、Armature、Camera、Lightなどは初期版では対象外です。


    基本的な使い方

    1. Add-onをインストールする
    2. BlenderでMesh Objectを選択する
    3. NキーでSidebarを開く
    4. KJ Motion タブを開く
    5. Animated Morph / Chaos を開く
    6. Presetを選択する
    7. 必要に応じて Add Subdivision before Morph をONにする
    8. Create / Replace Morph Chaos Nodes を押す
    9. Modifier欄に追加された KJ_Animated_Morph_Chaos のParameterを調整する

    作成後は、Properties EditorのModifierタブで各Parameterを調整します。


    Presetの意味

    Presetは、Node構成を切り替えるものではありません。
    全Node / 全Parameterは作成され、Presetによって初期値だけが変わります。

    つまり、以下の理解が正しいです。

    Presetの役割内容
    Nodeの種類を変えるいいえ
    Parameterの初期値を変えるはい
    初期状態のON/OFFを決めるはい
    後から手動変更できるはい

    たとえば Noise Only を選んでCreateすると、NoiseだけがONになります。
    ただし、Wave、Jitter、TwistなどのNodeとParameterも作成されています。後からそれらをONにできます。


    Preset一覧と特徴

    Preset初期状態の特徴
    Clean BreathingSine Scaleで呼吸のように拡大縮小
    Clean Wave規則的な波打ち変形
    Organic PulseSine Scale + Wave + Noiseの混合
    Noise OnlyNoiseだけON
    Soft Noise弱いNoise変形
    Strong Noise強いNoise変形
    Low Poly ChaosNoise + Jitter + Twistによる粗い変形
    Violent Chaos強いNoise、Jitter、Wave、Twistの混合
    Twist GrowthZ方向成長 + Twist + Noise
    Collapse指定方向に崩れるような変形

    DefaultとNoise Presetの違い

    v0.1.1では、Default Presetは Organic Pulse です。

    DefaultでCreateした場合:

    Parameter初期状態
    Enable Sine ScaleON
    Enable WaveON
    Enable NoiseON
    Enable JitterOFF
    Enable Twist ZOFF
    Enable CollapseOFF

    一方、Noise Only でCreateした場合:

    Parameter初期状態
    Enable Sine ScaleOFF
    Enable WaveOFF
    Enable NoiseON
    Enable JitterOFF
    Enable Twist ZOFF
    Enable CollapseOFF

    つまり、作られるNodeは同じですが、最初に有効になっている変化が異なります。


    ON/OFFの考え方

    このAdd-onでは、ON/OFFはチェックボックスではなく、数値で表現します。

    意味
    0.000OFF
    1.000ON
    0.500半分だけ効かせる

    たとえばNoiseをOFFにする場合は、

    Enable Noise = 0.000

    NoiseをONにする場合は、

    Enable Noise = 1.000

    にします。

    0.30.5 のような中間値も使えます。これは、単なるON/OFFではなく、効果の混合率として使えます。


    Enable一覧

    Enable項目対象
    Enable Sine Scale周期的な拡大縮小
    Enable Wave規則的な波
    Enable NoiseNoise変形
    Enable Jitter細かい震え
    Enable Twist ZZ軸周りのねじれ
    Enable Collapse崩れ方向の変形
    Enable Z MaskZ方向の範囲制限

    Noise関連Parameterの意味

    Parameter意味
    Enable NoiseNoise全体のON/OFF
    Noise StrengthNoise変形の強さ
    Noise ScaleNoise模様の大きさ・粗さ
    Noise DetailNoiseの細かさ
    Noise RoughnessNoiseの荒さ
    Noise Speed時間変化の速さ
    Noise SeedNoiseパターン変更
    Noise Normal法線方向への影響量
    Noise XX方向への影響量
    Noise YY方向への影響量
    Noise ZZ方向への影響量

    Noiseを完全に消す場合は、基本的に Enable Noise = 0 にします。
    Noise Strength = 0 でも見た目上は消えますが、機能全体のON/OFFとしては Enable Noise を使う方が分かりやすいです。


    追加で変化パターンを混ぜる方法

    Presetで作成した後、追加で別の変化を混ぜたい場合は、次の操作をします。

    追加したい機能のEnableを1にする
    ↓
    関連Parameterを調整する

    例として、Noise Onlyで作ったObjectにWaveを追加したい場合:

    Enable Wave = 1.000
    Wave Amount を調整
    Wave Speed を調整
    Wave Freq X/Y/Z を調整
    Wave Normal / Wave X/Y/Z を調整

    NoiseにJitterを追加したい場合:

    Enable Jitter = 1.000
    Jitter Amount を調整
    Jitter Scale を調整
    Jitter Speed を調整
    Jitter Normal / Jitter X/Y/Z を調整

    NoiseにTwistを追加したい場合:

    Enable Twist Z = 1.000
    Twist Amount を調整
    Twist Speed を調整

    調整の基本手順

    最初は、1つの機能だけをONにして効果を確認するのがよいです。

    推奨手順:

    1. すべてのEnableを0にする
    2. 使いたい機能だけEnableを1にする
    3. Strength / Amountを小さめに設定する
    4. Speedを調整する
    5. 方向Parameterを調整する
    6. 必要なら別の機能を追加する

    複数の変化を一度にONにすると、どのParameterが見た目に影響しているのか分かりにくくなります。


    代表的な設定例

    Noiseだけを使う

    Enable Noise = 1.000
    Noise Strength = 0.05〜0.20
    Noise Scale = 2.0〜4.0
    Noise Detail = 6〜12
    Noise Speed = 0.03〜0.15
    Noise Normal = 1.000
    Noise X = 0.000
    Noise Y = 0.000
    Noise Z = 0.000

    規則的な波だけを使う

    Enable Wave = 1.000
    Wave Amount = 0.03〜0.10
    Wave Speed = 0.05〜0.15
    Wave Freq X = 3〜6
    Wave Freq Z = 3〜6
    Wave Normal = 1.000

    Noiseに少しWaveを混ぜる

    Enable Noise = 1.000
    Enable Wave = 0.300
    Noise Strength = 0.10
    Wave Amount = 0.05

    強いカオス変形

    Enable Noise = 1.000
    Enable Jitter = 1.000
    Enable Twist Z = 1.000
    Noise Strength = 0.20〜0.40
    Jitter Amount = 0.05〜0.15
    Twist Amount = 0.30〜0.70

    Object別の使い方

    Object向いている表現
    Sphere有機的な脈動、細胞、泡、肉塊風の変形
    Cube角ばった崩れ、低ポリ風カオス
    Cone先端が揺れる、ねじれる、触手的変形
    Cylinder柱のねじれ、波打つ筒
    Plane布、水面、膜、地形のような変形
    Torusうねるリング、ねじれた管

    Cubeのように頂点数が少ないObjectでは、NoiseやWaveが粗く出ます。
    滑らかにしたい場合は、Add Subdivision before Morph をONにします。
    逆に、低ポリの破綻感を使いたい場合は、SubdivisionをOFFにします。


    Add Subdivision before Morphについて

    Add Subdivision before Morph をONにすると、Geometry Nodesの前にSubdivision Surface Modifierを追加します。

    目的は、頂点数を増やして、WaveやNoiseの変形を出やすくすることです。

    設定結果
    OFF低ポリ的、粗い変形
    ON滑らかな波・Noise変形
    Level高め変形は滑らかになるが重くなる

    カオス表現では、必ずしもSubdivisionが必要とは限りません。
    粗い崩れを使いたい場合はOFFの方が向いています。


    Transfer Object Scale into Nodesについて

    Transfer Object Scale into Nodes は、現在のObject ScaleをGeometry Nodes側の Base X/Y/Z に移すためのOptionです。

    ONにすると、

    現在のObject ScaleをBase X/Y/Zにコピー
    ↓
    Object Scaleを1,1,1に戻す

    という動きになります。

    通常はOFFでよいです。
    ObjectのScaleをGeometry NodesのParameterとして管理したい場合だけONにします。


    Animationさせる方法

    各Parameterの右側にある小さい丸は、Keyframe用の欄です。
    ここを使うと、EnableやStrengthなどを時間変化させることができます。

    例:

    Frame 1   Enable Noise = 0
    Frame 50  Enable Noise = 1

    このように設定すると、途中からNoise変形が出るAnimationになります。

    また、

    Frame 1   Noise Strength = 0.00
    Frame 80  Noise Strength = 0.25

    のようにすれば、徐々にNoiseが強くなります。


    よくある疑問

    Presetを変えたら既存Modifierも変わるか

    変わりません。
    PresetはCreate時の初期値に使われます。

    Presetを変えた後に反映したい場合は、Create / Replace Morph Chaos Nodes を押して作り直します。


    Noise Presetを選ぶと他の変形は削除されるか

    削除されません。
    Wave、Jitter、Twist、CollapseなどのNodeとParameterは残っています。

    ただし、初期状態ではそれらのEnableが0になっているため、見た目には効いていません。


    Enableを1にしたのに変化しない

    関連する強度Parameterが0になっている可能性があります。

    例:

    Enable Wave = 1
    Wave Amount = 0

    この場合、WaveはONですが、強さが0なので見た目には変化しません。


    NoiseをOFFにするにはどこを触るか

    Enable Noise を0にします。

    Enable Noise = 0.000

    Noiseを少しだけ混ぜるにはどうするか

    Enable Noise を中間値にします。

    Enable Noise = 0.300

    または、Enable Noise = 1.000 のまま Noise Strength を小さくします。


    注意点・例外

    このAdd-onは、綺麗な変形だけでなくカオス変形も目的にしています。
    そのため、強いNoise、Jitter、Twistを組み合わせると、面の自己交差、法線の乱れ、極端な変形が起こることがあります。

    これは表現としては有効ですが、次の用途では注意が必要です。

    用途注意点
    3Dプリント自己交差や面破綻が問題になる
    Boolean処理変形後Meshで失敗しやすい
    Rig付きCharacterArmatureやShape Keyとの順序に注意
    物理SimulationModifier順序で結果が変わる
    重いSceneSubdivision Levelを上げすぎない

    【根拠】

    BlenderのGeometry Nodesは、ObjectのGeometryをNodeで変更するための仕組みです。Set Position Nodeは各Pointの位置を変更するNodeであり、波打ちやNoise変形のような頂点単位の処理に向いています。Transform Geometry NodeはGeometry全体の移動・回転・Scaleに使えます。Noise Texture NodeはPerlin Noiseを評価できるため、不規則な変形の元として使えます。


    【注意点・例外】

    本記事のAdd-on仕様は、ここまでの会話で設計した v0.1.1 の内容に基づきます。
    実機Blender 5.1でSocket名やUI表示が異なる場合は、Python APIやGeometry Nodes側の仕様に合わせて調整が必要です。


    【確実性: 高】

    Preset、Enable、Noise、Wave、Jitter、Twist、Collapseの使い方に関する説明は、この会話で提示したv0.1.1コード構造に基づいているため確実性は高いです。
    ただし、実機Blender 5.1でのUI表示やSocket名については、環境差が出る可能性があります。


    参考文献・出典