FoliMesh

PlayCanvas용 사실적 스타일 지피식물

PlayCanvas는 GLB를 container 에셋으로 다룹니다. 파일을 에디터에 끌어다 놓으면 모델 계층이 담긴 템플릿이 만들어지고, 엔진 코드만 쓸 때는 app.assets.loadFromUrl(url, 'container')로 불러온 뒤 asset.resource.instantiateRenderEntity()로 인스턴스화합니다. 모든 모델에 LOD0–LOD3가 있지만 엔진에 LOD 컴포넌트가 없으므로, 카메라 거리를 비교해 각 LOD 엔티티의 render 컴포넌트를 켜고 끄는 짧은 스크립트를 붙입니다.

사실적 스타일은 PBR 메탈/러프니스 워크플로를 따릅니다. 나무껍질(베이스 컬러·노멀·러프니스)과 잎이 별도 머티리얼이고, 잎은 마스크 카드라 StandardMaterial의 alphaTest를 켜고 양면 잎은 cull mode를 none으로 설정합니다. 고사리, 풀 무더기, 갈대는 1인칭·3인칭 게임, 생존, 오픈 월드에 어울립니다. 정적인 풀은 batch group으로 묶고 넓은 지역은 meshInstance.setInstancing()으로 하드웨어 인스턴싱합니다. 충돌은 mesh 컴포넌트와 정적 rigidbody(렌더 비활성)입니다.

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

PlayCanvas에서 사용하기

PlayCanvas는 GLB를 컨테이너 에셋으로 다룹니다. 에디터에서 GLB를 업로드하면(FBX는 임포트 시 GLB로 변환) 모델 계층이 담긴 템플릿이 생기고, 엔진 전용 코드에서는 app.assets.loadFromUrl(url, 'container')와 asset.resource.instantiateRenderEntity()를 사용합니다.

  • LOD: 내장 LOD 컴포넌트가 없으므로 작은 스크립트로 카메라 거리를 비교해 LOD0–LOD3 엔티티의 render 컴포넌트를 전환합니다.
  • 정적인 나무는 배치 그룹을 공유해 드로우 콜을 합칠 수 있고, 큰 숲에는 meshInstance.setInstancing()과 변환 행렬 버텍스 버퍼로 하드웨어 인스턴싱을 사용하세요.
  • 잎: glTF MASK가 StandardMaterial의 alphaTest를 설정하며, 양면 잎에는 컬 모드를 none으로 지정합니다.
  • 콜리전 메시: mesh 타입 collision 컴포넌트와 정적 rigidbody를 붙이고 render 컴포넌트는 끕니다.

다른 카테고리

다른 스타일로 보기

다른 엔진용으로 보기