감성을 위한 개발요소 - unite seouluniteseoul.com/2019/pdf/d2t1s3.pdfvertex color vertex...

Post on 05-Aug-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

사람이곧회사좋은사람들이좋은게임을만든다는믿음

서우원

— Design R&D (Character Rendering)

— Normal Shift (Face)

— EyeBrow Rendering

— Character FX

— Changing BG Colour (Color Grading , LUT)

— 2D Polygonal Imposters for 3D Crowds

Body Diffuse Body Normal

Head Diffuse Head Normal

디테일이좋은모델링?

Normal Map Cartoon Map

Character Shader Matcap Character Shader

Character Shader Matcap Character Shader

123456

float3 worldNorm = normalize(unity_WorldToObject[0].xyz * v.normal.x + unity_WorldToObject[1].xyz * v.normal.y + unity_WorldToObject[2].xyz * v.normal.z);

worldNorm = mul((float3x3)UNITY_MATRIX_V, worldNorm);

uv = (worldNorm.xy * 0.5) * v.color.a + 0.5;

Vertex Color Vertex Color Vertex Color

Eyebrow Back Eyebrow FrontEyebrow

Eyebrow

ZTest GEqual ZTest LEqual Alpha Eyebrow

Eyebrow

Hair Eyebrow

(inside)

Face Eyebrow(outside)

Render Queue 800

Ztest LEqualRender Queue 900

Ztest LEqualRender Queue 1000

Ztest LEqualRender Queue 900

Ztest GEqual

26

— Matcap

— Add / Multiply

— Matcap

30

Cloud Shadow

Default Map LUT + LUT +

Default LUT

Default LUT

Imposter

— Mesh Polygon

Imposter

— Camera

— Camera

— Texture

Texture

Imposter Shader

— Animation 2 Texture

— Animation Speed, Tempo, Start Time

Model & Imposter

Imposter Animation

— LookAt System

— Facial Animation

— Story Telling Tools

— PostEffect (Using UberShader)

— BTS

— Machine/Deep Learning ( )

— Bug Detection System

Facial Animation

Facial Animation

— α

Facial Animation

Facial Tool

LookAt System

LookAt System

— Bone Animation

— Idle Idle

LookAt System

90°90°

Pseudo-Code123456789

10111213141516171819

void execute_lookat_after_animation(){Vector3 vhead_dir; // 현재머리가향하는방향Vector3 vlookat_dest; // 바라볼목적지Vector3 vhead_pos; // 머리의현재위치Quat qhead_rot; // 현재 Bip 상의머리회전값

Vector3 _vlookat_dir; // LookAt 연산을위한임시변수Quat _qlookat; // LookAt 연산을위한임시변수float _fdegree; // LookAt 연산을위한임시변수

_vlookat_dir = normalize(vlookat_dest – vhead_pos);_fdegree = degree_a_to_b(vhead_dir , _vlookat_dir);_fdegree = clamp( _fdegree, MIN_HEAD_DEGREE * deltatime, MAX_HEAD_DEGREE * deltatime);_vlookat_dir = rotate_vector3_from_degree( vhead_dir, _fdegree);

_qlookat = quat_from_vector3( _vlookat_dir );

qhead_rot = _qlookat * qhead_rot;}

LookAt System

Problems on LookAt System

Problems on LookAt System

Problems on LookAt System

Story Telling

Strory Telling

PostEffect

Post Effect

— Bloom (Using DownScaled Buffer)

123456789101112131415161718

down_scaled_buffer_1_4 = downsample( current_bright_pass_buffer, 1/4 );down_scaled_buffer_1_8 = downsample( current_bright_pass_buffer, 1/8 );down_scaled_buffer_1_16 = downsample( current_bright_pass_buffer, 1/16 );

down_scaled_buffer_1_4 = gaussian_blur(down_scaled_buffer_1_4 );down_scaled_buffer_1_8 = gaussian_blur(down_scaled_buffer_1_8 );down_scaled_buffer_1_16 = gaussian_blur(down_scaled_buffer_1_16 );

