Pixel Tooler 독립 식생 도구와 확인용 예제 구현
개발 기록 · 블로그 공개
원본 기록 상태 검증 대기
잔디·꽃·관목·나무 구조와 독립 예제10개, Camera 연동 예제, 개별·묶음 검토 패키지를 구현했습니다. 실제 화면·설치·로고는 보류입니다.

작업 결과
식생 미리보기 구현과 정적 검증, 검토용 패키지 생성을 마쳤습니다. 사용자께서 화면을 건드리지 말고 구현부터 진행하도록 지정하셔서 Unity 신규 실행·화면 전환·실제 Play·스크린샷 캡처는 하지 않았습니다. 전체 제품 출시 완료 상태는 아닙니다.
Tools → TurnRoom → Pixel Tooler → Overview에서 설치된 세 제품을 확인하고, Foliage에서 예제를 찾도록 구성했습니다. 대표 예제는 Assets/TurnRoom/PixelFoliage/Samples/Scenes/09-MixedGarden.unity입니다.
신규 기능으로 작업 전 실행 화면이 없으며 화면 조작 보류로 변경 후 실제 실행 화면도 미확보입니다. 설명 이미지나 생성 이미지로 대체하지 않았습니다. 외형·성능·전후 화면 비교 통과를 주장하지 않습니다.
변경 내용
적용 내용
제품과 의존성
Pixel Camera·Pixora의 기존 경로·ID와 수정 사항을 보존했습니다. 새 Pixel Tooler 개요 창은 설치된 제품을 선택해 여는 진입점입니다. 개별 판매와 묶음의 패키지 레시피를 작성했으며 실제 판매 포털 등록·가격·할인·업그레이드 정책은 변경하지 않았습니다.
Pixel Foliage 본체는 Runtime, Editor, Samples, Camera/Pixora 선택 Editor 어댑터로 분리했습니다. Runtime은 다른 제품이나 샘플을 참조하지 않습니다.
식생 구성
- World: 공통 바람·돌풍 패턴·구름 명암·연속/단계별 애니메이션 시간.
- Profile: 메시·재질·색·명암·뿌리 고정·휘어짐·잔흔들림 설정.
- Patch: 시드 배치·크기 변화·원형/사각형 제외 영역·공간별 인스턴스 그룹·거리 페이드.
- Interactor: 구역별 가까운 최대16개 접촉원. 반경0은 나누지 않습니다.
- Renderer: 개별 배치 나무·관목·지면도 공통 World를 사용합니다.
- Editor: 콜라이더 레이어·높이·경사 필터를 적용한 명시적 표면 굽기와 Undo.
정점 알파를 휘어짐 가중치로 사용해 꽃 줄기·꽃머리, 나무 줄기·가지·수관의 반응을 구분합니다. 전체 나무 billboard를 강제하지 않으며 스프라이트용 Camera Facing과 메시 표현을 선택합니다. 예제는 직접 작성한 절차적3D 메시 데이터이며 원본 Dylearn의 코드·미술·로고를 재배포하지 않습니다.
예제
| 번호 | 씬 | 확인 목적 |
|---|---|---|
| 01 | MeadowBreeze | 초원·바람·꽃 포인트 |
| 02 | BlossomWalk | 꽃밭과 비워 둔 길 |
| 03 | ShrubGarden | 관목과 낮은 초목 |
| 04 | YoungWoodland | 나무·수관·하층 식생 |
| 05 | ContactTrail | 움직이는 방문자와 잔디 접촉 |
| 06 | SteppedRhythm | 한 씬에서0·3·5·8 FPS 비교 |
| 07 | SharedGusts | 풀·꽃·관목·나무의 공통 돌풍 |
| 08 | CloudLight | 지면과 식생에 공유되는 구름 명암 |
| 09 | MixedGarden | 대표 종합 정원 |
| 10 | ExtensionGrove | 인스턴스와 개별 Renderer 확장 |
독립 씬10개 외에 Integrations/PixelCamera/Samples/Scenes/11-PixelCameraGarden.unity를 별도로 작성했습니다. Full Camera 프리셋은270px 높이로 저장했으며1080p 출력에서는4px 배율입니다. URP Renderer Feature는 별도 설정이 필요합니다. Selected Objects는 사용자 정의 인스턴스 변형을 보장하지 않아 연결에서 거부합니다.
Pixora는 내보낸 Texture2D를 받아 새 식생 재질을 만드는 출력 어댑터입니다. 원본 이미지·임포터·작업 문서는 수정하지 않습니다. 실시간 문서 동기화는 아닙니다.
식생 UI 문구85개와 제품군 개요 문구, 가이드를9개 언어로 작성했습니다. 공유 언어 변경 시 열린 UI를 다시 구성합니다. 식생 강조색은 기존 Camera·EntityForge·Pixora/공통색과 대조한 #779957이며 테마 에셋에서 관리합니다. 실제 전환·배치는 별도 미검증입니다.
검증
| 검사 | 결과와 범위 |
|---|---|
| C# | Unity6000.0.83f1 참조로6개 어셈블리 정적 컴파일 통과 |
| 수학·선택창 정책 | 컴파일한 실제 FoliageMath와 Unity 관리형 구조체, 현재 TemplatePickerPolicy로20,010개 단언 통과 |
| HLSL | 일반·인스턴싱14개 변형 정적 검사.10개 FXC 통과, URP 인스턴싱4개는 헤더 매크로 오류 후 실제 Unity DXC로 통과. 최초 실패와 unsigned DXIL 경고 보존 |
| 에셋·언어 | GUID·씬 참조·메시 버퍼/법선·독립 의존성·9개 언어/치환 인자·UXML 키·가이드 검사11개 통과 |
| 패키지 | 개별3개·식생 본체·묶음 검토 아카이브를 고정한 뒤 압축 내부와 현재 소스 해시 대조 통과 |
프로젝트 코드 로컬 커밋8f8d0916의194개 파일 경로를 대조해 이번 새 제품·문서·도구만 포함했습니다. 기존 Camera·Pixora 소스 변경은 커밋에 포함하지 않았고 원격 프로젝트 소스 푸시는 하지 않았습니다.
Unity 관리형 코드 실행은 게임 씬 실행과 다릅니다. 전체 화면·플랫폼·설치·공식 판매 검증을 통과했다고 해석하면 안 됩니다.
남은 사항
실제 Unity 가져오기·Play·카메라 합성·모든 언어 전환·마우스/키보드 선택·표면 배치 Undo/Redo·성능·스프라이트 텍스처 왕복 검증과 화면 캡처가 남아 있습니다. 화면 조작은 명시적 재허락 전까지 보류합니다.
Affinity CLI doctor/status는 샌드박스 EACCES를 구분해 재확인한 뒤 ECONNREFUSED를 반환했습니다. 앱 실행·재시작으로 화면을 방해하지 않았습니다. 필수 자체 로고의 실제 제작·저장·재열기·적용은 미완료이며 임의 도구로 대체하지 않았습니다. 새 프로젝트 로고는 null로 등록합니다.
검토 패키지는 Unitypackage 호환 tar/gzip이며 Unity-native export·깨끗한 설치·공식 Asset Store Validator는 미실행입니다. 상품 등록·묶음 정책 확인·최종 제출도 미실행입니다. 자체 방향광·구름 명암을 사용하며 전체 PBR·추가 광원·HDRP·XR·모바일 성능·모션 벡터를 보장하지 않습니다.
