2016-06-03 4 views
0

다른 누군가가 다음 질문에 답할 수있는 링크를 안내해 줄 수 있습니다.이 질문은 해결책을 묻기 전에 먼저 시도하고 싶습니다.플랫 쉐이딩 좌표계

3 개의 꼭지점 A (0,2, -1), B (1,0,1) 및 원점 O의 삼각형면을 고려하고 정점에서 법선 벡터 인 은 nA = (0,1, 0), nB = (1,0,0) 및 nO = (0,0,1), 각각 이다. 입사광은 백색이고 L = (1,2,2)의 방향으로 지향성이며, 강도는 1이고, 배경 주변 광 강도는 0.1이며, 확산 반사는 (적색, 녹색, 청색)에 대한 계수는 (0.6,0.7,0.8). 반사 조명이 없음 을 고려해야합니다.

a) 얼굴 중앙의 평면 음영을 사용하여 얼굴의 (적색, 녹색, 파란색) 밝기 값을 찾습니다.

감사

+1

가 중심에 보간 정상을 찾아 볼 처리 (코사인)을 적용하려면 앰비언트를 추가하여 결과를 얻습니다. – BeyelerStudios

+0

당신이 나에 대한 링크를 제공해 주시겠습니까 – user6227505

+0

@ user6227505 링크를 요청하지 않아도됩니다 (사이트 리소스 외부 요청은 여기에서 주제를 벗어났습니다) 당신은 시험을위한 것이며 해결책은 필요 없지만 자습서는 필요 없다고 말했습니다. 여기에 접근하는 방법에 관해서는 ... 하나의 대답에 들어 맞는 쉬운 작업을 위해 여기서는 완벽하게 괜찮습니다. 닫기 투표를 방지하기 위해 링크 요청을 제거/재구성해야합니다 ... – Spektre

답변

1

BeyelerStudios는 의견은 당신이 알아야 할 모든 것을 알려줍니다. n0,n1,n2 (

  1. 정의

    는 삼각형 얼굴의 3 개 정점 (v0,v1,v2)와 법선에 의해 정의되어 있습니다 :하지만 당신이 분야에서 완전한 신인 그래서 여기에 몇 가지 추가 정보를 원하시면하다고 생각). 광원 벡터를 빛 벡터 light에 방향을 맞 춥니 다. 이 표시등은 (r,g,b) 색이 : col_dir=(1.0,1.0,1.0)col_amb=(0.1,0.1,0.1) 인 주변 및 방향 부분이 있습니다. 표면의 반사율은 col_face=(0.6,0.7,0.8)입니다. 삼각형의 중심점에 대한 픽셀 색상을 원합니다. 관심

    의 시점에서

  2. 컴퓨팅 normal은 (당신이이 경우에 더 나은 종이에이 계산대로) 당신이 좌표를 무게 중심 사용할 수 있습니다 관심의 임의의 점을 매핑합니다.

    triangle face

    그러나 귀하의 경우 지점이 센터는 정상 있도록 3 법선의 단지 평균 :

    n=(n0+n1+n2)/3.0 
    

    내가 무게 중심에 주어진 임의의 점의 경우 정확히 기억 경우가 (u,v,w=1-u-v) 좌표 그 다음과 같이 될 것이다 :

    n=u*n0 + v*n1 + w*n2 
    
  3. 컴퓨팅 cos(angle) 벡터 light-normal 사이 (두 벡터의 크기 단위 ... 정규화 동안)이 쉽게 사용 내적이다

    : 당신의 벡터가 정상화되지 않으면

    cos(angle) = (n.x*light.x)+(n.y*light.y)+(n.z*light.z) 
    

    을 수행해야 결과를 크기로 나눕니다.

    color = col_face * (col_dir*cos(ang) + col_amb) 
    

    cos(ang) 부정적인를 처리하는 것을 잊지 마세요 :
    cos(angle) = ((n.x*light.x)+(n.y*light.y)+(n.z*light.z))/(|n|*|light|) 
    
  4. 색상도 쉽게

    을 계산합니다. 동작은 구현에 따라 다릅니다. 때때로 다른 사람 |cos(ang)|를 사용합니다.

    당신이 관심이 있다면

[참고] 어떻게 렌더링 엔진 보간이 램버트를 계산,

+0

실제로 하드웨어를 사용하는 _real_ 렌더링 엔진은 실제로 보간을 위해 중심 좌표를 사용합니다. – Quinchilion

+1

@ Quinchilion 필자는 저수준 래스터 라이저 구현에서 몇 년 동안 원주 2 버퍼 보간 (축 분리)을 사용했기 때문에 그렇게 생각하지 않습니다. 중성자 좌표계는 래스터 라이저를 삼각형 프리미티브로 제한하고 오버 헤드를 추가합니다. 그러나 실제로 사용하고있는 실제 HW 구현을 알고 있다면 그것에 대해 알고 싶습니다. – Spektre

+0

여기 GPU에 대해 말하고 있습니다. 그 이유는 여기에 설명되어 있습니다. (https://fgiesen.wordpress.com/2011/07/06/a-trip-through-the-graphics-pipeline-2011-part-6/) . – Quinchilion