bloom(down_scaled_buffer_1_4 , down_scaled_buffer_1_8, down_scaled_buffer_1_16);

Post Effect

— Chromatic Aberration Filter

123456789

101112131415161718

float2 texcoord = input.uv;

float k = _param.y;float kcube = _param.z;float r2 = (texcoord.x - 0.5) * (texcoord.x - 0.5) + (texcoord.y - 0.5) * (texcoord.y - 0.5);float f = 0.0f;if (kcube == 0.0f) {

f = 1.0f + r2 * k;}else {

f = 1.0f + r2 * (k + kcube * sqrt(r2));}

float x = f*(texcoord.x - 0.5f) + 0.5f;float y = f*(texcoord.y - 0.5f) + 0.5f;

float3 final_chromatic = tex2D(ScreenColor, float2(x, y)).rgb;final_chromatic.z = tex2D(ScreenColor, input.uv).b;

Pseudo-Code (Pixel Shader)

PostEffect

123456789

101112131415161718

// scratchfloat scratch_intensity = _scratch_intensity_smooth_vspd_hspd.x;float scratch_smooth = _scratch_intensity_smooth_vspd_hspd.y;float vert_scrach_spd = _scratch_intensity_smooth_vspd_hspd.z;float hori_scrach_spd = _scratch_intensity_smooth_vspd_hspd.w;

float _scratch_lerp = 1.0f; // outer value

float _vert_line = _Time.x * vert_scrach_spd;float _hori_line = _Time.x * hori_scrach_spd;

float2 _noise_texcoord = float2(i.uv.x + _hori_line, _vert_line);float _scratch = tex2D(noise_texture, _noise_texcoord).x;_scratch = 2.0 * (_scratch - scratch_intensity) / clamp(scratch_smooth, 0.01f, 0.1f);_scratch = clamp(1.0 - abs(1.0f - _scratch), 0.0f, 1.0f);_scratch = lerp(_scratch * _scratch_lerp, 0.0f, 1.0f - lookup_texture_desc.w);_scratch *= 0.6;_scratch = 1.0 - _scratch;

— Chromatic Aberration Filter

— Noise Filter

— Vignette Effect

— Scratched Film Filter

— Color Grading

PostEffectUsing UberShader

— Bloom Filter

— Radial Blur

— Invert Color Filter

Behavior Tree System

Behavior Tree System

Behavior Tree System

Root

Selector

IdleSequencer

attackDistance < 50

Behavior Tree System

Root

Selector

IdleSequencer

attackDistance < 50

Root

Selector

IdleSequencer

Distance < 50

Root

Selector

IdleSequencer

Distance < 50 Selector

attackSequencer

Run AwayHP < 50%

Selector

Behavior Tree System—

Behavior Tree System

Using BlackBoard1234567

Obj = ObjectMgr.get_object( object_id );Vector3 Diff = Obj.get_pos() – MainChr.get_pos();Float fDist = Diff.length();

If( fDist > 10.0f) return true;

Return false;

68

123456789

Vector3 obj_pos = BlackBoard.get_pos( object_id);Vector3 main_chr_pos = BlackBoard.get_pos( main_chr_id);Vector3 Diff = obj_pos– main_chr_pos;Float fDist = Diff.length();

If( fDist > 10.0f) return true;

Return false;

Machine & Deep Learning

Progressive Growing Of Gans (Tensorflow)Generative adversarial Network

Git : https://github.com/tkarras/progressive_growing_of_gans

Progressive Growing Of Gans (Tensorflow)Generative adversarial Network

학습구간

학습구간

학습구간

예측구간

예측구간

예측구간

1지역 2지역 3지역 4지역

SaftyZone

Machine Learning (Regression)

Etc …

75

Q&A

We are Hiring !!nmcjy@nm-funnypaw.com

top related