19P by kaykim 2023-03-03 | favorite | 댓글 1개

Tales of Syn( https://www.youtube.com/watch?v=ejw6OI4_lJw )에서 Stable Diffusion을 사용해서 2D 아이소메트릭(속칭, 쿼터뷰) RPG의 배경을 만들었던 과정을 자세히 설명.

사용한 도구들:

  • Stable Diffusion v1.5
  • Automatic1111 WebUI
  • Alpaca Photoshop Plugin
  • Boosting Monocular Depth
  • Substance Designer
  • Unity URP
  • Amplify Shader Editor

초기에는 step count를 낮게 잡아서 결과가 좋지 않았지만, step count를 100번대로 늘리고 15~30의 CFG(classifier free guidance)를 적용했더니 좀 더 흥미로운 결과를 얻음.

생성된 이미지를 Photoshop를 편집하고, Alpaca라는 Stable Diffusion 플러그인을 사용해서 해상도를 높힘.

기존 조명을 제거하고 원하는 조명을 추가하기 위해서는 2D 씬에 대한 노멀 맵(normal map)이 필요한데, Boosting Monocular Depth의 MiDaS와 LeRes를 사용해서 이미지의 뎁스 맵(depth map)을 생성을 자동화.

이렇게 생성된 MiDaS 뎁스 맵과 반전된 LeRes 뎁스 맵 이미지를 섭스턴스 디자이너에서 Height to Normal World Units 노드를 사용하여 노멀 맵으로 변환하고, 노멀 블렌드 노드를 사용하여 둘을 결합.

Amplify 셰이더 에디터에서 만든 커스텀 Unity URP 셰이더의 뎁스 및 노멀 맵을 사용해서 카메라 움직임에 미묘한 가짜 3D 원근을 추가하기 위해 패럴랙스 오클루전 매핑을 시도했지만 아이소메트릭 뷰에는 뎁스가 정확하지 않아서 그다지 좋아보이지 않았음.

노멀 매핑 섀도우를 구현해서 직시광(directional light)의 그림자를 추가하려고 했는데, 실제 조명으로는 적합하지 않았음. 3D 캐릭터의 음영을 처리하는 커스텀 라이팅 패스로 사용될 가능성이 있음.

2K 이미지를 4등분한 후, 각각을 img2img에서 처음과 동일한 프롬프트를 써서 해상도를 높혔는데 경계면끼리 이어지지 않는 문제가 있었음. 결국 같은 과정을 거쳐서 기존의 4등분해서 해상도를 높힌 이미지들을 이어주는 이미지들을 만들고, 포토샵에서 합쳐서 최종적으로 4K 이미지로 만듬.

관련 긱뉴스:
https://news.hada.io/topic?id=7206

개발자가 그 밖의 개발 공정을 함께 공개했습니다:

Stable Diffusion으로 3D 캐릭터 모델 만들기:
https://talesofsyn.com/posts/creating-3d-character-models

아이소메트릭풍의 드림부스 모델을 미세 조정하기:
https://talesofsyn.com/posts/fine-tuning-isometric-style