Bump Map 1. High Field Function: H(u, v) New Normal : N’

8
Bump Map 1

Transcript of Bump Map 1. High Field Function: H(u, v) New Normal : N’

Page 1: Bump Map 1. High Field Function: H(u, v) New Normal : N’

Bump Map

1

Page 2: Bump Map 1. High Field Function: H(u, v) New Normal : N’

Bump Map

Bump Map High Field Function: H(u, v)

New Normal : N’

Bv

vuHT

u

vuHNN

),(),('

Page 3: Bump Map 1. High Field Function: H(u, v) New Normal : N’

Modify Normal

3

Original Surface

normal

Bump Map

∂H∂u

Gradient

TNN

Modified Normal

Page 4: Bump Map 1. High Field Function: H(u, v) New Normal : N’

Tangent

4

World Space : R3 Texture Space : R2

T

B

U

V

v

PB

u

PT

,

Page 5: Bump Map 1. High Field Function: H(u, v) New Normal : N’

5

World Space :∆P Texture Space : (∆u, ∆v)∆u

∆v

T

B

∆P

BvTuP

**

Assume Surface is a Plane

Page 6: Bump Map 1. High Field Function: H(u, v) New Normal : N’

Solve The Vector: T, BTriangle vertex position:

P0, P1, P2

Triangle vertex texture coordinates :C0 (U0, V0), C1(U1, V1), C2(U2, V2)

 Let

vec3 P10 = P1 - P0

vec3 P20 = P2 – P0

vec2 C10 = C1 - C0 = (U1-U0, V1-V0) = ( U10 ,V10)

vec2 C20 = C2 – C0= (U2-U0, V2-V0) = ( U20 ,V20)

 Solve

P10 = U10T + V10B

P20 = U20T + V20B

Page 7: Bump Map 1. High Field Function: H(u, v) New Normal : N’

zyx

zyx

zyx

zyx

BBB

TTT

VU

VU

PPP

PPP

2020

1010

_20_20_20

_10_10_10

zyx

zyx

zyx

zyx

PPP

PPP

UU

VV

VUVUBBB

TTT

_20_20_20

_10_10_10

1020

1020

10202010

1=>

=>

Page 8: Bump Map 1. High Field Function: H(u, v) New Normal : N’

The Codevoid ComputeTangentBasis( const vec3& P1, const vec3& P2, const vec3& P3, const vec2& UV1, const vec2& UV2, const vec2& UV3, vec3 &tangent, vec3 &bitangent ){ vec3 Edge1 = P2 - P1; vec3 Edge2 = P3 - P1; vec2 Edge1uv = UV2 - UV1; vec2 Edge2uv = UV3 - UV1;  float cp = Edge1uv.x * Edge2uv.y – Edge2uv.x * Edge1uv.y;  if ( cp != 0.0f ) { float mul = 1.0f / cp;

tangent = (Edge1 * Edge2uv.y + Edge2 * -Edge1uv.y) * mul; bitangent = (Edge1 * -Edge2uv.x + Edge2 * Edge1uv.x) * mul;  }}