2

텍스트의 벽을 사면하십시오. 나중에 이미지를 추가하겠습니다. 물, 모래, 풀, 나무, 미네랄, 사막, 해변, 섬 등등의 입방 미터 복셀지도를 생성해야합니다. 즉, 어떤 종류의 보로 노 프리 - 아웃이 없어도됩니다. 다른). 예, 이것은 게임입니다.무한 재귀를 피하면서 이웃에 해당하는 영역에서 임의로 점을 선택

나는 중요한 포인트를 무작위로 생성하고 고도 및 습도 수치를 보간 할 것으로 생각했지만 무작위 생성으로 손실을 입었습니다. 기본적으로 전체 목록을 한 번에 만들 필요없이 점의 분포가 어느 정도 필요합니다. 한 번에 약 20x20x20을 생성해야하며 약 1000x1000x1000 셀의 임계점을 사용할 수 있습니다. 그러나 큰 셀의 가장자리에서 이상한 일이 발생할 것으로 예상됩니다. 누구든지 이런 식으로 점수를 선택하는 방법을 알고 있습니까? 진짜 문제는 포인트가 "산맥"스타일 체인에서 다른 사람들과 근접하는 것을 선호해야한다는 것입니다.

여기의 문제는이 1km 셀에서 일어나는 문제입니다.

셀 내에서 이러한 방식으로 포인트를 선택하는 것이 가능하지만 셀과 셀의 이웃이 서로 의존해야하므로 사소한 알고리즘을 사용하여 이러한 셀 중 하나에 대해 무한대로 향할 필요가 있거나 격자 모양의 깨진 고리 모양. 체인이 셀 경계에서 더 자주 끊어서는 안됩니다. 그들이 다소 문제가있는 웨이퍼와 같은 패턴을 생성하면 생성/생성이 어려워 설계/게임 플레이에서 사용할 수 없습니다.

n.b. 이들의 목적을 위해, 시스템 레벨 랜덤 발생기는 시드 될 수 있고 실질적으로 균일하다. 셀 내에서는 체인을 잘 선택할 수 있습니다. 나는 또한 어떤 ungenerated 세포에 비해 세포 유출을 가진 것으로 간주

그래서 그 체인은 기존의 것들에 연결되어 시작하지만 그 요인으로 세대의 순서를 추가, 세대의 결정론 단순히 위치와 종자에 따라 휴식 것입니다.

현실감과 디자인을 위해 필자는 Perlin 사용을 멀리하고있다. 또는 gamedev.SE에 게시해야합니까?

+0

그래서 어려움은 셀을 독립적으로 생성하면 셀 경계에서 불연속이 발생한다는 것입니다. – Raedwald

+0

@ Raedwald 정확합니다. – hexafraction

+0

Downvoter : downvote를 설명해주세요. (다른 오래된 질문과 관련있는 사람이 초 이내에 downvoted 경우) – hexafraction

답변

1

핵심 개념은 셀을 채우기 전에 셀과 이웃하는 여섯 개 모두와의 인터페이스를 만드는 것입니다. 전 세계를 중공 상자 그리드로 그리는 그림이지만, 그렇게하기 전에이를 와이어 프레임 외곽선으로 만듭니다.하지만 그렇게하기 전에 와이어 프레임 교차점 그리드를 만드십시오.

다음은 간단한 접근법입니다.이를 개선해야합니다. 먼저, 전체 세계를 한번에 생성하는이 방법을 고려하십시오 :

(1) 모든 셀의 북쪽 서쪽 복셀을 선택하고 위치에 따라 전 세계 속성을 합리적인 값으로 설정하십시오 씨앗.

(2) 정점을 연결하는 보셀의 선을 선택하고 위치 및 시드를 기준으로 모든 월드 속성을 채우지 만 양 끝의 기존 버텍스 값과 일치하도록 제한합니다.

(3) 기존 선으로 경계가 지정된면을 설명하는 보셀의면을 선택하고 위치 및 시드를 기반으로 모든 월드 속성을 채우지 만 가장자리를 따라 기존 선 보셀 값과 일치하도록 제한됩니다 .

(4) 위치 및 시드를 기준으로 셀을 채우지 만 기존의 경계 여섯면과 일치하도록 제한됩니다.

이제이 방법을 한꺼번에 수행 할 필요가 없다고 생각해보십시오. 필요한 것은 셀을 채우기 전에 셀의 여섯면 모두를 작성하고, 채우기 전에 네면의 모든 경계선을 작성하고, 채우기 전에 두 선의 끝점을 작성한다는 것입니다 첫 번째 셀 다음에는 이들 중 일부가 이미 존재합니다.

당신이이 개념을 개선해야한다는 이유는 셀 경계에서 눈에 띄는 그래디언트 경계를 생성한다는 것입니다. 나는 각 인터페이스 voxel이 월드 속성을 포함 할뿐만 아니라 그 지점에서 인터페이스를 통해 각 속성의 변화율을 포함 할 필요가 있다고 생각합니다. 이것은 각 라인 복셀이 각 속성에 대해 두 개의 변화율을 포함하고 각 꼭지점 3 개를 포함해야 함을 의미합니다.

미리 정의 된 그래디언트가있는 보셀에 접근 할 때 월드 속성의 그래디언트를 제한하는 방법을 설명하지는 않겠습니다. 내가 처리 할 수 ​​있고 내 대답이 이미 너무 길어서 어떻게하는지.

+0

"vertex voxels"작은 딸꾹질이 있습니다. 나는 복셀에 의해 복셀을 생성하지 않습니다. 나는 임의의 점을 선택하고 그것을 생성하기 위해 주변의 모든 점 (40 정도)을 복셀에 필요로합니다. 그래도 이것은 재미있어 보일 수 있습니다. – hexafraction