사용자가 한 장면에서 3D 개체를 선택할 수있는 프로젝트를 진행하고 있으며 모든 사람들이이 특정 시나리오에 접근하는 가장 좋은 방법이라고 생각하는 것이 궁금합니다.3D 그래픽 피킹 -이 시나리오에 가장 적합한 방법은 무엇입니까
기본적으로 우리는 적어도 100 개의 객체 (최소 폴리곤이지만 ~ 12-15 개의 삼각형으로 만들어 짐)와 약 1000-2000 개의 객체가있는 장면을 가지고 있습니다.
일부 개체가 다른 개체를 가릴 수 있으므로 "피커 블"개체가 아마도 장면의 복잡도에 따라 800-1500 사이의 범위에있을 수 있기 때문에 모든 개체가 항상 "선택 가능"하지는 않습니다.
개체를 "선택"할 때 어떤 식 으로든 강조 표시하기를 원한다면 다르게 렌더링한다는 것을 의미합니다. 이것은 사소한 것이지만 한 번의 클릭뿐만 아니라 끌기에서도 수행해야합니다. 짧은 시간 내에 피킹 알고리즘을 많이 실행할 수 있습니다. 이상적으로 사용자는 "끌기"작업을 수행하는 동안 강조 표시된 객체를 볼 수 있습니다. 즉, 기본 렌더링보다 지연되지 않도록 비동기 적으로 수행해야합니다.
나는 간단한 광선 추적 선택을 시도했지만 이것은 장면에서 모든 삼각형을 반복하면서 객체를 찾는데 분명히 느리다.
또한 GPU 기반 따기를 시도 -하지만, 드래그 조작으로이 여러 렌더와 GPU 간 CPU 데이터 전송 위대한하지 않는 것을 의미 각 개체에 고유 한 색상을 제공하는 pixelbuffer를 사용하여 장면을 렌더링 공연.
내가 원하는 성능과 기능을 시도해 볼 수있는 다른 가능성이 있습니까?
감사합니다.
Octree 접근법 이외에도 먼저 더 간단한 경계 용적을 테스트해야합니다. 예 : 구형 - ray 교차에 대한 테스트는 매우 저렴합니다. 광선이 경계 볼륨에 부딪치지 않으면 광선이 메시에 닿는 경우 시도 할 필요가 없습니다. –
그래서 여러분은 구의 상자뿐만 아니라 구의 팔각형을 만들고 먼저 구를 테스트하는 것이 유익 할 것이라고 말하고 있습니까? – poncho
아니요, 옥트리 나무에서 잠재적 인 히트 곡을 발견하면 실제 히트 곡이 있는지 분석해야합니다. 경계 볼륨을 먼저 확인하여 가속화 할 수 있습니다. –