docs.unity3d.com
    目次を表示する/隠す

    Normal From Height ノード

    説明

    入力 Input で定義された高さの値と、入力 Strength で定義された強度を持つ法線マップを作成します。

    ポート

    Name Direction タイプ 説明
    In 入力 Vector 1 高さの入力値
    Strength 入力 Vector 1 出力される法線の強度。現実世界の単位で考えます。推奨される範囲は 0 - 0.1 です。
    Out 出力 Vector 3 出力値

    制御

    Name タイプ オプション 説明
    Output Space ドロップダウン Tangent、World 出力法線の座標空間を設定します。

    生成されるコードの例

    以下のサンプルコードは、Output Space モードごとに、このノードの出力の一例を示したものです。

    Tangent

    void Unity_NormalFromHeight_Tangent_float(float In, float Strength, float3 Position, float3x3 TangentMatrix, out float3 Out)
    {
        float3 worldDerivativeX = ddx(Position);
        float3 worldDerivativeY = ddy(Position);
    
        float3 crossX = cross(TangentMatrix[2].xyz, worldDerivativeX);
        float3 crossY = cross(worldDerivativeY, TangentMatrix[2].xyz);
        float d = dot(worldDerivativeX, crossY);
        float sgn = d < 0.0 ? (-1.0f) : 1.0f;
        float surface = sgn / max(0.000000000000001192093f, abs(d));
    
        float dHdx = ddx(In);
        float dHdy = ddy(In);
        float3 surfGrad = surface * (dHdx*crossY + dHdy*crossX);
        Out = normalize(TangentMatrix[2].xyz - (Strength * surfGrad));
        Out = TransformWorldToTangent(Out, TangentMatrix);
    }
    

    World

    void Unity_NormalFromHeight_World_float(float In, float Strength, float3 Position, float3x3 TangentMatrix, out float3 Out)
    {
        float3 worldDerivativeX = ddx(Position);
        float3 worldDerivativeY = ddy(Position);
    
        float3 crossX = cross(TangentMatrix[2].xyz, worldDerivativeX);
        float3 crossY = cross(worldDerivativeY, TangentMatrix[2].xyz);
        float d = dot(worldDerivativeX, crossY);
        float sgn = d < 0.0 ? (-1.0f) : 1.0f;
        float surface = sgn / max(0.000000000000001192093f, abs(d));
    
        float dHdx = ddx(In);
        float dHdy = ddy(In);
        float3 surfGrad = surface * (dHdx*crossY + dHdy*crossX);
        Out = normalize(TangentMatrix[2].xyz - (Strength * surfGrad));
    }
    
    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)