NeRF
-
-
[NeRF 기본] 레이 마칭 알고리즘 (The Ray-Marching Algorithm)NeRF 2023. 8. 5. 11:14
The almighty ray-marching algorithm 내부 산란으로 인해 광선을 따라 들어오는 빛을 적분하려면, 광선이 통과하는 볼륨을 작은 볼륨 요소로 분해하고 각각의 작은 볼륨 요소의 기여를 전체 볼륨 개체에 결합한다. 이는 2D 편집 소프트웨어(예: Photoshop)에서 마스크 또는 알파 채널(일반적으로 개체의 불투명도를 나타냄)을 사용하여 이미지를 서로 겹쳐 놓는 것과 비슷하다. 앞으로 언급 될 리만 합에서 각각의 작은 볼륨 요소는 샘플을 나타낸다. To integrate incoming light along the ray due to in-scattering, we will break down the volume that the ray passes through into small ..
-
[NeRF 기본] 볼륨 렌더링 기본 (An Introduction to Volume Rendering)NeRF 2023. 8. 5. 01:10
작성중 * Volume Rendering for Developers: Foundations 를 참조하여 작성되었습니다. Lesson: to learn how to render a volume shaped like a sphere illuminated by a single light source on a uniformly colored background. Internal Transmittance, Absorption, Particle Density, and the Beear's Law 우리 눈에 들어오는 빛은 어떤 물체에 반사된 빛이거나 광원에서 발산된 빛이다. 빛이 입자들로 이루어진 공간(Volume)을 통과할 때 입자에 흡수된다. 공간상에 입자가 많을 수록 볼륨이 더욱 불투명해진다. 이러한 단순한 관..
-
[NeRF 기본] 레이마칭 (Ray Marching)NeRF 2023. 8. 4. 01:41
레이트레이싱(Ray Tracing) : 물체에 빛을 쏘아 반사된 빛을 추적한다.경로 추적(Path Tracing) : 모든 물체에 랜덤 방향의 Ray를 추적시켜 현실 빛 효과를 재현한다. 레이마칭 (Ray marching) 이란?메시(Mesh) 데이터를 이용하는 기존의 3D 렌더링 방식과는 달리, 거리함수(Signed Distance Function, SDF)를 이용해 오브젝트 표면을 정의하는 방법. 카메라로부터 스크린 픽셀들을 향해 레이를 전진시키고(Ray Marching), 해당 픽셀의 레이가 오브젝트 표면에 닿으면 그 픽셀에 오브젝트 표면을 렌더링하는 방식이다. 레이 마칭 과정레이의 원점 (Ray Origin, $r_{o}$) 정하기 Ray Origin은 Ray의 출발지점을 의미하며, 카메라의 3D..
-
[NeRF 기본] Ray-Box IntersectionNeRF 2023. 8. 1. 17:13
면과 직선의 충돌 점 P, Q에 의해서 만들어지는 직선은 아래와 같이 나타낼 수 있다. $$L = P + (Q - P)*t$$ 면과 직선이 충돌하는 지점은 $t$로 표현할 수 있다. $t=0$에서 충돌시, 충돌한 지점은 P이다. $t=1$에서 충돌시, 충돌한 지점은 Q이다. $t=10$에서 충돌시, 충돌한 지점은 P + (Q - P) * 10이다. Slab Method OBB (Oriented bounding box), AABB (Axis-aligned bounding box) 의 방법이 있다. 수직, 수평한 네개의 선분(ax, bx, ay, by)이 모여서 만들어진 가운데의 정사각형을 AABB라고 하자. 기울어진 선분 중 하나는 박스를 통과(충돌)하고 다른 하나는 박스를 통과하지 못한다(충돌 X). 1..
-
[코드리뷰] NeRFusion Code BreakdownNeRF 2023. 7. 31. 14:41
작성중 * 해당 포스팅은 NeRFusion official code (Pytorch)를 기반으로 합니다. ▶ NeRFusion 논문 리뷰: 2023.07.27 - [Papers] - [논문리뷰] NeRFusion: Fusing Radiance Fields for Large-Scale Scene Reconstruction ▶ NeRF 코드 리뷰: 2023.07.03 - [NeRF] - [코드리뷰] NeRF Code Breakdown [코드리뷰] NeRF Code Breakdown 작성중 Prepare Dataset if not os.path.exists('tiny_nerf_data.npz'): !wget http://cseweb.ucsd.edu/~viscomp/projects/LF/papers/ECCV20..
-
[코드리뷰] Mip-NeRF Code BreakdownNeRF 2023. 7. 26. 17:58
* 해당 포스팅은 카카오에서 pytorch 코드로 구현한 Mip-NeRF 코드를 기반으로 합니다. ▶ Mip-NeRF 논문 리뷰: 2023.07.23 - [Papers] - [논문리뷰] Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields [논문리뷰] Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields ICCV 2021 [Paper][Code(Jax)] Authors (Google, UC Berkeley) Jonathan T. Barron Ben Mildenhall Matthew Tancik Peter Hedman Ricardo ..
-
[코드리뷰] NeRF Code BreakdownNeRF 2023. 7. 3. 15:53
작성중 Prepare Dataset if not os.path.exists('tiny_nerf_data.npz'): !wget http://cseweb.ucsd.edu/~viscomp/projects/LF/papers/ECCV20/nerf/tiny_nerf_data.np data = np.load('tiny_nerf_data.npz') images = data['images'] poses = data['poses'] focal = data['focal'] print(f'Images shape: {images.shape}') print(f'Poses shape: {poses.shape}') print(f'Focal length: {focal}') height, width = images.shape[1:3]..