FoliMesh

three.js용 사실적 스타일 나무

사실적인 나무는 three/addons의 GLTFLoader로 three.js 씬에 바로 들어갑니다. GLB에는 LOD0–LOD3 메시가 들어 있어 THREE.LOD에 그대로 연결할 수 있습니다. lod.addLevel(mesh, distance)로 각 단계를 등록하면 렌더러가 카메라 거리에 따라 매 프레임 단계를 바꾸므로, 참나무나 유럽소나무, 수양버들이 1인칭 카메라 바로 앞에 서 있어도 문제가 없습니다.

숲을 만들 때 InstancedMesh는 수천 그루의 줄기를 한 번의 드로우 콜로 처리하고, BatchedMesh는 가문비나무, 자작나무, 단풍나무 변형을 섞을 수 있습니다. THREE.LOD는 오브젝트 단위로 동작하므로 청크마다 인스턴스를 단계별로 직접 묶어야 합니다. 잎은 알파 테스트 카드라서(glTF alphaMode MASK는 material.alphaTest가 되고, 양면 재질에는 THREE.DoubleSide가 자동 적용됩니다) 정렬이 필요 없고 그림자도 정확합니다. 충돌 메시는 숨긴 채 Rapier나 cannon-es에 넘기면 되며, WebGLRenderer와 WebGPURenderer 모두에서 작동합니다.

모델
14
LOD 단계
LOD0 – LOD3
포맷
GLB · FBX · OBJ

사실적 스타일 소개

사실적인 모델은 glTF 2.0, Unity, Unreal, Godot, three.js가 그대로 읽는 PBR metal/roughness 워크플로를 사용합니다.

  • 나무껍질: 줄기와 가지에 베이스 컬러, 노멀, 러프니스 맵.
  • 잎: 잎 뭉치 텍스처를 쓴 알파 테스트(Masked) 카드로, 알파 블렌딩이 아니어서 깊이를 기록하고 정렬이 필요 없으며 그림자도 정확합니다.
  • 나무껍질과 잎은 별도 머티리얼이라 드로우 콜 수를 예측하기 쉽고 GPU 인스턴싱과 잘 맞습니다.
  • LOD0은 근경용이고, LOD1–LOD3은 가지와 잎 카드를 줄여 마지막 단계는 원경에 충분히 가볍습니다.

PC·콘솔의 1인칭/3인칭 게임, 서바이벌, 오픈 월드, 시뮬레이터에 가장 잘 맞습니다. 모바일에서는 LOD1 또는 LOD2를 가장 가까운 단계로 쓰고 잎의 오버드로를 확인하세요.

three.js에서 사용하기

three.js에서는 three/addons의 GLTFLoader로 GLB를 불러오며, DRACOLoader나 KTX2Loader는 파일이 해당 확장을 쓸 때만 필요합니다.

  • 거리 기반 LOD: THREE.LOD에 lod.addLevel(mesh, distance)로 LOD0–LOD3을 등록하면 매 프레임 카메라 거리에 따라 단계가 바뀝니다.
  • 숲: InstancedMesh는 수천 개의 복제본을 드로우 콜 하나로 그리고, BatchedMesh는 여러 나무 변형을 섞을 수 있습니다. THREE.LOD는 인스턴스 단위로 동작하지 않으므로 청크마다 LOD별로 인스턴스를 직접 묶으세요.
  • 잎: glTF alphaMode MASK는 material.alphaTest로, 양면 머티리얼은 자동으로 side: THREE.DoubleSide가 됩니다.
  • 콜리전 메시: 보이지 않게 두고 Rapier나 cannon-es 같은 물리 라이브러리에 넘기세요.

WebGLRenderer와 WebGPURenderer 모두에서 동작합니다.

팩

다른 카테고리

다른 스타일로 보기

다른 엔진용으로 보기