+ | Handling transformation objects

This commit is contained in:
TheRedShip
2025-01-21 00:02:12 +01:00
parent fc9f8b9d91
commit da49d10ec5
13 changed files with 135 additions and 27 deletions

View File

@ -240,7 +240,7 @@ void ObjParser::parseMtl(std::stringstream &input_line, Scene &scene)
file.close();
}
void ObjParser::parse(Scene &scene, glm::vec3 offset)
void ObjParser::parse(Scene &scene, glm::vec3 offset, float scale, glm::mat4 transform)
{
std::string line;
std::string identifier;
@ -275,6 +275,6 @@ void ObjParser::parse(Scene &scene, glm::vec3 offset)
}
}
scene.addBvh(_triangles, offset);
scene.addBvh(_triangles, offset, scale, transform);
}

View File

@ -142,7 +142,7 @@ void Scene::addObject(Object *obj)
_gpu_objects.push_back(gpu_obj);
}
void Scene::addBvh(std::vector<Triangle> &triangles, glm::vec3 offset)
void Scene::addBvh(std::vector<Triangle> &triangles, glm::vec3 offset, float scale, glm::mat4 transform)
{
GPUBvhData new_bvh_data;
std::vector<GPUBvh> new_bvhs_list;
@ -154,8 +154,9 @@ void Scene::addBvh(std::vector<Triangle> &triangles, glm::vec3 offset)
BVH *bvh = new BVH(triangles, 0, triangles.size());
new_bvhs_list = bvh->getGPUBvhs();
std::cout << glm::to_string(offset) << std::endl;
new_bvh_data.transform = transform * scale;
new_bvh_data.offset = offset;
new_bvh_data.scale = scale;
new_bvh_data.bvh_start_index = _gpu_bvh.size();
new_bvh_data.triangle_start_index = _gpu_triangles.size();

View File

@ -102,11 +102,21 @@ void SceneParser::parseObj(std::stringstream &line)
float y = 0.;
float z = 0.;
float scale = 1.;
float xtransform = 0.;
float ytransform = 0.;
float ztransform = 0.;
line >> name;
line >> x >> y >> z;
line >> scale;
line >> xtransform >> ytransform >> ztransform;
glm::mat4 transform = glm::eulerAngleXYZ(glm::radians(xtransform), glm::radians(ytransform), glm::radians(ztransform));
ObjParser obj(name);
obj.parse(*_scene, glm::vec3(x, y, z));
obj.parse(*_scene, glm::vec3(x, y, z), (1.0 / scale), transform);
}
bool SceneParser::parseLine(const std::string &line)

View File

@ -67,7 +67,7 @@ Shader::Shader(std::string vertexPath, std::string fragmentPath, std::string com
const char *fragmentCode = loadFileWithIncludes(fragmentPath);
const char *computeCode = loadFileWithIncludes(computePath);
// printWithLineNumbers(computeCode);
printWithLineNumbers(computeCode);
_vertex = glCreateShader(GL_VERTEX_SHADER);