>

읽어 주셔서 감사합니다!

마지막 질문에서 다음으로, 나는 완전히 작동하는 isosurface 터 레인을 가지게되었습니다. 이제 나무와 풀 등을 세상에 추가 할 시간입니다.

이전의 오래된 방법은 지형을 아래로 향한 그리드에 광선을 투사하는 것입니다. 그런 다음 광선이 히트에서 법선을 읽고 법선이<값인 경우 물건을 배치합니다.

각 식물 \ 트리 \ 잔디 시간에 대해 다른 그리드 해상도로이 작업을 수행하고 x, z를 오프셋하고 임의의 값으로 배율을 조정 한 다음 높이 맵 지형으로 만 작업했기 때문에 객체를 2d BV 트리에 추가합니다. 트리에 대해 한 행의 경계 볼륨 만있었습니다.

여전히 위의 방법을 사용할 수 있지만 아시다시피 하늘을 볼 수있는 지형의 일부에만 개체를 ​​배치합니다

새로운 지형 시스템을 구축하는 과정에서 실제 옥트리를 만드는 것이 포함되었으므로 객체를 저장하는 데는 사용하지 않지만 객체 위치를 생성하는 가장 좋은 방법은 없습니다

내가 읽은 내용에서 어떻게 든 내가 구축 한 복셀을 사용해야하지만 어떻게해야할지 잘 모르겠습니다.


  • 답변 # 1

    지형의 정점 위치와 삼각형을 구성하는 방법 (인덱스 등)에 대한 정보가 있어야하며 각 삼각형의 법선도 알고 있어야합니다.

    이 데이터를 사용하면 메쉬에서 임의의 삼각형을 선택할 수 있고 법선이 주로 위를 가리키는 지 확인하십시오 (이 점에 도트 제품을 사용해야 함). 그런 경우 삼각형이 위를 향하고 있으므로 무언가를 배치 할 수 있습니다 그것에.

    이제 삼각형 안의 임의의 점을 선택하여 개체를 배치하십시오.

    (삼각형의 크기에 따라 작은 다각형에는 영향을주지 않으므로 다음 부분은 건너 뛸 수 있습니다.)

    객체가 실제로 땅에 붙어있는 것처럼 보이게하려면 각 정점의 높이를 얻을 수 있으며 가중 평균을 사용하면 삼각형에서 해당 위치의 y 위치를 얻을 수 있습니다.

    각 정점 (여기서 d1, d2 abd d3)까지의 임의의 점의 거리를 취하고 (y1, y2 및 y3은 3 정점의 높이입니다.

    sum := d1 + d2 + d3
    height := (y1 * d1 + y2 * d2 + y3 * d3) / sum
    
    

    (원하는 경우 임의의 값을 추가 할 수 있음)

    이 옵션을 사용하면 객체의 경우 x, y 및 z 좌표가 나타납니다.

  • 이전 opengl es - 벡터 변환 전 조각 쉐이더 작업
  • 다음 java - libgdx ashley에서 ECS 구성 요소를 OOP로 래핑하는 방법은 무엇입니까?