본문 바로가기

유니티/에셋, 패키지

[유니티에셋]소프트바디 블루프린트(Obi Softbody)

반응형

이번 주말은 푸딩과 같은 재미있는 질감을 표현할 수 있는 Obi Softbody에 대해 파보려고 합니다. Softbody와 관련된 내용 중 어떤 내용으로 시작하면 좋을까 고민하다가, 소프트바디의 형태를 잡아주는 블루프린트에 대해 공부해보면 좋겠다고 생각하여 테스트를 해보면서 글을 작성하고 있습니다. 저는 연체동역학이나 이 에셋에 대한 전문가가 아니여서 틀린 내용이 있을 수 있다는 것을 감안하시고 봐주셨으면 감사하겠습니다.

글 작성은 Obi 공식 홈페이지의 'Obi Softbody > Softbody blueprint' 문서를 보고 작성하였습니다. 설명이 잘못된 부분도 있고, 자료가 부족한 부분도 있고 무엇보다 제가 이해하기 쉽게 정리하기 위해서 글을 작성하고 있습니다. 원문 : http://obi.virtualmethodstudio.com/tutorials/softbodysetup.html


1. Softbody와 블루프린트 개요

Obi Softbody에서는 2가지의 블루프린트의 형태가 존재합니다.

표면 소프트 바디, 출처 : Obi 홈페이지

-표면 소프트 바디(Surface Soft body) : 메쉬 표면에 파티클을 생성하고 파티클의 방향을 정하고, 가능한 한 메쉬와 가깝게 모양을 대략적으로 조정합니다. 메쉬 두께가 매우 두껍다면 시뮬레이션 된 결과가 속이 비어있는것처럼 보일 수도 있지만, 결과 비주얼은 양호한 편이고 계산량이 상대적으로 저렴합니다.

볼륨 소프트 바디, 출처 : Obi 홈페이지

-볼륨 소프트 바디(Volume softbody) : 메쉬를 복셀화하여 복셀의 중앙에 파티클을 위치시킵니다. 메쉬 내부에서도 입자를 생성하기 때문에 '표면 소프트 바디' 방식보다 훨씬 많은 파티클을 생성하지만, 정확한 체적 효과가 필요한 경우 좋은 결과를 만들 수 있습니다.

Obi Softbody Blueprint 생성하기

소프트바디 블루프린트의 생성은 프로젝트 폴더에서 Create -> Obi -> Softbody surface / volume blueprint로 생성할 수 있습니다. ( 사진 참조 )

소프트바디 시뮬레이션 및 렌더링은 ObiSoftbody(시뮬레이션)와 ObiSoftbodySkinner(렌더링)의 두 가지 구성 요소로 처리 됩니다. 전자는 파티클 기반 메시 표현을 생성합니다. 후자는 파티클 기반 표현에 임의의 메시를 스키핑하여 함께 움직이고 변형되도록 합니다. 두 개별 구성 요소를 사용하면 시뮬레이션과 렌더링을 분리 할 수 있어 종종 매우 유용합니다. 또한 각 ObiSoftbody에 대해 단일 ObiSoftbody 스키너를 사용하지 않아도됩니다. 여러 ObiSoftbodySkinner를 사용하여 여러 메시를 단일 소프트 바디에 스키닝 할 수 있습니다.

 


2. 블루프린트 생성하기

블루프린트는 메쉬를 입력으로 사용합니다. 'non-manifold meshes'와 'polygon soups'를 포함한 모든 메쉬가 작동합니다.

블루프린트 인스펙터에서 Generate 버튼을 누르면 메쉬 표면 또는 볼륨을 사용하여 파티클이 생성되고 (소프트 바디 유형에 따라) 모양 일치 클러스터?가 생성됩니다. 클러스터 네트워크는 입자를 하나로 묶고 탄성과 소성을 시뮬레이션합니다. 입자 및 클러스터 생성을 제어하는 모든 매개 변수를 살펴 보겠습니다.

블루프린트의 인스펙터창

Input Mesh(입력 메쉬)

 

입력 메시 표면에 생성될 입자의 반지름입니다. 이것은 Softbody의 품질/성능 비율을 제어하는 주요 매개변수입니다. 반경이 작을수록 메시 표면에 더 많은 입자가 추가됩니다.(입력 메시의 버텍스 수에 비례합니다)

Particle Overlap(파티클 겹침)

입자 간에 겹침이 허용되는 비율. 큰 값은 더 많은 입자를 생성함으로써 입력 메시 표면을 보다 철저하게 커버할 수 있도록 보장할 것이다. 0.5~ 0.7의 값이 가장 권장됩니다. (sweet spot)

Shape Smoothing(모양 다듬기)

입자를 생성하기 전에 적용된 라플라시안 스무딩(laplacian smoothing)의 값. 큰 값은 선형 파티클 체인으로 안테나(더듬이)나 팔다리와 같은 얇은 형상을 나타내는데 도움을 줄 수 있습니다.

Anisotropy Neighborhood(비등방성 이웃)

출처 : 네이버 지식백과

 

파티클의 모양과 방향을 계산할 때 고려하는 영역의 반지름. 입자 반지름에 가깝거나 약간 큰 값이 좋은 결과를 제공합니다.

 

Max anisotropy(최대 비등방성)

파티클의 가장 긴 축과 가장 짧은 축 사이의 최대 비율. 값이 크면 타원 모양이 매우 뚜렷해지고, 값이 작으면 구면 입자가 더 많아집니다.

