THREE.PointLight의 decay 속성

이 속성은 거리에 따른 광원의 감쇄 지수값입니다. 먼저 수식을 보면..

광원이 거리에 따라 얼마나 빨리 빛을 잃어버리는지를 결정하는 값인데요. 위 식에서 I는 거리에 따라 결정되는 실제 밝기값이고 I_0는 광원을 생성할때 지정한 밝기값이며, distance는 광원에서 물체까지의 거리입니다. decay는 우리가 살펴보고 있는 감쇠 계수입니다.

decay의 값은 2가 기본값입니다. 즉, 2이면 일반적인 감쇠인데 빛은 거리의 제곱에 따라 감쇄됩니다. 만약 decay 값을 1로 변경하면 거리에 반비례하게되고 0이면 거리와는 상관없이 일정한 밝기를 유지하게 됩니다.

PointLight에는 distance라는 속성도 있는데 이는 광원이 영향을 주는 최대 범위입니다. decay는 이 범위 안에서 거리에 따른 밝기 세기에 대한 감속 속도를 결정합니다. 이 decay를 조절하여 현실적인 조명 효과를 만들거나(2), 특수한 조명을 연출할 수도 있습니다.

R3F에서 lint 에러 제거하기

아래처럼 빨간펜 선생님의 지적이 눈에 거슬린다면 …

먼저 위의 코드 중 하나는 다음처럼…

extend(THREE as any);

그리고 src/@types 폴더를 만들고 원하는 이름의 확장자가 *.d.ts 인 파일(나의 경우 three.webgpu.d.ts)을 만들어 다음처럼 내용을 채웁니다.

import * as THREE from 'three/webgpu';
import { ReactThreeFiber } from '@react-three/fiber';

declare module '@react-three/fiber' {
  interface ThreeElements {
    meshBasicNodeMaterial: ReactThreeFiber.Object3DNode;
  }
}

그럼 더 이상 빨간펜 선생님의 잔소리는 사요나라… 입니다. 물론 필요할 경우 지적당한 타입을 *.d.ts에 계속 추가해야 합니다.