Skip to content

bonggyuKim/RealSkinSimulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

RealSkinSimulation

Real Face Skin Deformation

Subject

Real Skin Deformation

  • 피부의 표현에 물리적 반응을 넣어서 충돌에 Dynamic하게 반응하도록 했습니다.
  • 높은 퀄리티의 물리적인 반응 및 시뮬레이션이 가능합니다.
  • 게임에 적용한다면 조금 더 퀄리티 높은 action sequence를 만들수 있습니다.

Motivation

  • AAA게임들을 보면 정말 화려한 액션과 연출로 게임에 재미를 추가해 줍니다.
  • 하지만 피부 표현은 정말 고퀄리티지만 정작 피부의 물리적인 충돌은 표현되어 있지 않습니다.
  • 저는 여기서 Reality skin physics를 만들어 보고 싶어서 시작하게 되었습니다.

Target Paper



Solution

1. Preprocessing

  • 캐릭터들은 보통 bone이 정해져 있고 거기에 mesh(skin)가 따라옵니다.
  • 피부가 접히는 부분에 preprocessing을 통해 조금 더 리얼하게 표현이 가능합니다.

2. Real Time

  • Preprocessing과 다르게 따로 처리를 해주지 않습니다.
  • Real time으로 mesh안의 particle끼리의 충돌을 계산하여 처리합니다.

3. Preprocessing + Realtime(My solution)

  • Real time으로 mesh안의 particle끼리의 충돌을 계산하여 처리합니다.
  • Preprocessing으로 했을 때 하나하나 다 처리해줘야 하는 불편함과 Real time으로 했을 때 texture가 깨지는 현상을 모두 해결할 수 있습니다.

Math

XPBD(Position Based-Compliant Constrained Dynamics)



  • Skin deformation을 위해서는 XPBBD가 들어갑니다.
  • XPBD는 기존의 PBD를 논문에서 바꾼 것으로 skin deformation을 하기 위한 조금 더 효율적인 알고리즘입니다.


  • XPBD의 Solve과정에서는 skin을 soft하게 만들어 주기 위해서 DistantVolume Constraint 작업을 진행합니다.
  • Constraint는 mesh의 particle이 원래 위치에서 벗어나면 다시 원래 위치로 돌아가게끔 해주는 힘입니다.
  • Distant는 particle사이의 edge거리에 따른 Constraint이고 Volume은 4개의 particle로 이루어진 사면체의 volume 크기에 따른 Constraint입니다.

Mesh

Paper mesh VS Unreal mesh


Paper Mesh

  • Tetrahedral Mesh : Tet mesh라고 불리며 보통 논문에서 simulation을 할 때 많이 사용합니다.
  • 속이 꽉 차 있어서 particle간의 simulation에 용이합니다.

Unreal Mesh

  • Static Mesh : 보통 Tri mesh를 많이 사용합니다.
  • 속이 비어있는 mesh로 게임에서 많이 사용합니다(계산이 쉽고 간편합니다).

Paper Mesh To Unreal Mesh

  • Unreal Mesh를 Paper Mesh로 바꾸려고 blender의 BlenderTetPlugin을 Unreal에 가져와서 적용했습니다. https://github.com/matthias-research/pages/blob/master/tenMinutePhysics/BlenderTetPlugin.py
  • 하지만 왜인지 잘 안되었습니다...
  • 그래서 어쩔 수 없이 Unreal mesh에서 논문의 기술을 사용하도록 논문 코드를 변형했습니다.
  • Volume Constraint부분에서 Tet mesh는 particle이 안까지 꽉 차있기 때문에 particle간의 volume constraint가 잘 일어납니다. 하지만 Unreal mesh는 mesh안이 비어있기 때문에 Volume Constraint가 거의 일어나지 않습니다.
  • 따라서 Vlume constraint부분을 수정하여 face constraint로 수정하였습니다.

Result


1. Test - Mesh Deformation



  • Mesh Deformation을 Real time으로 실행해봤습니다.
  • Mesh가 계획한 대로 탄력있게 튀어오르는 결과가 나왔습니다.
  • 하지만 Real skin으로 보기에는 너무 결과가 Dynamic해서 조금 static하게 optimization을 해줘야 합니다.

2. Optimization



  • Skin과 Bone을 설정해서 늘어날 때는 skin보다 늘어나지 못하고, 줄어들 때는 bone보다 줄어들지 못하게 preprocessing을 진행했습니다.

Optimization Result



3. Game Application

Demo

Demo video https://youtu.be/kvyevt88Fio

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors