FoliMesh

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

이 사실적인 나무는 GLB로 제공되며 Babylon.js에서는 @babylonjs/loaders의 glTF 로더로 불러옵니다. 참나무나 자작나무 한 그루는 ImportMeshAsync로, 같은 메시를 여러 번 복제할 때는 LoadAssetContainerAsync와 instantiateModelsToScene을 사용합니다. LOD0–LOD3는 lod0.addLODLevel(30, lod1), addLODLevel(80, lod2)로 연결하고 null을 넘기면 그 거리 이후에는 사라집니다. 껍질과 잎은 별도 머티리얼이고, 잎은 알파 테스트 카드라 깊이를 기록해 정렬 없이도 그림자가 정확합니다.

숲을 대량으로 그릴 때는 thinInstanceAdd에 행렬을 넘겨 유럽소나무, 가문비나무, 사시나무를 메시당 한 번의 draw call로 렌더링하고, 개별 피킹이 필요하면 createInstance로 바꿉니다. 보이지 않는 충돌 메시는 checkCollisions나 Havok PhysicsAggregate에 그대로 쓸 수 있습니다. 1인칭·3인칭 생존, 오픈 월드, 시뮬레이터에 어울리며 모바일에서는 LOD1이나 LOD2부터 시작하고 잎 카드의 오버드로를 확인하세요.

모델
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를 가장 가까운 단계로 쓰고 잎의 오버드로를 확인하세요.

Babylon.js에서 사용하기

Babylon.js는 @babylonjs/loaders의 glTF 로더로 GLB를 불러옵니다. ImportMeshAsync(예전 코드에서는 SceneLoader.ImportMeshAsync)를 쓰거나, 복제본이 많이 필요하면 LoadAssetContainerAsync와 instantiateModelsToScene을 사용합니다.

  • LOD: lod0.addLODLevel(30, lod1), addLODLevel(80, lod2)처럼 등록하며, 메시 대신 null을 넘기면 그 거리 너머에서 오브젝트가 숨겨집니다.
  • 수천 그루의 나무: thin instance(행렬과 함께 thinInstanceAdd)는 메시당 드로우 콜 하나로 그려집니다. 나무마다 피킹이나 로직이 필요하면 일반 createInstance를 쓰세요.
  • 잎: glTF MASK는 알파 테스트 PBRMaterial(MATERIAL_ALPHATEST)로 매핑됩니다.
  • 콜리전 메시: isVisible = false로 두고 checkCollisions나 Havok 물리(MESH 셰이프의 PhysicsAggregate)와 함께 사용합니다.

팩

다른 카테고리

다른 스타일로 보기

다른 엔진용으로 보기