Showing the changes to interface/src/MetavoxelSystem.cpp (1 of 4 files). Show all
Unified · Split
| @@ -21,6 +21,7 @@ · 20 unmodified lines | ||
| 21 | 21 | |
| 22 | 22 | #include <glm/gtx/transform.hpp> |
| 23 | 23 | |
| 24 | +#include <GeometryUtil.h> | |
| 24 | 25 | #include <SharedUtil.h> |
| 25 | 26 | |
| 26 | 27 | #include <MetavoxelMessages.h> |
| @@ -1095,30 +1096,6 @@ VoxelBuffer::VoxelBuffer(const QVector<VoxelPoint>& vertices, const QVector<int> · 1068 unmodified lines | ||
| 1095 | 1096 | _materials(materials) { |
| 1096 | 1097 | } |
| 1097 | 1098 | |
| 1098 | −static bool findRayTriangleIntersection(const glm::vec3& origin, const glm::vec3& direction, | |
| 1099 | − const glm::vec3& v0, const glm::vec3& v1, const glm::vec3& v2, float& distance) { | |
| 1100 | − glm::vec3 firstSide = v0 - v1; | |
| 1101 | − glm::vec3 secondSide = v2 - v1; | |
| 1102 | − glm::vec3 normal = glm::cross(secondSide, firstSide); | |
| 1103 | − float dividend = glm::dot(normal, v1) - glm::dot(origin, normal); | |
| 1104 | − if (dividend > 0.0f) { | |
| 1105 | − return false; // origin below plane | |
| 1106 | − } | |
| 1107 | − float divisor = glm::dot(normal, direction); | |
| 1108 | − if (divisor > -EPSILON) { | |
| 1109 | − return false; | |
| 1110 | − } | |
| 1111 | − float t = dividend / divisor; | |
| 1112 | − glm::vec3 point = origin + direction * t; | |
| 1113 | − if (glm::dot(normal, glm::cross(point - v1, firstSide)) > 0.0f && | |
| 1114 | − glm::dot(normal, glm::cross(secondSide, point - v1)) > 0.0f && | |
| 1115 | − glm::dot(normal, glm::cross(point - v0, v2 - v0)) > 0.0f) { | |
| 1116 | − distance = t; | |
| 1117 | − return true; | |
| 1118 | − } | |
| 1119 | − return false; | |
| 1120 | −} | |
| 1121 | − | |
| 1122 | 1099 | bool VoxelBuffer::findFirstRayIntersection(const glm::vec3& entry, const glm::vec3& origin, |
| 1123 | 1100 | const glm::vec3& direction, float& distance) const { |
| 1124 | 1101 | float highest = _size - 1.0f; |