mirror of
https://github.com/TheRedShip/RT_GPU.git
synced 2025-09-27 10:48:34 +02:00
add obj parser
This commit is contained in:
@ -7,10 +7,10 @@ Pos=1515,93
|
|||||||
Size=368,276
|
Size=368,276
|
||||||
|
|
||||||
[Window][Material]
|
[Window][Material]
|
||||||
Pos=1613,197
|
Pos=42,246
|
||||||
Size=290,238
|
Size=290,238
|
||||||
|
|
||||||
[Window][Camera]
|
[Window][Camera]
|
||||||
Pos=1618,9
|
Pos=609,294
|
||||||
Size=279,183
|
Size=279,183
|
||||||
|
|
||||||
|
19
includes/RT/ObjParser.hpp
Normal file
19
includes/RT/ObjParser.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ObjParser.hpp :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2025/01/13 13:56:04 by tomoron #+# #+# */
|
||||||
|
/* Updated: 2025/01/13 13:56:05 by tomoron ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
# include "RT.hpp"
|
||||||
|
|
||||||
|
class ObjParser
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ObjParser(std::stringstream RT
|
||||||
|
}
|
@ -6,7 +6,7 @@
|
|||||||
/* By: TheRed <TheRed@students.42.fr> +#+ +:+ +#+ */
|
/* By: TheRed <TheRed@students.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/12/26 21:37:37 by TheRed #+# #+# */
|
/* Created: 2024/12/26 21:37:37 by TheRed #+# #+# */
|
||||||
/* Updated: 2024/12/26 21:37:37 by TheRed ### ########.fr */
|
/* Updated: 2025/01/13 17:39:22 by tomoron ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -25,10 +25,14 @@ class SceneParser
|
|||||||
private:
|
private:
|
||||||
void parseMaterial(std::stringstream &line);
|
void parseMaterial(std::stringstream &line);
|
||||||
void parseCamera(std::stringstream &line);
|
void parseCamera(std::stringstream &line);
|
||||||
|
void parseObj(std::stringstream &line);
|
||||||
|
glm::vec3 getVertex(std::stringstream &line);
|
||||||
|
Triangle *getFace(std::stringstream &line, std::vector<glm::vec3> &vertices);
|
||||||
|
long int getVertexIndex(std::stringstream &line, size_t size);
|
||||||
|
|
||||||
Scene *_scene;
|
Scene *_scene;
|
||||||
|
|
||||||
std::map<std::string, std::function<Object *(std::stringstream &)>> object_parsers;
|
std::map<std::string, std::function<Object *(std::stringstream &)>> object_parsers;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* ::: :::::::: */
|
||||||
/* Triangle.hpp :+: :+: :+: */
|
/* Triangle.hpp :+: :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: ycontre <ycontre@student.42.fr> +#+ +:+ +#+ */
|
/* By: ycontre <ycontre@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/12/23 19:12:51 by ycontre #+# #+# */
|
/* Created: 2024/12/23 19:12:51 by ycontre #+# #+# */
|
||||||
/* Updated: 2024/12/23 19:47:09 by ycontre ### ########.fr */
|
/* Updated: 2025/01/13 17:59:21 by tomoron ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -53,7 +53,12 @@ class Triangle : public Object
|
|||||||
catch (const std::exception &e) { throw; }
|
catch (const std::exception &e) { throw; }
|
||||||
}
|
}
|
||||||
Triangle(const glm::vec3& position, const glm::vec3& vertex2, const glm::vec3& vertex3, const int mat_index)
|
Triangle(const glm::vec3& position, const glm::vec3& vertex2, const glm::vec3& vertex3, const int mat_index)
|
||||||
: Object(position, mat_index), _vertex2(vertex2), _vertex3(vertex3) {}
|
: Object(position, mat_index), _vertex2(vertex2), _vertex3(vertex3) {
|
||||||
|
_vertex2 -= _position; //optimization
|
||||||
|
_vertex3 -= _position; //optimization
|
||||||
|
|
||||||
|
_normal = glm::normalize(glm::cross(_vertex2, _vertex3)); //optimization
|
||||||
|
}
|
||||||
|
|
||||||
const glm::vec3 &getVertex2() const { return (_vertex2); }
|
const glm::vec3 &getVertex2() const { return (_vertex2); }
|
||||||
const glm::vec3 &getVertex3() const { return (_vertex3); }
|
const glm::vec3 &getVertex3() const { return (_vertex3); }
|
||||||
@ -68,4 +73,4 @@ class Triangle : public Object
|
|||||||
glm::vec3 _normal;
|
glm::vec3 _normal;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
402
obj/small_teapot.obj
Normal file
402
obj/small_teapot.obj
Normal file
@ -0,0 +1,402 @@
|
|||||||
|
v -2.998847 1.645154 0.000457
|
||||||
|
v -2.900348 1.679099 -0.256936
|
||||||
|
v -3.029228 1.729581 -0.001156
|
||||||
|
v -2.930359 2.062344 0.000174
|
||||||
|
v -2.919970 2.109288 0.191926
|
||||||
|
v -2.759439 1.333052 0.249274
|
||||||
|
v -2.711865 2.047712 -0.242985
|
||||||
|
v -2.799573 2.167019 0.001155
|
||||||
|
v -2.686656 1.076181 -0.001244
|
||||||
|
v -2.707166 1.972721 0.175423
|
||||||
|
v -2.701518 2.175746 0.000048
|
||||||
|
v -2.457971 0.877205 0.000371
|
||||||
|
v -2.705995 1.803827 0.000498
|
||||||
|
v -2.369685 1.013727 -0.241808
|
||||||
|
v -2.679516 1.881491 -0.000067
|
||||||
|
v -2.648943 1.572630 -0.000741
|
||||||
|
v -2.617158 1.939988 -0.000076
|
||||||
|
v -2.624174 1.499595 0.000005
|
||||||
|
v -2.506333 1.302899 0.000010
|
||||||
|
v -2.026995 0.896075 -0.001225
|
||||||
|
v -2.477661 1.986662 -0.000000
|
||||||
|
v -1.909678 0.571416 0.000217
|
||||||
|
v -2.383736 2.234244 -0.000120
|
||||||
|
v -2.326658 2.009734 -0.000010
|
||||||
|
v -1.917004 0.635344 -0.185152
|
||||||
|
v -1.993967 0.863085 -0.151109
|
||||||
|
v -1.993036 0.863311 0.153731
|
||||||
|
v -1.924329 0.661554 0.204106
|
||||||
|
v -1.491481 2.268714 -0.002043
|
||||||
|
v -1.566565 2.095632 -0.248300
|
||||||
|
v -2.072703 0.901436 -0.002127
|
||||||
|
v -1.566778 2.093798 0.253117
|
||||||
|
v -1.558684 0.143434 0.001543
|
||||||
|
v -1.932274 0.554012 0.000874
|
||||||
|
v -1.983200 2.023200 -0.000000
|
||||||
|
v -1.599999 2.026993 -0.000108
|
||||||
|
v -1.925916 1.568733 0.003710
|
||||||
|
v -1.797001 0.532327 -0.706683
|
||||||
|
v -1.605684 0.901280 -1.302611
|
||||||
|
v -1.664013 0.558143 1.025162
|
||||||
|
v -1.749975 1.536078 -0.740705
|
||||||
|
v -1.469110 2.447135 -0.000334
|
||||||
|
v -1.396439 0.902332 -1.554512
|
||||||
|
v -1.302611 0.901281 1.605684
|
||||||
|
v -1.403617 2.437531 -0.456951
|
||||||
|
v -1.554512 0.902332 1.396439
|
||||||
|
v -1.527784 0.155564 0.002394
|
||||||
|
v -1.150722 2.436876 0.990578
|
||||||
|
v -1.397048 0.155084 -0.591521
|
||||||
|
v -1.494668 2.252648 0.000530
|
||||||
|
v -1.482442 0.086117 0.000284
|
||||||
|
v -1.351893 0.027836 0.000086
|
||||||
|
v -1.415483 0.148414 -0.594728
|
||||||
|
v -0.990579 2.436876 -1.150722
|
||||||
|
v -1.239768 0.139419 0.913092
|
||||||
|
v -1.025162 0.558143 -1.664013
|
||||||
|
v -1.416229 2.392395 0.002407
|
||||||
|
v -1.344816 2.407518 -0.000978
|
||||||
|
v -1.355171 2.393945 0.005318
|
||||||
|
v -0.913092 0.139419 -1.239768
|
||||||
|
v -1.068988 2.395169 0.915107
|
||||||
|
v -1.056031 2.438143 -0.890852
|
||||||
|
v -0.890852 2.438143 1.056031
|
||||||
|
v -0.915107 2.395169 -1.068988
|
||||||
|
v -0.706683 0.532327 1.797001
|
||||||
|
v -0.190109 2.672948 0.000083
|
||||||
|
v -0.000086 0.027836 -1.351893
|
||||||
|
v -0.456951 2.437531 1.403616
|
||||||
|
v -0.591521 0.155084 1.397048
|
||||||
|
v 0.000533 0.894164 -2.105035
|
||||||
|
v -0.740705 1.536078 1.749975
|
||||||
|
v -0.594728 0.148414 1.415483
|
||||||
|
v -0.002127 0.901436 2.072703
|
||||||
|
v -0.461121 1.536164 -1.841184
|
||||||
|
v -0.005318 2.393945 -1.355171
|
||||||
|
v -0.148126 2.676843 -0.127884
|
||||||
|
v -0.127884 2.676843 0.148125
|
||||||
|
v -0.002394 0.155564 -1.527784
|
||||||
|
v -0.000340 0.150838 -1.518003
|
||||||
|
v 0.000086 0.027836 1.351893
|
||||||
|
v -0.002407 2.392395 -1.416230
|
||||||
|
v -0.000978 2.407518 1.344816
|
||||||
|
v -0.399019 0.001349 -0.000002
|
||||||
|
v -0.455880 3.069017 -0.006406
|
||||||
|
v -0.395396 3.096349 0.000833
|
||||||
|
v -0.006406 3.069017 0.455880
|
||||||
|
v -0.000002 0.001349 0.399019
|
||||||
|
v -0.000284 0.086117 -1.482442
|
||||||
|
v -0.000333 2.447135 1.469110
|
||||||
|
v -0.167793 2.680406 0.002325
|
||||||
|
v -0.162139 2.658880 -0.009998
|
||||||
|
v -0.009997 2.658880 0.162139
|
||||||
|
v -0.000833 3.096349 -0.395396
|
||||||
|
v -0.002325 2.680406 -0.167794
|
||||||
|
v 0.009997 2.658880 -0.162139
|
||||||
|
v 0.000978 2.407518 -1.344816
|
||||||
|
v 0.000284 0.086117 1.482442
|
||||||
|
v 0.000340 0.150838 1.518003
|
||||||
|
v 0.000333 2.447135 -1.469110
|
||||||
|
v 0.006406 3.069017 -0.455880
|
||||||
|
v -0.000083 2.672948 -0.190109
|
||||||
|
v 0.000000 0.000000 0.000000
|
||||||
|
v 0.000002 0.001349 -0.399019
|
||||||
|
v 0.002394 0.155564 1.527784
|
||||||
|
v -0.000533 0.894164 2.105035
|
||||||
|
v 0.002127 0.901435 -2.072703
|
||||||
|
v 0.005318 2.393945 1.355171
|
||||||
|
v 0.002407 2.392395 1.416229
|
||||||
|
v 0.000083 2.672948 0.190109
|
||||||
|
v 0.002325 2.680406 0.167793
|
||||||
|
v 0.000833 3.096349 0.395396
|
||||||
|
v 0.000000 3.150000 -0.000000
|
||||||
|
v 0.127884 2.676843 -0.148126
|
||||||
|
v 0.162139 2.658880 0.009997
|
||||||
|
v 0.148126 2.676843 0.127884
|
||||||
|
v 0.395396 3.096349 -0.000833
|
||||||
|
v 0.890852 2.438143 -1.056031
|
||||||
|
v 0.455880 3.069017 0.006405
|
||||||
|
v 0.167793 2.680406 -0.002326
|
||||||
|
v 0.190109 2.672948 -0.000083
|
||||||
|
v 0.399019 0.001349 0.000002
|
||||||
|
v 0.594728 0.148414 -1.415483
|
||||||
|
v 0.591521 0.155084 -1.397048
|
||||||
|
v 0.461121 1.536164 1.841184
|
||||||
|
v 0.706683 0.532327 -1.797001
|
||||||
|
v 1.351893 0.027836 -0.000086
|
||||||
|
v 1.056031 2.438143 0.890851
|
||||||
|
v 0.913092 0.139419 1.239768
|
||||||
|
v 0.456951 2.437531 -1.403617
|
||||||
|
v 0.740705 1.536078 -1.749975
|
||||||
|
v 1.025162 0.558144 1.664013
|
||||||
|
v 1.239768 0.139419 -0.913092
|
||||||
|
v 0.915107 2.395169 1.068987
|
||||||
|
v 0.990579 2.436876 1.150721
|
||||||
|
v 1.068988 2.395169 -0.915108
|
||||||
|
v 1.396439 0.902332 1.554512
|
||||||
|
v 1.150722 2.436876 -0.990579
|
||||||
|
v 1.302611 0.901280 -1.605684
|
||||||
|
v 1.554512 0.902332 -1.396440
|
||||||
|
v 1.605684 0.901281 1.302611
|
||||||
|
v 1.355171 2.393945 -0.005318
|
||||||
|
v 1.344816 2.407518 0.000978
|
||||||
|
v 1.664013 0.558143 -1.025162
|
||||||
|
v 1.415483 0.148414 0.594728
|
||||||
|
v 1.397048 0.155084 0.591521
|
||||||
|
v 1.403617 2.437531 0.456950
|
||||||
|
v 1.482442 0.086117 -0.000284
|
||||||
|
v 1.416229 2.392395 -0.002408
|
||||||
|
v 1.797001 0.532327 0.706683
|
||||||
|
v 1.469110 2.447135 0.000333
|
||||||
|
v 1.749975 1.536078 0.740705
|
||||||
|
v 1.527784 0.155564 -0.002394
|
||||||
|
v 1.518003 0.150838 -0.000340
|
||||||
|
v 1.841184 1.536164 -0.461121
|
||||||
|
v 1.932274 0.554012 -0.000874
|
||||||
|
v 1.700000 0.600000 -0.000000
|
||||||
|
v 1.705341 0.580740 0.001101
|
||||||
|
v 1.702548 0.843925 0.547911
|
||||||
|
v 1.707679 0.795519 -0.546724
|
||||||
|
v 1.700395 1.436783 0.001694
|
||||||
|
v 1.699852 1.444682 -0.002636
|
||||||
|
v 2.085115 0.897223 0.000993
|
||||||
|
v 2.072703 0.901436 0.002127
|
||||||
|
v 2.261466 1.561513 -0.001347
|
||||||
|
v 2.249750 1.538754 0.000403
|
||||||
|
v 2.417608 1.454605 -0.420344
|
||||||
|
v 2.300461 1.506508 0.288504
|
||||||
|
v 2.395219 1.130924 0.459536
|
||||||
|
v 2.481728 0.883141 0.002409
|
||||||
|
v 2.551987 0.988507 -0.003256
|
||||||
|
v 2.666492 2.402703 -0.000570
|
||||||
|
v 2.935153 2.394952 -0.179086
|
||||||
|
v 2.884470 2.397798 0.188027
|
||||||
|
v 2.703592 2.375964 -0.007074
|
||||||
|
v 2.922268 2.113822 0.001030
|
||||||
|
v 2.829248 2.452938 0.001739
|
||||||
|
v 2.818679 2.465921 -0.006725
|
||||||
|
v 2.798294 2.388002 0.002003
|
||||||
|
v 2.994468 2.405219 -0.198160
|
||||||
|
v 3.321051 2.479890 0.151112
|
||||||
|
v 3.212521 2.422510 0.000325
|
||||||
|
v 3.292305 2.430179 -0.009192
|
||||||
|
v 3.194853 2.429661 -0.002497
|
||||||
|
v 3.303009 2.449634 -0.001869
|
||||||
|
|
||||||
|
f 148 150 135
|
||||||
|
f 135 150 129
|
||||||
|
f 137 129 150
|
||||||
|
f 81 99 64
|
||||||
|
f 64 99 45
|
||||||
|
f 54 45 99
|
||||||
|
f 57 42 61
|
||||||
|
f 61 42 68
|
||||||
|
f 48 68 42
|
||||||
|
f 108 89 133
|
||||||
|
f 133 89 146
|
||||||
|
f 134 146 89
|
||||||
|
f 150 162 154
|
||||||
|
f 150 154 137
|
||||||
|
f 130 129 137
|
||||||
|
f 139 137 154
|
||||||
|
f 137 139 130
|
||||||
|
f 106 129 130
|
||||||
|
f 106 99 129
|
||||||
|
f 162 139 154
|
||||||
|
f 130 139 106
|
||||||
|
f 99 70 74
|
||||||
|
f 99 74 54
|
||||||
|
f 41 45 54
|
||||||
|
f 43 54 74
|
||||||
|
f 54 43 41
|
||||||
|
f 31 45 41
|
||||||
|
f 31 42 45
|
||||||
|
f 70 43 74
|
||||||
|
f 41 43 31
|
||||||
|
f 42 37 48
|
||||||
|
f 71 68 48
|
||||||
|
f 46 48 37
|
||||||
|
f 48 46 71
|
||||||
|
f 73 68 71
|
||||||
|
f 73 89 68
|
||||||
|
f 20 46 37
|
||||||
|
f 71 46 73
|
||||||
|
f 89 105 124
|
||||||
|
f 89 124 134
|
||||||
|
f 151 146 134
|
||||||
|
f 136 134 124
|
||||||
|
f 134 136 151
|
||||||
|
f 163 146 151
|
||||||
|
f 163 150 146
|
||||||
|
f 105 136 124
|
||||||
|
f 151 136 163
|
||||||
|
f 162 155 143
|
||||||
|
f 143 138 162
|
||||||
|
f 125 70 138
|
||||||
|
f 125 138 143
|
||||||
|
f 79 70 125
|
||||||
|
f 152 143 155
|
||||||
|
f 143 152 132
|
||||||
|
f 123 125 143
|
||||||
|
f 143 132 123
|
||||||
|
f 125 123 79
|
||||||
|
f 56 39 70
|
||||||
|
f 38 20 39
|
||||||
|
f 20 38 33
|
||||||
|
f 38 39 56
|
||||||
|
f 78 56 70
|
||||||
|
f 56 78 60
|
||||||
|
f 49 38 56
|
||||||
|
f 56 60 49
|
||||||
|
f 38 49 33
|
||||||
|
f 20 34 40
|
||||||
|
f 40 44 20
|
||||||
|
f 65 105 44
|
||||||
|
f 65 44 40
|
||||||
|
f 98 105 65
|
||||||
|
f 47 40 34
|
||||||
|
f 40 47 55
|
||||||
|
f 69 65 40
|
||||||
|
f 40 55 69
|
||||||
|
f 65 69 98
|
||||||
|
f 131 140 105
|
||||||
|
f 149 162 140
|
||||||
|
f 149 140 131
|
||||||
|
f 153 162 149
|
||||||
|
f 104 131 105
|
||||||
|
f 131 104 128
|
||||||
|
f 145 149 131
|
||||||
|
f 131 128 145
|
||||||
|
f 149 145 153
|
||||||
|
f 7 30 36
|
||||||
|
f 36 24 7
|
||||||
|
f 7 29 30
|
||||||
|
f 29 7 23
|
||||||
|
f 23 7 11
|
||||||
|
f 24 17 7
|
||||||
|
f 4 11 7
|
||||||
|
f 17 15 7
|
||||||
|
f 2 4 7
|
||||||
|
f 15 13 7
|
||||||
|
f 1 4 2
|
||||||
|
f 50 5 32
|
||||||
|
f 35 36 32
|
||||||
|
f 50 23 5
|
||||||
|
f 32 5 10
|
||||||
|
f 24 35 32
|
||||||
|
f 32 10 24
|
||||||
|
f 23 8 5
|
||||||
|
f 21 24 10
|
||||||
|
f 17 21 10
|
||||||
|
f 8 4 5
|
||||||
|
f 4 3 5
|
||||||
|
f 13 17 10
|
||||||
|
f 7 13 2
|
||||||
|
f 13 16 2
|
||||||
|
f 9 1 2
|
||||||
|
f 14 16 18
|
||||||
|
f 18 20 14
|
||||||
|
f 14 2 16
|
||||||
|
f 2 14 9
|
||||||
|
f 25 9 14
|
||||||
|
f 9 25 22
|
||||||
|
f 26 14 20
|
||||||
|
f 14 26 25
|
||||||
|
f 6 5 3
|
||||||
|
f 10 5 13
|
||||||
|
f 18 13 5
|
||||||
|
f 3 9 6
|
||||||
|
f 9 12 6
|
||||||
|
f 19 18 5
|
||||||
|
f 5 6 19
|
||||||
|
f 20 19 6
|
||||||
|
f 6 28 27
|
||||||
|
f 12 22 28
|
||||||
|
f 28 6 12
|
||||||
|
f 6 27 20
|
||||||
|
f 161 164 166
|
||||||
|
f 166 159 161
|
||||||
|
f 170 157 159
|
||||||
|
f 159 166 170
|
||||||
|
f 172 170 166
|
||||||
|
f 171 166 164
|
||||||
|
f 166 171 172
|
||||||
|
f 175 170 172
|
||||||
|
f 182 175 172
|
||||||
|
f 169 158 156
|
||||||
|
f 158 168 167
|
||||||
|
f 167 160 158
|
||||||
|
f 160 167 165
|
||||||
|
f 168 158 169
|
||||||
|
f 169 175 173
|
||||||
|
f 173 168 169
|
||||||
|
f 168 173 167
|
||||||
|
f 171 165 167
|
||||||
|
f 167 173 171
|
||||||
|
f 175 184 180
|
||||||
|
f 180 173 175
|
||||||
|
f 177 179 174
|
||||||
|
f 184 179 183
|
||||||
|
f 178 179 177
|
||||||
|
f 179 178 183
|
||||||
|
f 176 174 173
|
||||||
|
f 173 180 176
|
||||||
|
f 184 181 180
|
||||||
|
f 178 176 180
|
||||||
|
f 180 181 178
|
||||||
|
f 112 116 100
|
||||||
|
f 95 100 116
|
||||||
|
f 116 119 95
|
||||||
|
f 112 93 84
|
||||||
|
f 91 84 93
|
||||||
|
f 93 94 91
|
||||||
|
f 112 85 86
|
||||||
|
f 92 86 85
|
||||||
|
f 85 90 92
|
||||||
|
f 112 111 118
|
||||||
|
f 114 118 111
|
||||||
|
f 111 110 114
|
||||||
|
f 117 113 120
|
||||||
|
f 117 101 113
|
||||||
|
f 96 101 117
|
||||||
|
f 120 141 117
|
||||||
|
f 62 76 101
|
||||||
|
f 62 66 76
|
||||||
|
f 58 66 62
|
||||||
|
f 101 75 62
|
||||||
|
f 63 77 66
|
||||||
|
f 63 109 77
|
||||||
|
f 82 109 63
|
||||||
|
f 66 59 63
|
||||||
|
f 127 115 109
|
||||||
|
f 127 120 115
|
||||||
|
f 142 120 127
|
||||||
|
f 109 107 127
|
||||||
|
f 102 121 80
|
||||||
|
f 121 126 80
|
||||||
|
f 128 80 126
|
||||||
|
f 80 128 97
|
||||||
|
f 144 128 126
|
||||||
|
f 126 153 144
|
||||||
|
f 98 97 128
|
||||||
|
f 102 87 52
|
||||||
|
f 87 80 52
|
||||||
|
f 55 52 80
|
||||||
|
f 52 55 51
|
||||||
|
f 72 55 80
|
||||||
|
f 80 98 72
|
||||||
|
f 33 51 55
|
||||||
|
f 102 83 67
|
||||||
|
f 83 52 67
|
||||||
|
f 60 67 52
|
||||||
|
f 67 60 88
|
||||||
|
f 53 60 52
|
||||||
|
f 52 33 53
|
||||||
|
f 79 88 60
|
||||||
|
f 102 103 126
|
||||||
|
f 103 67 126
|
||||||
|
f 132 126 67
|
||||||
|
f 126 132 147
|
||||||
|
f 122 132 67
|
||||||
|
f 67 79 122
|
||||||
|
f 153 147 132
|
9966
obj/teapot.obj
Normal file
9966
obj/teapot.obj
Normal file
File diff suppressed because it is too large
Load Diff
@ -12,12 +12,14 @@ MAT 255 255 255 5.0 0.0 0.0 //light
|
|||||||
|
|
||||||
# sp -100 30 50 50 6
|
# sp -100 30 50 50 6
|
||||||
|
|
||||||
sp 0 -25 0 50 4
|
#sp 0 -25 0 50 4
|
||||||
|
#
|
||||||
|
#sp 1 1 -0.5 2 0
|
||||||
|
#sp -0.8 0.8 0 1.5 1
|
||||||
|
#sp -2.2 0.4 0.25 1 2
|
||||||
|
#sp -3 0.2 0.50 0.75 3
|
||||||
|
#sp -3.8 -0.1 0.60 0.5 5
|
||||||
|
#
|
||||||
|
#cy 0 1 2 0.5 2 -1.5 0 0.75 1
|
||||||
|
|
||||||
sp 1 1 -0.5 2 0
|
OBJ obj/teapot.obj
|
||||||
sp -0.8 0.8 0 1.5 1
|
|
||||||
sp -2.2 0.4 0.25 1 2
|
|
||||||
sp -3 0.2 0.50 0.75 3
|
|
||||||
sp -3.8 -0.1 0.60 0.5 5
|
|
||||||
|
|
||||||
cy 0 1 2 0.5 2 -1.5 0 0.75 1
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: ycontre <ycontre@student.42.fr> +#+ +:+ +#+ */
|
/* By: ycontre <ycontre@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/09/27 14:51:49 by TheRed #+# #+# */
|
/* Created: 2024/09/27 14:51:49 by TheRed #+# #+# */
|
||||||
/* Updated: 2025/01/11 16:14:24 by tomoron ### ########.fr */
|
/* Updated: 2025/01/13 17:40:45 by tomoron ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: TheRed <TheRed@students.42.fr> +#+ +:+ +#+ */
|
/* By: TheRed <TheRed@students.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/12/26 21:43:51 by TheRed #+# #+# */
|
/* Created: 2024/12/26 21:43:51 by TheRed #+# #+# */
|
||||||
/* Updated: 2024/12/26 21:43:51 by TheRed ### ########.fr */
|
/* Updated: 2025/01/13 17:59:30 by tomoron ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -127,6 +127,68 @@ void SceneParser::parseCamera(std::stringstream &line)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glm::vec3 SceneParser::getVertex(std::stringstream &line)
|
||||||
|
{
|
||||||
|
glm::vec3 res;
|
||||||
|
|
||||||
|
std::cout << line.str() << std::endl;
|
||||||
|
if(!(line >> res.x >> res.y >> res.z))
|
||||||
|
throw std::runtime_error("syntax error in obj file while parsing vertex");
|
||||||
|
res.z *= -1;
|
||||||
|
return(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
long int SceneParser::getVertexIndex(std::stringstream &line, size_t size)
|
||||||
|
{
|
||||||
|
long int index;
|
||||||
|
|
||||||
|
if(!(line >> index))
|
||||||
|
throw std::runtime_error("syntax error in obj file while parsing face");
|
||||||
|
if((size_t)index > size || index == 0 || (index < 0 && (size_t)(-index) > size))
|
||||||
|
throw std::runtime_error("obj file error, invalid vertex index");
|
||||||
|
if(index < 0)
|
||||||
|
index = size - index;
|
||||||
|
return(index - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Triangle *SceneParser::getFace(std::stringstream &line, std::vector<glm::vec3> &vertices)
|
||||||
|
{
|
||||||
|
glm::vec3 triangle[3];
|
||||||
|
|
||||||
|
triangle[0] = vertices[getVertexIndex(line, vertices.size())];
|
||||||
|
triangle[1] = vertices[getVertexIndex(line, vertices.size())];
|
||||||
|
triangle[2] = vertices[getVertexIndex(line, vertices.size())];
|
||||||
|
std::cout << triangle[0].x << " " << triangle[0].y << " " << triangle[0].z << std::endl;
|
||||||
|
std::cout << triangle[1].x << " " << triangle[1].y << " " << triangle[1].z << std::endl;
|
||||||
|
std::cout << triangle[2].x << " " << triangle[2].y << " " << triangle[2].z << std::endl;
|
||||||
|
return(new Triangle(triangle[0], triangle[1], triangle[2], 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SceneParser::parseObj(std::stringstream &objInfo)
|
||||||
|
{
|
||||||
|
std::vector<glm::vec3> vertices;
|
||||||
|
std::string filename;
|
||||||
|
std::string line;
|
||||||
|
std::string identifier;
|
||||||
|
std::ifstream file;
|
||||||
|
|
||||||
|
objInfo >> filename;
|
||||||
|
file.open(filename);
|
||||||
|
if (!file.is_open())
|
||||||
|
throw std::runtime_error("OBJ : could not open object file");
|
||||||
|
while (getline(file, line))
|
||||||
|
{
|
||||||
|
if(line[0] == '#' || line.empty())
|
||||||
|
continue;
|
||||||
|
std::stringstream lineStream(line);
|
||||||
|
lineStream >> identifier;
|
||||||
|
if(identifier == "v")
|
||||||
|
vertices.push_back(getVertex(lineStream));
|
||||||
|
else if (identifier == "f")
|
||||||
|
_scene->addObject(getFace(lineStream, vertices));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool SceneParser::parseLine(const std::string &line)
|
bool SceneParser::parseLine(const std::string &line)
|
||||||
{
|
{
|
||||||
if (line.empty() || line[0] == '#')
|
if (line.empty() || line[0] == '#')
|
||||||
@ -155,6 +217,8 @@ bool SceneParser::parseLine(const std::string &line)
|
|||||||
this->parseMaterial(ss);
|
this->parseMaterial(ss);
|
||||||
else if (identifier == "CAM")
|
else if (identifier == "CAM")
|
||||||
this->parseCamera(ss);
|
this->parseCamera(ss);
|
||||||
|
else if (identifier == "OBJ")
|
||||||
|
parseObj(ss);
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user