일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- AR Foundation Throwing
- ray tracing
- ar game
- AR Throwing Game
- AR 게임
- Ray Tracing in One Weekend
- 렌더링
- 레이 트레이싱
- 평면에 물체 던지기
- AR 던지기 게임
- Today
- Total
목록전체 글 (6)
요리조리

구현 순서 0. 유니티 세팅 1. 평면 인식 2. 평면 위로 쓰레기 던지기 3. 평면에 쓰레기통 고정시키기 4. 점수 시스템 5. 추가 기능들 (게임 재시작, 게임 오버) 0. Settings AR 프로젝트 세팅과 빌드 세팅을 먼저 진행한다. 0.1 AR Project Setting 참고: https://coding-of-today.tistory.com/10 • Package Manager에서 AR Foundation, ARCore XR Plugin 패키지 Install • [Hierarchy]에서 XR -> AR Session과 AR Session Origin 객체 추가 - AR Session Origin의 AR Camera의 Facing Direction > World(후면 카메라) - Main Ca..
컴파일러 에러: /usr/include/c++/11/ext/new_allocator.h(162): error: no instance of constructor "BvhNode::BvhNode" matches the argument list argument types are: (int, int, int, Aabb) detected during: instantiation of "void __gnu_cxx::new_allocator::construct(_Up *, _Args &&...) [with _Tp=BvhNode, _Up=BvhNode, _Args=]" /usr/include/c++/11/bits/alloc_traits.h(516): here instantiation of "void std::alloca..

레이 트레이싱에서 이미지의 픽셀 색깔을 결정할 때는, 픽셀마다 레이(ray)를 쏘아 3차원 공간 상에서 해당 레이가 어떻게 물체들과 부딪혀 이동하는지 경로를 탐색한다. 이때, 레이는 3차원 공간 상에서 특정한 위치(origin)에서 출발하여 특정 방향(direction)으로 이동하는 반직선의 벡터이다. (말 그대로 현실의 광선 그 자체를 컴퓨터 상에서 구현한 것..!) 따라서 레이가 3차원 공간 상의 어떤 물체와 부딪히는지 확인하기 위해서 공간에 있는 모든 물체들과의 충돌 테스트(intersection test)를 수행해야 한다. 즉, 물체 객체들을 담은 배열이 있을 때, 그 배열의 요소(element)를 하나씩 방문해 레이와 해당 요소가 부딫치는지 아닌지를 확인하고, 부딪친다면 어느 시점(time)에서..

레이와의 충돌(Intersection) 구현하기 오브젝트 파일을 읽어서 메시(mesh) 객체를 생성하였다면 이제 레이(ray)와 메시의 충돌을 구현해야 한다. 우선, 메시를 구성하는 각 삼각형들과 레이와의 충돌(intersection) 테스트를 함수로 구현한 후, 메시 전체(삼각형들의 모임)과 레이와의 충돌 테스트를 구현한다. 레이와 삼각형의 충돌 테스트 (Ray-triangle Intersection Test) 레이와 삼각형이 충돌하는지 확인하기 앞서 삼각형을 포함하는 무한한 평면(plane)과 레이가 충돌하는지의 여부부터 확인하자. // edges Vec3 e1 = v1- v0; // v0v1 Vec3 e2 = v2- v0; // v0v2 // 1. Check whether the ray is par..

사용하는 c++ 함수: std::move std::vector static_cast assert 필요한 구조체, 클래스 정의하기 (Defining Structures and Classes) 메시 클래스를 정의하기 앞서, 메시 오브젝트를 구성하는 요소들(e.g., vertex, face)의 타입부터 정의하자. 요소들은 구조체를 이용하여 새로운 데이터타입으로 정의한다. struct Vertex { Vec3 position; Vec3 normal; } struct Face { int vertices[3]; int normals[3]; } 이제, Vertex와 Face 타입의 변수를 요소, 즉 속성(attribute)으로 갖는 메시 클래스를 정의하자. 이때, 이 속성들은 private 접근 제한자를 두었기 때문..
Ch1.