[직접 만드는 NFT Generator] ― ② 구글 스프레드시트 활용하기
<직접 만드는 NFT Generator> 시리즈의 두번째 게시물로 NFT Art의 Property Image를 생성하고 구글 드라이브에 저장한다. 이후 NFT Art를 만들기 위한 Property의 정보를 구글 스프레드시트에 기록해본다.
![[직접 만드는 NFT Generator] ― ② 구글 스프레드시트 활용하기](/content/images/size/w2000/2023/11/NFT-Generator-2-1.jpg)
지난 포스트에서는 NFT Generator에 대한 소개와, NFT Generator 제작 방법에 대해 간략하게 설명해보았다.
- NFT Generator는 몇가지 Property를 조합하여 NFT Art를 만들어준다.
- 구글에서 제공하는 서비스를 이용하여, 간단하게 NFT Generator를 만들 수 있다.
이번 포스트에서는 NFT Generator를 제작하기 위한 Property Image를 생성하고, 구글 스프레드시트에 Property 정보를 기록해 볼 것이다.
구글 스프레드시트에 Property 정보 기록하기
Property Image 만들기
먼저 NFT Art를 만들기 위해서는 먼저 어떠한 Property를 조합하여 NFT Art를 제작할 것인지 고민하여야한다. 나는 이번 예시를 위해 Simple Emoji NFT(매우 간단한 이모티콘)를 만들기로 하였다.
먼저 Simple Emoji를 하나 그린 뒤에, 각각의 구성요소를 분리해보면 배경, 얼굴형태, 눈, 입으로 구성되어 있는 것을 알 수 있다.
이를 분리해보면, 다음과 같은 Image를 얻어낼 수 있다.
![](https://minsoo.blog/content/images/2022/05/Frame-6-2.png)
여러장의 NFT를 만들기 위해서는, 각각의 Property마다 여러 Image를 제작해두어야 한다. 나는 다음과 같이 각 Property마다 여러개의 Image를 만들었다.
![](https://minsoo.blog/content/images/2022/05/Frame-18.png)
- 배경 : 5종류
- 얼굴형 : 2종류
- 눈 : 2종류
- 입 : 2종류
이제 이렇게 된 Image들을 각각 저장하여, 조합에 사용할 수 있도록 만들어야 한다. Property Image는 PNG와 같이 Transparent Background가 가능한 형태로 저장한다. 이는 여러 Image를 순서대로 조합할 때에 배경으로 인해 이전 Image가 덮여지지 않도록 하기 위함이다.
[직접 만드는 NFT Generator] 시리즈에서 제공하는 예시에서는 PNG Image를 사용할 것이다.
구글 드라이브에 업로드하기
앞서 제작된 Image들을 정리하여 구글 드라이브에 업로드하는데, Property별로 폴더를 생성하고, 각 요소들에 숫자를 매겨 업로드한다. 이는 추후 코드를 통해 불러오기 쉽도록 한다.
![](https://minsoo.blog/content/images/2022/05/-----------2022-05-31-11.06.31.png)
업로드가 완료되었으면, 업로드된 파일을 토대로 구글 스프레드시트에 Property에 관한 정보와 확률을 기록한다.
구글 스프레드시트에 정리하기
구글 스프레드시트에는 Property 조합의 순서, Property Rarity, Property Name 과 같은 정보를 정리한다. 이러한 정보를 코드가 아닌 구글 스프레드시트에 기록한 것에는 다음과 같은 이유가 있다.
- NFT Project는 개발자 외에 다양한 사람들이 참여하며, 이러한 정보를 코드속에 감춰두는 것은 바람직하지 못하다고 생각한다.
- NFT Project의 Property 정보는 기획이나 로드맵이 확정되기 전까지 매우 유동적으로 달라진다. 이러한 것들의 변경으로 코드를 수정하는 것은 개발자에게 매우 귀찮은 일이다.
- 결론적으로 "개발자님, NFT 속성 하나 추가해주시고, 확률 바꿔서 다시 개발부탁드려요" 라는 요청을 받을 일이 없어진다. "직접 추가하시고, 확률 바꾸시면 됩니다."
이미 업로드한 Property 폴더와 동일한 구글 드라이브 위치에 NFT Art Generator라는 이름의 구글 스프레드시트 파일을 생성해준다.
![](https://minsoo.blog/content/images/2022/05/-----------2022-05-31-11.17.55.png)
먼저 Property라는 Worksheet를 다음과 같이 생성하는데, 여기서 order 는 Property Image의 조합순서가 되고, trait_type 은 Property의 이름이 된다. 이는 추후 NFT Metadata 생성에 필요하다.
![](https://minsoo.blog/content/images/2022/05/-----------2022-05-31-11.49.22.png)
다음으로 각 Property 에 대한 정보를 담을 Worksheet를 생성하는데, File은 앞서 구글 드라이브에 업로드된 파일 이름을 나타낸다. 특히 첫 열에는 "-" 를 입력하여 No Background 옵션을 추가하는데, 실제 조합에서는 경우에 따라 Background 속성 없이 NFT Art를 제작하고 싶은 경우가 발생하기 때문이다.
![](https://minsoo.blog/content/images/2022/05/-----------2022-05-31-11.30.17.png)
![](https://minsoo.blog/content/images/2022/05/-----------2022-05-31-11.27.18.png)
구글 드라이브에 업로드된 Image가 1.png (파랑) / 2.png (초록) / 3.png (보라) / 4.png (노랑) / 5.png (분홍) 이므로, Worksheet 에는 Value 열에 그것을 기록한다.
다음으로 Count와 Rate는 각 옵션의 출현확률을 계산하기 위한 값인데, 총 50개의 Art를 만든다고 한다면, Count 의 총합이 50이 되도록 잘 분배해준다.
Rate는 Count 의 비율을 나타낸 출현확률인데, 실제로 조합 시에는 Count 의 값을 Normalize하여 확률을 계산하므로, Rate는 조합에 사용되지 않고 사용자 편의를 위해 값을 보여준 것이다.
따라서 Rate를 계산하기 위해 셀 D2에는 다음 함수를 활용하여 그 값을 계산해준다.
=ArrayFormula(IF(ISBLANK(C2:C7), "", C2:C7/SUM(C$2:C$7)))
셀 D2에 위 수식을 입력해준다.
정리하자면 각 Property별로 Worksheet를 만들고, 각 Worksheet에는 다음 정보를 정리해준다.
- File : 파일명
- Value : 파일에 대응하는 이름 (Metadata 에 실제로 올라갈 이름)
- Count : 랜덤으로 조합하였을 때, 원하는 갯수 (실제로는 비율에 따른 확률로 랜덤 조합됨)
- Rate : 해당 요소가 출현할 확률, (Rate) = (해당 Count) / (Count 의 전체합)
나머지 Worksheets (Face Shape, Eyes, Mouth) 에도 다음과 같이 정리해준다.
![](https://minsoo.blog/content/images/2022/05/-----------2022-05-31-11.47.57-1.png)
![](https://minsoo.blog/content/images/2022/05/-----------2022-05-31-11.47.59.png)
![](https://minsoo.blog/content/images/2022/05/-----------2022-05-31-11.48.03-1.png)
좌측에서부터 차례대로 Face Shape, Eyes, Mouth 의 Worksheet 이다.
Summary
앞선 과정들을 모두 완료했다면, 이제 구글 Colaboratory를 통해 구글 드라이브에 업로드 된 파일과, 구글 스프레드시트에 기록된 정보를 토대로 NFT Art를 조합할 준비가 완료되었다.
- NFT Art를 구상하여 Property 분리하기
- 구글 드라이브에 Property Image 업로드하기
- 구글 스프레드시트에 Property의 정보와 확률 입력하기
다음 포스트에서는 Property Image와, Property 정보 및 확률을 이용하여 구글 Colaboratory에서 NFT Art를 만들어내는 작업을 해볼 것이다.