NFT는 수집가들이 디지털 아트 세계에 참여할 수 있도록 하면서 동시에 아티스트들이 그들의 작품에 대한 인정을 받을 수 있는 수단이 되었습니다. 3D NFT가 예술 업계에서 주목을 끌면서, 단일 이미지의 3D 작품을 수집가들과 고유한 것을 공유할 수 있는 더 크고 다양한 NFT 컬렉션으로 발전시키는 방법을 아는 것은 귀중한 기술입니다. 이 점을 염두에 두고, 이 글에서는 기본적인 블렌더 씬을 수백 또는 수천 개의 개별 작품을 생성할 수 있는 반복적이고 역동적인 프로젝트로 발전시키는 과정을 안내합니다.
3D NFT 컬렉션의 생성을 자동화하기 전에 컬렉션에서 얼마나 많은 변동성을 원하는지 분석하는 것이 중요합니다. 진정 임의 요소를 포함하는 컬렉션을 원하십니까, 아니면 최종 렌더링이 어떻게 보여지는지 더욱 세밀하게 제어 하시겠습니까? 무작위 선택의 경우 지오메트리 노드나 셰이더를 사용하면 원하는 출력을 충분히 찾을 수 있습니다. 그러나 복잡한 수정이 필요한 경우 짧은 Python 스크립트나 Blend_My_NFT와 같은 특수 애드온을 사용하는 것이 더 나을 수 있습니다.
이 글에서는 이 샘플 숲 렌더링을 기반으로 3D NFT 컬렉션을 생성하는 방법과 혼합 파일을 수정하여 개별 NFT 컬렉션을 대량으로 만드는 방법을 소개합니다. 이를 위해 지오메트리 노드, 드라이버 및 블렌더의 Python API를 사용하여 렌더링을 준비합니다. 우리는 숲을 지을 수 있는 오브젝트의 다양한 변형과 씬의 다양한 요소를 위한 몇 가지 재질로 시작한 다음 씬의 키프레임을 기반으로 이것들을 편집하여 번거로움 없이 프레임을 블렌더 렌더팜으로 쉽게 보낼 수 있도록 하겠습니다.
노드 트리와 스크립트를 사용하여 3D NFT 컬렉션을 만들 예정이기 때문에 편집해야 할 속성을 쉽게 찾을 수 있도록 정리하는 것이 중요합니다. NFT 컬렉션의 기반이 될 8가지 유형의 트리 컬렉션과 카메라와 플로어 오브젝트 등 다른 요소를 호스팅할 수 있는 "씬" 컬렉션으로 씬을 구성했습니다.
다양한 텍스처 맵 변형을 쉽게 선택할 수 있도록 나무 재질도 설정했습니다. 각 텍스처 변형 이름이 숫자로 변경되었습니다. 이것은 단순히 범위의 임의의 숫자를 선택하여 어떤 텍스처를 사용하는지를 쉽게 무작위화 하는 데 나중에 중요할 것입니다. 마지막으로 나중에 오브젝트의 속성을 참조할 때 이름 지정 체계를 일관되고 체계적으로 유지해야 합니다.
먼저 지오메트리 노드를 사용하여 숲의 나무, 잔디 및 바위를 자동으로 변경하는 방법에 대해 살펴보겠습니다. 표면의 지오메트리 노드는 꽤 간단합니다. 기본 노드 나무는 오브젝트의 지오메트리를 가져와서 그룹 출력 노드를 통해 직접 다시 보냅니다. 지오메트리를 수정하거나 완전히 바꾸기 위해 사이에 배치하는 모든 항목은 뷰포트 및 렌더링에 표시되는 내용을 완벽하게 제어합니다.
예를 들어, 오브젝트는 편집 모드에서 정점이 0이 될 수 있지만 노드를 통해 형상을 추가한 후에는 무한히 복잡한 메쉬가 될 수 있습니다. 이것이 지오메트리 노드를 블렌더의 메쉬 수정자와 조금 다르게 만드는 것입니다.
저희는 지상 메쉬에서 시작하여 나무, 바위 및 잔디를 그 위에 채운 다음, 우리가 만든 것을 무작위로 추출하는 쉬운 방법을 원합니다. 바닥을 채우는 것은 매우 쉽습니다. 바닥의 지오메트리를 입력으로 삼고, 표면의 점을 분산시킨 다음 트리 컬렉션 중 하나에서 오브젝트를 인스턴스화할 수 있습니다. 그 후에 임의의 값 노드 몇 개를 추가하고 단일 시드 값을 변경하여 쉽게 랜덤화 할 수 있도록 시드를 설정할 수 있습니다.
이 설정은 다양한 렌더링을 생성할 수 있는 기반이 됩니다. 다음으로 노드 트리가 숲을 만드는 데 사용하는 컬렉션을 변경할 수 있도록 설정을 수정할 것입니다.
안타깝게도 지오메트리 노드에는 무작위로 컬렉션을 선택할 수 있는 원 클릭 솔루션이 없습니다. 좋은 소식은 노드 몇 개를 사용하여 원하는 임의성을 모방하는 설정을 만들 수 있다는 것입니다. 일련의 스위치 + 빼기 노드를 추가하면 나중에 스크립트를 통해 임의의 수로 쉽게 설정할 수 있는 단일 정수 값을 기반으로 사용할 컬렉션을 설정할 수 있습니다.
각 스위치 노드는 부울(Boolean) 입력을 사용하여 숫자가 1보다 크거나 작은 지 확인한 다음, 입력 값에서 1을 빼서 1보다 큰 숫자가 소진될 때까지 다시 시도합니다. 예를 들어, 정수를 2로 설정하면, 부울이 세 번째 스위치에서 false를 반환하고 세 번째 컬렉션에서 "루프"를 종료하기 전에 두 번 빼야 합니다. 지금 컬렉션을 설정하려면 0에서 7사이의 숫자를 선택하면 됩니다.
여기서부터 필요한 모든 요소에 대해 이 설정을 복제할 수 있습니다. 이 경우에, 돌과 풀을 더하면 아래와 같은 것을 얻을 수 있습니다!
이제 씬을 변경할 수 있는 좋은 기반이 마련되었으므로 기본적인 파이썬 스크립트를 사용하여 변경을 자동화해야 합니다. 그렇지 않으면 이미지를 렌더링할 때마다 지오메트리 시드 값과 재질을 직접 변경해야 합니다.
작은 것부터 시작해 드라이버를 사용하여 프레임을 기반으로 시드를 변경함으로써 지오메트리 노드 시드 값을 변경할 수 있습니다. 지오메트리 값은 이미 무작위이므로 복잡한 스크립팅을 피하고 현재 프레임을 시드로 사용할 수 있습니다. 이렇게 하려면 시드 노드의 값을 #frame으로 변경합니다. 해시태그는 저희가 함수를 사용하고 있다는 것을 나타내며 프레임 함수는 씬의 현재 프레임을 불러옵니다.
우리 씬의 다른 임의 요소들은 Python에 대해 좀 더 깊이 파고들어야 합니다. 렌더링하려는 모든 프레임에 변경이 발생하기를 원하지만 시드 값과 달리 특정 범위의 난수를 반환하고 재질 설정에서 특정 노드를 연결해야 합니다. 블렌더의 텍스트 편집기에서 짧은 Python 스크립트 설정을 통해 이 작업을 수행할 수 있으며, 데이터 블록을 참조하여 씬의 특정 요소를 변경할 수 있습니다.
아래는 실행할 수 있는 스크립트 기반으로 필요한 요소를 변경할 수 있습니다. 자신만의 것을 구축하기 위해 자신의 씬 오브젝트의 데이터 블록을 사용하여 동일한 원리를 따를 수 있습니다. 필드 위에 마우스를 놓고 CTRL-SHIFT-C를 눌러 속성의 데이터 경로를 복사하기만 하면 됩니다. # 뒤에 텍스트가 있는 줄은 스크립트의 각 줄을 이해하는 데 도움이 되는 주석입니다.
다음으로 프레임 변경 함수에 스크립트로 작성된 변경 사항을 추가하는 핸들러를 사용하여 프레임이 변경될 때마다 매번 실행되도록 이 함수를 설정할 수 있습니다. 먼저, 지금까지 가지고 있던 것을 함수에 포함시킨 다음 스크립트 끝에 해당 함수를 추가합니다. 이제 '실행'을 클릭해서 프레임을 바꿀 수 있습니다! 결과가 나오지 않을 경우 윈도우 > 시스템 콘솔 전환(Toggle System Console)에서 시스템 콘솔에 오류가 있는지 확인할 수 있습니다.
마지막 단계로 텍스트 편집기의 텍스트 > 등록 아래에 등록하여 블렌더 파일을 열 때마다 실행할 스크립트를 설정할 수 있습니다. 즉, 설정한 스크립트를 그대로 사용하면서 특별한 구성 없이 프로젝트 파일을 렌더팜에 업로드할 수 있습니다.
여기서 기본적으로 다른 메쉬, 지오메트리 노드 및 재질을 사용하여 무한 변형을 추가할 수 있습니다. 마지막 씬에서, 저는 더 많은 가변성을 만들기 위해 밝은 색상과 1층의 무작위화를 다른 요소들 위에 추가했습니다. 그 결과는 정말로 엄청난 수의 가능한 렌더링입니다.
이 설정이 어떻게 진행되는지 자세히 알고 싶다면 이 씬의 프로젝트 파일을 다운로드하여 파일과 렌더링을 직접 살펴보십시오!
NFT 컬렉션을 만드는 것에 대한 더 많은 아이디어를 찾고 있다면 NFT 아티스트인 Victor Duarte와의 최신 인터뷰를 확인하거나 씬 생성에 대해 더 깊이 알고 싶다면 블렌더 스튜디오에서 아티스트를 위한 스크립팅 (Scripting for Artists from the Blender Studio) 과정을 시작하는 것이 좋습니다.