diff options
-rw-r--r-- | build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/camera.cpp.1985063F4A77CAE0.idx | bin | 5538 -> 5350 bytes | |||
-rw-r--r-- | build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/mainwindow.cpp.98C70BDD9E551185.idx | bin | 21806 -> 21710 bytes | |||
-rw-r--r-- | build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/qcalendar.h.CFCFEF7F41CCB723.idx | bin | 630 -> 630 bytes | |||
-rw-r--r-- | build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/scenefilereader.cpp.3B5BEFF48E02E942.idx | bin | 35134 -> 37672 bytes | |||
-rw-r--r-- | scenefiles-4d/unit_cone.json | 47 | ||||
-rw-r--r-- | scenefiles-4d/unit_cube.json | 47 | ||||
-rw-r--r-- | scenefiles-4d/unit_cylinder.json | 47 | ||||
-rw-r--r-- | src/camera/camera.cpp | 32 | ||||
-rw-r--r-- | src/camera/camera.h | 1 | ||||
-rw-r--r-- | src/mainwindow.cpp | 14 | ||||
-rw-r--r-- | src/raytracer/raytracer.cpp | 35 | ||||
-rw-r--r-- | src/raytracer/raytracer.h | 9 |
12 files changed, 207 insertions, 25 deletions
diff --git a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/camera.cpp.1985063F4A77CAE0.idx b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/camera.cpp.1985063F4A77CAE0.idx Binary files differindex b6b8939..b06eb75 100644 --- a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/camera.cpp.1985063F4A77CAE0.idx +++ b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/camera.cpp.1985063F4A77CAE0.idx diff --git a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/mainwindow.cpp.98C70BDD9E551185.idx b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/mainwindow.cpp.98C70BDD9E551185.idx Binary files differindex 98f7214..15c6054 100644 --- a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/mainwindow.cpp.98C70BDD9E551185.idx +++ b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/mainwindow.cpp.98C70BDD9E551185.idx diff --git a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/qcalendar.h.CFCFEF7F41CCB723.idx b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/qcalendar.h.CFCFEF7F41CCB723.idx Binary files differindex 166e7c5..58ec2ba 100644 --- a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/qcalendar.h.CFCFEF7F41CCB723.idx +++ b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/qcalendar.h.CFCFEF7F41CCB723.idx diff --git a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/scenefilereader.cpp.3B5BEFF48E02E942.idx b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/scenefilereader.cpp.3B5BEFF48E02E942.idx Binary files differindex 47fd905..c7337e6 100644 --- a/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/scenefilereader.cpp.3B5BEFF48E02E942.idx +++ b/build/build-the-all-americans-in-cs1230-Qt_6_5_2_for_macOS-Release/.qtc_clangd/.cache/clangd/index/scenefilereader.cpp.3B5BEFF48E02E942.idx diff --git a/scenefiles-4d/unit_cone.json b/scenefiles-4d/unit_cone.json new file mode 100644 index 0000000..9591e9c --- /dev/null +++ b/scenefiles-4d/unit_cone.json @@ -0,0 +1,47 @@ +{ + "name": "root", + "globalData": { + "ambientCoeff": 0.5, + "diffuseCoeff": 0.5, + "specularCoeff": 0.5, + "transparentCoeff": 0, + "gravity": [0.0, -0.0098, 0.0, 0.0] + }, + "cameraData": { + "position": [3.0, 3.0, 3.0, 1.0], + "up": [0.0, 1.0, 0.0, 0.0], + "heightAngle": 30.0, + "depthAngle": 30.0, + "focus": [0.0, 0.0, 0.0, 0.0], + "over": [0.0, 1.0, 0.0, 0.0] + }, + "groups": [ + { + "lights": [ + { + "type": "directional", + "color": [1.0, 1.0, 1.0], + "direction": [-3.0, -2.0, -1.0, 0.0] + } + ] + }, + { + "groups": [ + { + "translate": [0.0, 0.0, 0.0, 0.0], + "rotate": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + "scale": [1.0, 1.0, 1.0, 1.0], + "primitives": [ + { + "type": "cone", + "diffuse": [1.0, 0.0, 0.0], + "specular": [1.0, 1.0, 1.0], + "shininess": 25.0, + "velocity": [0.0, 0.0, 0.0, 0.0] + } + ] + } + ] + } + ] +} diff --git a/scenefiles-4d/unit_cube.json b/scenefiles-4d/unit_cube.json new file mode 100644 index 0000000..6810d2e --- /dev/null +++ b/scenefiles-4d/unit_cube.json @@ -0,0 +1,47 @@ +{ + "name": "root", + "globalData": { + "ambientCoeff": 0.5, + "diffuseCoeff": 0.5, + "specularCoeff": 0.5, + "transparentCoeff": 0, + "gravity": [0.0, -0.0098, 0.0, 0.0] + }, + "cameraData": { + "position": [3.0, 3.0, 3.0, 1.0], + "up": [0.0, 1.0, 0.0, 0.0], + "heightAngle": 30.0, + "depthAngle": 30.0, + "focus": [0.0, 0.0, 0.0, 0.0], + "over": [0.0, 1.0, 0.0, 0.0] + }, + "groups": [ + { + "lights": [ + { + "type": "directional", + "color": [1.0, 1.0, 1.0], + "direction": [-3.0, -2.0, -1.0, 0.0] + } + ] + }, + { + "groups": [ + { + "translate": [0.0, 0.0, 0.0, 0.0], + "rotate": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + "scale": [1.0, 1.0, 1.0, 1.0], + "primitives": [ + { + "type": "cube", + "diffuse": [1.0, 0.0, 0.0], + "specular": [1.0, 1.0, 1.0], + "shininess": 25.0, + "velocity": [0.0, 0.0, 0.0, 0.0] + } + ] + } + ] + } + ] +} diff --git a/scenefiles-4d/unit_cylinder.json b/scenefiles-4d/unit_cylinder.json new file mode 100644 index 0000000..2a795db --- /dev/null +++ b/scenefiles-4d/unit_cylinder.json @@ -0,0 +1,47 @@ +{ + "name": "root", + "globalData": { + "ambientCoeff": 0.5, + "diffuseCoeff": 0.5, + "specularCoeff": 0.5, + "transparentCoeff": 0, + "gravity": [0.0, -0.0098, 0.0, 0.0] + }, + "cameraData": { + "position": [3.0, 3.0, 3.0, 1.0], + "up": [0.0, 1.0, 0.0, 0.0], + "heightAngle": 30.0, + "depthAngle": 30.0, + "focus": [0.0, 0.0, 0.0, 0.0], + "over": [0.0, 1.0, 0.0, 0.0] + }, + "groups": [ + { + "lights": [ + { + "type": "directional", + "color": [1.0, 1.0, 1.0], + "direction": [-3.0, -2.0, -1.0, 0.0] + } + ] + }, + { + "groups": [ + { + "translate": [0.0, 0.0, 0.0, 0.0], + "rotate": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + "scale": [1.0, 1.0, 1.0, 1.0], + "primitives": [ + { + "type": "cylinder", + "diffuse": [1.0, 0.0, 0.0], + "specular": [1.0, 1.0, 1.0], + "shininess": 25.0, + "velocity": [0.0, 0.0, 0.0, 0.0] + } + ] + } + ] + } + ] +} diff --git a/src/camera/camera.cpp b/src/camera/camera.cpp index 1b4cd43..9e8aef2 100644 --- a/src/camera/camera.cpp +++ b/src/camera/camera.cpp @@ -14,9 +14,14 @@ Camera::Camera(SceneCameraData cameraData) : m_inverseViewMatrix = glm::inverse(m_viewMatrix); m_inverseTranslationVector = -m_translationVector; + m_controlPoints = { + {cameraData.pos[0], cameraData.pos[1], cameraData.pos[2]}, + {cameraData.pos[0], cameraData.pos[1] - 2.f, cameraData.pos[2] - 2.f}, + {cameraData.pos[0] + 2.f, cameraData.pos[1] + 2.f, cameraData.pos[2] -2.f}, + {cameraData.pos[0] + 2.f, cameraData.pos[1], cameraData.pos[2]} + }; } - glm::mat4 Camera::getViewMatrix() const { // Optional TODO: implement the getter or make your own design return m_viewMatrix; @@ -53,4 +58,27 @@ float Camera::getFocalLength() const { float Camera::getAperture() const { // Optional TODO: implement the getter or make your own design return m_aperture; -}
\ No newline at end of file +} + +// int getPt(glm::vec3 n1 , glm::vec3 n2 , float perc ) +// { +// int diff = n2 - n1; + +// return n1 + ( diff * perc ); +// } + +// for( float i = 0 ; i < 1 ; i += 0.01 ) +// { +// glm::vec3 xa = getPt(P1, P2, i); +// glm::vec3 xb = getPt(P2, P3, i); +// glm::vec3 xc = getPt(P3, P4, i); + +// // Calculate points on the lines between the above points +// glm::vec3 xm = getPt(xa, xb, i); +// glm::vec3 xn = getPt(xb, xc, i); + +// // Calculate the final point on the Bezier curve +// glm::vec3 pointOnCurve = getPt(xm, xn, i); + + +// }
\ No newline at end of file diff --git a/src/camera/camera.h b/src/camera/camera.h index 00a6733..a6e8c0a 100644 --- a/src/camera/camera.h +++ b/src/camera/camera.h @@ -38,6 +38,7 @@ public: glm::vec3 getPos() const; float cameraDepth = -1.f; + std::vector<glm::vec3> m_controlPoints; private: glm::mat4 m_viewMatrix; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index fbbfa02..1adb66d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -209,13 +209,13 @@ void MainWindow::initialize() { wSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider wSlider->setTickInterval(0.01); - wSlider->setMinimum(-500); - wSlider->setMaximum(500); + wSlider->setMinimum(-10000); + wSlider->setMaximum(10000); wSlider->setValue(0); wBox = new QDoubleSpinBox(); - wBox->setMinimum(-5.0f); - wBox->setMaximum(5.f); + wBox->setMinimum(-100.0f); + wBox->setMaximum(100.f); wBox->setSingleStep(0.01f); wBox->setValue(0.f); @@ -482,14 +482,16 @@ void MainWindow::onValChangeWSlider(int newValue) { //wSlider->setValue(newValue); wBox->setValue(newValue/100.f); settings.w = wBox->value(); - rayTracer->settingsChanged(imageLabel); + // rayTracer->settingsChanged(imageLabel); + ray->wSliderChanged(imageLabel); } void MainWindow::onValChangeWBox(double newValue) { wSlider->setValue(int(newValue*100.f)); //wBox->setValue(newValue); settings.w = wBox->value(); - rayTracer->settingsChanged(imageLabel); + // rayTracer->settingsChanged(imageLabel); + ray->wSliderChanged(imageLabel); } void MainWindow::onRotateNegative() { diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp index 6585e47..d9d467d 100644 --- a/src/raytracer/raytracer.cpp +++ b/src/raytracer/raytracer.cpp @@ -21,6 +21,11 @@ RayTracer::RayTracer(QWidget *parent) : QWidget(parent) { m_keyMap[Qt::Key_5] = false; m_keyMap[Qt::Key_6] = false; + m_width = 576; + m_height = 432; + m_depth = 500; + + m_image = QImage(m_width, m_height, QImage::Format_RGBX8888); } // updated to use 4D @@ -162,33 +167,24 @@ void RayTracer::sceneChanged(QLabel* imageLabel) { if (!success) { std::cerr << "Error loading scene: \"" << settings.sceneFilePath << "\"" << std::endl; - // return; - QImage image = QImage(576, 432, QImage::Format_RGBX8888); - image.fill(Qt::black); - RGBA *data = reinterpret_cast<RGBA *>(image.bits()); - imageLabel->setPixmap(QPixmap::fromImage(image)); + m_image.fill(Qt::black); + imageLabel->setPixmap(QPixmap::fromImage(m_image)); return; } - int width = 576; - int height = 432; - int depth = 500; - // render the scene - QImage image = QImage(width, height, QImage::Format_RGBX8888); - image.fill(Qt::black); - RGBA *data = reinterpret_cast<RGBA *>(image.bits()); + m_imageData = reinterpret_cast<RGBA *>(m_image.bits()); + RayTraceScene rtScene{ m_width, m_height, m_metaData, m_depth }; + this->render(m_imageData, rtScene); - RayTraceScene rtScene{ width, height,m_metaData, depth }; - this->render(data, rtScene); - - QImage flippedImage = image.mirrored(false, false); + QImage flippedImage = m_image.mirrored(false, false); // make the image larger - flippedImage = flippedImage.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + flippedImage = flippedImage.scaled(m_width, m_height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); imageLabel->setPixmap(QPixmap::fromImage(flippedImage)); m_imageLabel = imageLabel; + // m_image = image; } void RayTracer::settingsChanged(QLabel* imageLabel) { @@ -222,6 +218,11 @@ void RayTracer::settingsChanged(QLabel* imageLabel) { // // This code will be executed after a 2-second delay // emit rotationChanged(settings.rotation); // }); + m_image = image; +} + +void RayTracer::wSliderChanged(QLabel* imageLabel) { + } void RayTracer::keyPressEvent(QKeyEvent *event) { diff --git a/src/raytracer/raytracer.h b/src/raytracer/raytracer.h index 9b5bfbe..cf32a99 100644 --- a/src/raytracer/raytracer.h +++ b/src/raytracer/raytracer.h @@ -168,6 +168,15 @@ public: void keyReleaseEvent(QKeyEvent *event) override; glm::mat4 getRotationMatrix4(float angle, glm::vec3 axis3, glm::vec3 axisW); + + RGBA *m_imageData; + RGBA *m_voxelBuffer; + + int m_width; + int m_height; + int m_depth; + + QImage m_image; signals: void xyRotationChanged(float value); void xzRotationChanged(float value); |