Soft cluster radius(부드러운 클러스터 반경)

입자를 주위 입자에 연결할 때 고려되는 각 입자 주의의 반경. 입자 반경의 2-3 배의 값이 일반적으로 좋은 결과를 제공합니다. 소프트 바디의 일부가 런타임에 분리되면 클러스터 네트워크가 분리되었음을의미합니다. 이럴때 이 매개변수의 값을 더 크게 설정하여 클러스터가 서로 겹치게 설정하여 해결합니다.

One Sided(한쪽면)

파티클의 충돌 감지에 도움을 주는 옵션입니다. 일반 파티클은 파티클 표면까지의 최단 경로 방향으로 겹치는 바디를 돌출시키는 반면, One Sided 파티클은 소프트 바디 메시 표면으로의 최단 경로를 사용합니다.

 


3. 블루프린트 생성하기

이렇게 생성된 블루프린트의 세부 내용은 '블루 프린트 에디터' 에서 설정할 수 있습니다. 에디터에는 3가지 모드가 있으며 상단의 3개의 버튼을 사용하여 접근할 수 있습니다. (입자 선택 모드, 속성 페인팅 모드, 텍스처 모드)

3.1. 입자 선택 모드 ( 빨간 네모 속의 마우스 이미지 버튼 )

입자 선택 모드에서는 입자를 선택하고 해당 입자의 세부 설정을 결정하는 작업을 할 수 있습니다. 기본적으로 입자를 클릭하거나 드래그하면 해당 입자가 선택되며, Shift키를 누르고 선택하거나 드래그하면 입자의 선택이 취소됩니다.

3.1.1. 기본 옵션

Brush Size

- 브러쉬 크기를 설정합니다.

Culling

- 입자를 선택할때 마우스 위치에서 어떤 입자를 선택할지에 대한 옵션입니다.

- 주로 Back으로 설정하시고 작업하시는걸 추천드립니다.

- off : 모든 파티클이 선택됩니다.

- back : 카메라에서 멀어지는 입자는 선택할 수 없습니다.

- pront : 카메라를 향한 입자는 선택할 수 없습니다.

(파티클의 노말벡터와 설정한 옵션값(뷰디렉션)이 비슷하면 해당 파티클을 컬링한다고 생각하시면 편합니다.)

3.1.2. 버튼 옵션 ( 주황색 네모 )

선택한 파티클들을 기준으로 버튼을 딸각 눌러서 효과를 적용하는 옵션들입니다. 왼쪽부터 순서대로 설명하겠습니다.

선택 반전 : 말 그대로 선택을 반전시킵니다.

선택 초기화 : 선택된 모든 파티클들의 선택을 초기화합니다.

선택 최적화 : 선택되지 않은 입자와 제약 조건을 공유하지 않은 모든 선택된 입자들을 삭제합니다. 시뮬레이션에 기여하지 않는 입자를 제거하고자 할 때 유용합니다. ( 아래 사진 참조 )

선택 삭제 : 선택된 모든 파티클들을 삭제합니다.

삭제 복구: 삭제된 모든 파티클들을 복구합니다.

 

 

3.1.3. 파티클 속성(Properties)

질량(Mass) : 입자의 질량을 결정합니다. 충돌이나 물리 계산에 사용됩니다.

반지름(Radius) : 입자 반경, 충돌 감지에 사용됩니다.

위상(Layer) : 입자의 위상을 설정합니다. 기본적으로 서로 다른 위상의 충돌체하고만 충돌합니다.

색깔(Color) : 입자 색. 추가 정보를 저장하거나 사용자 정의 렌더링에 사용하는데 유용합니다.

3.1.4. 파티클 그룹

특별한 역할 또는 중요한 파티클들을 그룹화할 수 있습니다. 이는 사용자 지정 스크립트에서 런타임에 엑세스 할 수도 있습니다.

3.2. 속성 페인팅 모드 ( 빨간 네모 속의 마우스 이미지 버튼 )

속성 페인팅 모드에서는 위 선택 모드에서 설명한 파티클 속성(3.1.3 참조)들을 브러쉬 툴을 이용하여 설정하는 기능을 제공합니다. 기본적인 속성값들에 대한 설명은 위와 같으니 생략하겠습니다. 속성 페인팅 모드는 3가지의 브러쉬 모드를 제공합니다.

Paint : 현재 속성 값을 필드에 설정된 값으로 변경합니다.

Add : 현재 속성 값에 필드에 설정된 값만큼 값을 추가합니다. Shift키를 누른 상태로 페인팅하면 더하기 대신 빼기를 수행합니다. ( 예 : mass가 1인 파티클에 필드값을 0.1로 설정하고 페인팅하면 mass값이 1.1로 변경됨 )

Smooth : 파티클들의 속성 값들을 부드럽게 합니다. 주변 파티클들의 값을 계산하여 파티클 사이의 값의 차이가 적어지게 만듭니다.

그리고 셀렉션 마스크(Selection Mask)옵션을 활성화 시키면, 선택 모드에서 선택된 파티클들에게만 페인팅 옵션이 적용됩니다. 특정 부분에 옵션을 변경을 하고자 할 때 매우 유용합니다.

 

3.3. 텍스처 모드

이 도구를 사용하여 속성을 텍스처로 import하거나 export할 수 있습니다.

 

 

Obi Softbody | 물리엔진 | Unity Asset Store

Get the Obi Softbody package from Virtual Method and speed up your game development process. Find this & other 물리엔진 options on the Unity Asset Store.

assetstore.unity.com

 

반응형