그래서. 나는 상당히 큰 메쉬를 가진 물체를 가지고 있으며, 비행기의 한면에있는 메쉬의 일부분 만 남도록 비행기로 슬라이딩 할 수 있기를 원합니다.큰 개체를 실시간으로 조각내는 것이 현실적입니까? (말하자면 ~ 1M 트리스)
실시간으로 처리하는 것이 가능합니까? 대답은 필연적으로 하드웨어에 달려 있다는 것을 알기 때문에 광범위한 대답이 좋습니다. 그렇다면 어떻게 문제에 접근해야합니까?
그래서. 나는 상당히 큰 메쉬를 가진 물체를 가지고 있으며, 비행기의 한면에있는 메쉬의 일부분 만 남도록 비행기로 슬라이딩 할 수 있기를 원합니다.큰 개체를 실시간으로 조각내는 것이 현실적입니까? (말하자면 ~ 1M 트리스)
실시간으로 처리하는 것이 가능합니까? 대답은 필연적으로 하드웨어에 달려 있다는 것을 알기 때문에 광범위한 대답이 좋습니다. 그렇다면 어떻게 문제에 접근해야합니까?
삼각형 메쉬와 평면이 교차하는 속도가 매우 빠릅니다. 그 주어진 비행기에 관한 쪽의 점검 포인트가 간단합니다. 점과 평면의 내적 값을 보통의 값인 으로 만들고 평면 '값'과 비교하면됩니다. 결과에서 삼각형이 평면과 교차한다고 가정합니다. 양의 측면에있는 전체 삼각형뿐만 아니라.
메쉬를 포인트 목록과 삼각형 목록으로 저장한다고 가정합니다. 각 삼각형은 3 개의 포인트 인덱스로 표시됩니다. 그게
이 알고리즘은 다음
For each point calculate dot product with plane normal
For each point calculate plane side it belongs. Positive or negative side or exactly on the plane.
For each triangle count number of it's points for each side.
If all points are on positive side or on plane then take whole triangle
If all points are on negative side or on plane then do not take triangle
If some points are on positive side and some on negative side, calculate
intersection points between triangle edges and plane and create triangles in a way:
One point on positive side. Result is one triangle.
Two points on positive side. Result is quadrilliteral, or two triangles.
Plane intersect triangle exactly on one point. Similar to first case.
모든 동작 포인트의 수에 간단한 선형이다. 그 모든 알고리즘은 빠르다. 나는 1M 초의 트라이어 메쉬와 교차해야한다고 생각한다.
당신은 슈퍼 좋은 GPU가 필요합니다 ... 아마도 알고리즘도 ... 나는 훨씬 적은 양의 객체 (예 : 10K)로 테스트하고 그 성능을 테스트하는 접근법을 제안합니다. 하드웨어 + 알고리즘이 그 수준에서 우수하다고 판명되면 객체 수를 늘리는 것이 좋습니다. 그렇지 않은 경우 작은 숫자로 먼저 해결하십시오 (더 나은 하드웨어, 더 나은 알고리즘). 적은 숫자로 증명할 수 없다면 더 큰 숫자로는 증명할 수 없습니다. – Ian
@Ian 일반적인 모양 (큐브, 구형 등) 및 간단한 모양에서는 잘 작동하는 코드가 있지만 큰 메시의 경우로드 시간이 약 1 분으로 늘어납니다. 원하는 결과. 나는 그것이 나의 특정한 접근 방식 때문인지 또는 전체 개념이 처음부터 결함이 있는지 알지 못한다. – kace91