Continue(s)

Twitter:@dn0t_ GitHub:@ogrew

【Blender】#nodevember2019 を振り返る。

この記事はBlender Advent Calendar 2019の3日目の記事です。


先週末、Motion Plus Design Tokyo 2019に行ってきました。

ASH THORPが"Be Prolific"って言ってましたね。2020年もたくさん作っていきましょう!

さて、今年ぬるっと初参加した #nodevember2019 の作品を振り返っていきたいと思います。 (作成したノードもスクショでシェアします。) さまざまなアーティストが公開している作品や動画を参考にしている(当初まとめて公開する予定もなかった)ので申し訳ありませんがリファレンスは今回まとめていません。 気になる方は上のハッシュタグでぜひ検索してみてください。

What is #Nodevember?

f:id:taiga006:20191130211744p:plain:w500

(↑ この間のカヤックの「つくっていいとも」で使った発表資料。) 要は11月のお祭りですね!

それでは早速見ていきましょう。

11/8 Coral

f:id:taiga006:20191130213038j:plain:w500

Node

f:id:taiga006:20191130223306p:plain:w500

11/9 Microbe

f:id:taiga006:20191130211947j:plain:w500

Node

f:id:taiga006:20191130222922p:plain:w500

11/19 Circuit

f:id:taiga006:20191130222516p:plain:w500

Node

f:id:taiga006:20191130222326p:plain:w500

11/19 Circuit(2)

f:id:taiga006:20191130222411p:plain:w500

Node

f:id:taiga006:20191130222212p:plain:w500

11/22 Star

f:id:taiga006:20191130212027j:plain:w500

Node

f:id:taiga006:20191130223840p:plain:w500

11/22 Star(2)

f:id:taiga006:20191130224138j:plain:w500

Node

f:id:taiga006:20191130224058p:plain:w500

11/24 Nebula

f:id:taiga006:20191130211922j:plain:w500

Node

f:id:taiga006:20191130220514p:plain:w500

もう一個くらいやっておきたかったかな。


とてもたくさんの作品が1ヶ月の間で作成されシェアされ盛り上がりました。 私がファンになったアーティストたちを紹介します。

TouchDesignerで画像処理シェーダー。その2

f:id:taiga006:20191124163637j:plain さっそく第二弾。

今回は、先日無事終わったGLSLスクールで学んだものとよく使うテクスチャいじりのものを載せておきます。

★RGBずらし

f:id:taiga006:20191124023459j:plain

// RGB shift
uniform vec2 offset;

out vec4 fragColor;

void main()
{
    vec2 coord = vUV.st;
    vec4 color = texture(sTD2DInputs[0], coord);

    vec4 negColor = texture(sTD2DInputs[0], coord + vec2(-offset[0], 0.0));
    vec4 posColor = texture(sTD2DInputs[0], coord + vec2(offset[1], 0.0));

    fragColor = TDOutputSwizzle(vec4(negColor.r, color.g, posColor.b, color.a));
}

ちなみに色収差とRGBずらしは正しくは同じものではないとのこと。(同じだと思ってた。)

★クランプ

f:id:taiga006:20191124023442j:plain

// clamp
uniform float clampMin;
uniform float clampMax;

out vec4 fragColor;

void main()
{
    vec2 coord = clamp(vUV.st, clampMin, clampMax);
    vec4 color = texture(sTD2DInputs[0], coord);

    fragColor = TDOutputSwizzle(color);
}

clamp関数はclamp(x, min, max)で最大最小を制御するものです。

★拡縮

f:id:taiga006:20191124142441j:plain

// scaling
out vec4 fragColor;

void main()
{
    vec2 newUV = 6.0 * vUV.st;
    vec4 color = texture(sTD2DInputs[0], newUV);

    fragColor = TDOutputSwizzle(color);
}

基本的なやつです。よく使います。ここではInput Extend Mode UVをMirrorに変えています。

★テクスチャゆがみ

f:id:taiga006:20191124154234j:plain

// distortion
uniform float scale;
uniform vec2 center;

out vec4 fragColor;
void main()
{
    vec2 direction = vUV.st - center;
    vec2 coord = vUV.st + scale * normalize(direction);
    vec4 color = texture(sTD2DInputs[0], coord);

    fragColor = TDOutputSwizzle(color);
}

centerからの方向に対してスケールさせることでゆがみを演出しています。scaleの正負を変えるとだいぶ印象が変わります。

★溶解

f:id:taiga006:20191124160227j:plain

// melt
uniform float time;

out vec4 fragColor;

void main()
{
    vec2 coord = vUV.st;
    
    vec2 melt = vec2(coord.x, coord.y*0.15+time*0.1);
    vec3 meltTex = texture(sTD2DInputs[0],melt).rgb;
    meltTex = melttex / 10.0;
    coord = coord.xy - meltTex.xy;
    vec4 color = texture(sTD2DInputs[0], coord);
    
    fragColor =TDOutputSwizzle(color);
}

1つのテクスチャだけでやっていますが別の画像やノイズをInput[1]に入れて使うともっと面白くなります。

へこみ

f:id:taiga006:20191124163519j:plain

// dent
uniform vec2 width;
uniform vec2 center;

out vec4 fragColor;
void main()
{
    vec2 coord = vec2(2.0) * vUV.st - vec2(1.0); // -1 ~ +1

    vec2 s = sign(coord);
    coord = abs(coord);
    coord = coord * (1. + smoothstep(width.x, width.y, coord + center));
    coord = 0.5 * s * coord;
    coord = coord / 2.0 + 0.5;

    fragColor = texture(sTD2DInputs[0],coord);
}

Paletteの中にあるdentに少し手を加えたものです。これもよく使いますね。