Unity에서 매우 큰 지형을 만들려면 어떻게 해야합니까? 너비와 길이를 큰 값으로 설정할 수있는 것 같습니다. 그러나 하이트 맵 해상도는 4097까지 올라가고 디테일 해상도는 4048까지 올라갑니다.
어떤 아이디어?
Unity에서 매우 큰 지형을 만들려면 어떻게 해야합니까? 너비와 길이를 큰 값으로 설정할 수있는 것 같습니다. 그러나 하이트 맵 해상도는 4097까지 올라가고 디테일 해상도는 4048까지 올라갑니다.
어떤 아이디어?
답변:
지형을 정사각형 "청크"로 분할하고 Update ()에서 관심있는 항목 (주로 현재 활성화 된 카메라 근처에있는 것)을로드합니다. .
시야 거리가 낮은 경우를 제외하고는 원거리 지형 LoD에 대해 사전 계산 된 저 폴리 모델을 사용하십시오. 또한 NPC 이동이나 다른 시뮬레이션과 같이 멀리 떨어진 지형의 지형 높이 맵이 필요한 경우 메모리에 보관할 지형의 저해상도 또는 가변 해상도 변형을 만듭니다. 전체 지형 데이터를 사용하지 마십시오. 게임로드시 자동으로 수행 할 수 있지만 일반적으로 빌드 또는 패키지 중에 사전 생성 된 데이터를 생성하는 도구를 만드는 것이 좋습니다.
마지막으로, 부동 소수점 정밀도 문제를 방지하려면 기본 카메라가 (0.0f, 0.0f, 0.0f)에서 멀어 질 때마다 전체 장면의 위치를 변경해야합니다.
Unity 답변 http://answers.unity3d.com/questions/17225/dynamic-terrain-loading.html 에 대한 관련 질문
지형을 청크로 분할해야합니다. 여러 개의 작은 지형. 그들 사이에 '구멍'이 없도록 그 (것)들을 서로 다시 '재봉'할 필요가 있습니다. 그렇지 않으면 당신은 그것들을 바로 시작할 수 있습니다.
Unity3D ~ 3.0 이후로 (// 100000 단계 IIRC와 같이) 항목을 너무 멀리 이동할 수 없으므로 지형의 최대 크기에 영향을 줄 수 있습니다.
어쨌든 내 온라인 RPG 게임에서 이것을 사용하고 있습니다 (실제 게임이 아닌 레벨 디자인에만 Unity3D를 사용하는 것을 제외하고).
궁금한 점이 있기 때문에 게임에 관한 정보 (예 : 발전, 유형, 그래픽, 스타일 등)를 공유 하시겠습니까?
우리는 Unity5에서 지구 전체에 대한 SRTM 데이터를 TerrainData
다른 수준의 세부 사항을 가진 객체의 높이 맵으로 처리하여 거대한 지형을 구현했습니다 [1]. 고려해야 할 몇 가지 사항이 있습니다.
높이 맵의 가장 자리는 하나 이상의 샘플과 겹치므로 지형을 적절하게 배치해야합니다. Terrain.SetNeighbors
메시를 연결하지 않고 Unity가 수행하는 다양한 세부 수준 만 설명합니다.
반드시 TerrainData
오브젝트 당 2 ^ n + 1 높이 샘플이 필요 합니다. 그렇지 않으면 Unity는 설정되지 않은 부분에 높이 0을 지정합니다.
의 용량이 2GB 미만인 경우 TerrainData
자산을 리소스 폴더에 자산으로두고 Resource.Load
런타임에 자산으로 가져갈 수 있습니다 . 2GB가 넘는 경우 Unity 빌드에 2GB 이상의 리소스가있을 수 없으므로이 방법은 더 이상 작동하지 않습니다. 이 경우 AssetBundles를 빌드하고 WWW
오브젝트 와 함께 비동기 적으로로드해야 합니다. 이것은 Shader.Parse
약 500ms의 오버 헤드로 각각 을 호출하는 부작용이 있습니다 . 나는 이것을 포럼에서보고했으며 [2] 여전히 답장을 기다리고있다. 결국 버그 보고서를 제출하겠습니다.
를 사용하는 것에 대해 생각하지 마십시오 AssetDatabase.LoadAssetAtPath
. 에디터에서만 사용할 수 있으며 Unity 빌드에서는 사용할 수 없습니다.
[1] https://www.youtube.com/watch?v=2UsyVuWoFbQ
[2] http://forum.unity3d.com/threads/shader-parse-delays-loading-of-assetbundle-include-no-shader .358235 /
타사 솔루션이 있습니다.
이 코드는 너비가 99,999 미터 인 지형을 만들 수 있으며 산은 노이즈 공식이지만 원하는 경우 100 개의 노이즈 공식을 하나의 맵에 혼합 할 수 있습니다. 예를 들어이 지형에서지도에서 사용할 수있는 총 삼각형 수는 66million, 저해상도 및 200million medium 해상도입니다. 여기에는 6,600 만 개의 삼각형 맵이 있으며 카메라 주위에 0.7 백만 개의 삼각형이 업데이트됩니다. unityplayer 거대한 지형, WASD 및 우주
지형을 청크로로드하는 것이 좋습니다. 더 작은 지형을 사용하면 아마도 스크립트가 transform.position-Terrain.transform.position을 사용하여 지형과 일정 거리에 있는지 확인할 수 있습니다. 실제로 게임 전체를 최적화하는 방법에 대한 블로그 게시물 을 작성했으며 청크로드에 대해 이야기했습니다. 도움이 되었기를 바랍니다.