2009-09-23 2 views
0

정상적인 장면의 정점 법선이 월드 공간의 텍스처에서 색상으로 나타나면 가장자리를 효율적으로 계산하는 방법이 있습니까? 아니면 수학적으로 불가능합니까? 뷰 공간에서 법선을 가지고 있다면 모서리를 계산할 수 있다는 것을 알고 있지만, 월드 공간에서 법선을 가지고 있다면 가능할 지 확신하지 못합니다. (과거에 대한 방법을 찾아 내려고 노력했습니다. 시간 ..)세계 공간에서 노멀 맵이 주어지면 에지를 찾는 적절한 알고리즘은 무엇입니까?

나는 HLSL과 함께 DirectX를 사용하고 있습니다.

그것은 이미지가 포함 얼마나 많은 색상에 따라 달라집니다

답변

1

셀 쉐이더에 만화 스타일의 가장자리를 만들려고한다고 가정합니다.

그렇다면 월드 공간 픽셀 위치에서 카메라 위치를 뺀 표준 세계 공간의 내적을 간단히 만듭니다. 피연산자가 모두 같은 공간에 있으면 오케이입니다.

float edgy = dot(world_space_normal, pixel_world_pos - camera_world_pos); 

edgy이 0에 가까울 경우 가장자리입니다.

화면 공간 크기의 가장자리를 원하면 다른 표면에 추가 객체 ID 정보를 렌더링하고 차이점을 색상 표면에 게시해야합니다.

1

, 그들이 어떻게 병합 : 디더링 날카로운 모서리, 혼합, ...
당신은 내가 당신이 색 -에 액세스 할 수 있다고 가정하고있는 정점 법선이 있다고 때문에 단일 비행기에 관한 정보.

  1. 제가 동일한 색상 (RGB)의 국부 영역 이미지를 검색하고 '에지'찾을 R, G 또는 B의 최고 사용 - :
    난 다양한 성공 두 기술을 사용한 즉, 선택된 R, G 또는 B가 더 이상 가장 높은 값이 아닌 경우;
  2. 내가 사용한 두 번째 방법은 내부적으로 이미지를 16 색으로 줄이는 것이므로이 경우 윤곽선을 쉽게 찾을 수 있습니다.

벡터를 구성하려면 '와이어 프레임'이미지의 세분성이 얼마나 좋을지에 따라 달라집니다.

2
if (normalA dot normalB > cos(maxAngleDiff) 

당신은 가장자리가 있습니다. 완벽하지는 않지만 다른 방법으로는 찾을 수없는 가장자리를 찾을 것입니다.

아니면 오해입니까?

편집 : 간단히 말해서 이미지를 고역 통과하는 방법은 무엇입니까?

관련 문제