Browse Source

bvh finetune

master
Dtouch 1 year ago
parent
commit
aa56543f47
  1. 4
      README.md
  2. 4
      main.cpp
  3. 4
      src/bvh.cpp

4
README.md

@ -29,8 +29,8 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
#include "bvh.h" #include "bvh.h"
#include "singularityJudger.h" #include "singularityJudger.h"
// 创建两个曲面 // 创建两个曲面
tinynursb::RationalSurface<float> s; tinynurbs::RationalSurface<float> s;
tinynursb::RationalSurface<float> f; tinynurbs::RationalSurface<float> f;
// 曲面初始化 // 曲面初始化
... ...

4
main.cpp

@ -188,11 +188,11 @@ int main() {
RationalSurface<float> s; RationalSurface<float> s;
RationalSurface<float> f; RationalSurface<float> f;
int level = 6; int level = 9;
printf("level: %d, sample cnt: %d * %d\n", level, int(pow(2, level - 1)), int(pow(2, level - 1))); printf("level: %d, sample cnt: %d * %d\n", level, int(pow(2, level - 1)), int(pow(2, level - 1)));
ifstream fin; ifstream fin;
fin.open(R"(intersectTest\case2\surfaces.txt)"); fin.open(R"(intersectTest\casea1\surfaces.txt)");
string str; string str;
string tmp; string tmp;

4
src/bvh.cpp

@ -23,8 +23,8 @@ void BVH::recursiveBuild(int level, int idx, int idx_u, int idx_v) {
int firstChild = 4 * idx + 1; int firstChild = 4 * idx + 1;
int halfRange = int(std::pow(2, maxLevel - level - 1)); // 当前层的曲面片的边长采样宽度的一半 int halfRange = int(std::pow(2, maxLevel - level - 1)); // 当前层的曲面片的边长采样宽度的一半
recursiveBuild(level + 1, firstChild, idx_u, idx_v); recursiveBuild(level + 1, firstChild, idx_u, idx_v);
recursiveBuild(level + 1, firstChild + 1, idx_u, idx_v + halfRange); recursiveBuild(level + 1, firstChild + 1, idx_u + halfRange, idx_v);
recursiveBuild(level + 1, firstChild + 2, idx_u + halfRange, idx_v); recursiveBuild(level + 1, firstChild + 2, idx_u, idx_v + halfRange);
recursiveBuild(level + 1, firstChild + 3, idx_u + halfRange, idx_v + halfRange); recursiveBuild(level + 1, firstChild + 3, idx_u + halfRange, idx_v + halfRange);
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
bound = Union(bound, tree[firstChild + i].bound); bound = Union(bound, tree[firstChild + i].bound);

Loading…
Cancel
Save