혹시 render target을 이용한 picking의 구현이 가능할까요?
336
작성한 질문수 1
예를 들어 각각의 오브젝트가 유니크한 24비트 색상id를 가지고, 해당 색상id를 diffuse color처럼 뿌린 render target을 만든다면,
마우스로 화면 클릭시 해당 render target의 클릭 좌표에 있는 색상에 따라 어떤 오브젝트가 선택되었는지를 확인할 수 있기 때문에 행렬 변환과정이 필요 없어지면서 속도가 엄청 빠를것 같은데요.
이미 사용되고 있는 방법인지,
알려져있긴 하지만 비효율적이거나 일반적이진 않은 방법인지 궁금해서 여쭈어봅니다.
답변 1
1
3d 게임은 조명 영향을 받아 색상이 바뀌기도 하고,
동일 타입 물체가 겹쳐 있으면 가장 앞에 있는 애를 클릭해야 하기 때문에
색상으로 판별하는 방법은 딱히 현실에서 사용하기 애매합니다.
다만 그 방법이 굉장히 유용할 때가 있는데
바로 게임봇을 제작할 때입니다.
게임봇 제작도 여러가지 방법이 있는데
리버싱 or 패킷 조작 방식도 있긴 하지만
그보다 더 쉬운건 화면 색상으로 판별하는 방법인데요.
UI는 색상이 바뀌지 않기 때문에
특정 색상 (ex. 유니크 아이템)이 화면에 뜨면 그 화면 좌표를 클릭한다거나,
하는 식으로 간단히 자동화를 할 수 있습니다.
예전에 디아블로3 그홈이라는 보스를 무한으로 사냥하는 봇을 그렇게 만든 기억이 있네요.
0
제가 말하고자 했던것은 diffuse와 비슷하지만, diffuse와는 관계없는, 조명과도 관계없는 별개의 object id를 색상처럼 이용하는 render target view를 만드는것을 의미한 거긴합니다!
좌측 그림에서는 색상으로 두 물체가 구분이 되지 않지만, 우측에서처럼 각 object는 id를 따로 갖고 있어서 클릭했을 때 우측 RT에서의 클릭 위치로 어떤 object를 클릭했는지를 판별하는 그런 메커니즘을 말한거였습니다 ㅎㅎ
해당 object id를 key로 갖는 map이나 tree 구조에 object 포인터들을 보관하는 방식으로 object 클릭의 속도를 가속화할 수 있지 않을까 해서요.
그런데 생각해보니 picking이 비싸긴 하지만, 마우스의 I/O보다는 훨씬 빠르기 때문에 단지 그것을 위해서 이런 방식으로 구현하는 것은 굉장히 메모리적으로나 리소스상으로 비효율적이라는 생각이 들긴 하네요.
그렇지만 rts같은 경우처럼 object가 엄청나게 많은 경우에는 사용할 수 있지 않을까 하는 생각도 들긴 합니다 ㅎㅎ

0
아 이해했습니다.
RenderTarget 리소스 관리까지 생각하면,
그만한 가치가 있을지는 테스트 해봐야 알 것 같지만
높은 확률로(?) 부정적인 결과가 나올 것 같습니다.
사실 마우스 피킹 자체는 성능에 엄청 큰 이슈가 되지 않습니다.
AI 길찾기 비용이라거나, 피킹 외의 raycasting (가령 지형 지물 위에 있기 위해 아래로 쏘는)
비용 등이 대부분의 클라 CPU 연산량을 차지하기 때문이죠.
Lighting 추가하고 나니 프레임이 많이 떨어지는데 원래 이런 건가요?
0
524
0
Deferred Rendering 에서 조명에 Culling이 일어나는 것 같습니다.
1
563
1
static_pointer_cast와 static_cast의 차이가 무엇인가요?
0
1353
1
Engine.lib 파일을 포함 불가
0
617
1
셰이더 VS_Main에서 행렬 곱해줄 때
0
491
2
1:05분 질문(1시간 5분)
0
303
0
오류가 발생합니다
0
479
1
Animation코드가 무한로딩에 걸리네요
0
350
0
fov 관련해서 질문이 있습니다
0
282
0
normal mapping Tangent Space 수학식 질문
0
388
1
커리큘럼 관련 질문 드립니다!
0
278
0
강의를 어떤식으로 들으면 될까요??
0
385
1
머티리얼과 텍스쳐, 셰이더를 따로 관리해도 되나요?
0
444
1
박스 메쉬 생성하는 함수에서 버텍스가 왜 24개인가요
0
245
1
복수개의 서로 다른 동영상을 Picture in Picture 형식으로 rendering하는 가장 최적의 방법이 궁금합니다.
0
262
0
애니메이션 쉐이더에서 행렬보간 부분에 대해 질문드립니다
0
232
0
assert 에서 _currentIndex 와 _elemtSize 를 비교하는게 이해가 잘 안되네요
1
248
1
DX 공부방법에 대해서 질문 있습니다.
0
642
1
Root Parameter 를 정의하는데 있어서 질문있습니다.
0
377
1
Client 콘솔창이 잠깐 켜졌다가 말아요
0
255
1
DirectX12 Root Signature : CBV관련 질문입니다.
0
353
1
뷰 변환 행렬 관련하여
0
632
2
강의 시작!
0
306
1
using namespace Microsoft::WRL;
0
275
1





