Position the camera better so that the scaled volume is actually visible

This commit is contained in:
Martin Opat 2025-01-08 22:57:06 +01:00
parent d3b88aed30
commit c5b8b6cff0
4 changed files with 16 additions and 16 deletions

View File

@ -5,7 +5,7 @@ __device__ Vec3 d_cameraDir;
__device__ Vec3 d_cameraUp; __device__ Vec3 d_cameraUp;
__device__ Point3 d_lightPos; __device__ Point3 d_lightPos;
Point3 h_cameraPos = Point3::init(-500.0f, 200.0f, 100.0f); Point3 h_cameraPos = Point3::init(-300.0f, 200.0f, -300.0f);
Vec3 center = Vec3::init((float)VOLUME_WIDTH/2.0f, (float)VOLUME_HEIGHT/2.0f, (float)VOLUME_DEPTH/2.0f); Vec3 center = Vec3::init((float)VOLUME_WIDTH/2.0f, (float)VOLUME_HEIGHT/2.0f, (float)VOLUME_DEPTH/2.0f);
Vec3 h_cameraDir = (center - h_cameraPos).normalize(); Vec3 h_cameraDir = (center - h_cameraPos).normalize();
Vec3 h_cameraUp = Vec3::init(0.0, 1.0, 0.0).normalize(); Vec3 h_cameraUp = Vec3::init(0.0, 1.0, 0.0).normalize();

View File

@ -10,6 +10,19 @@
#include <iostream> #include <iostream>
#include "objs/sphere.h" #include "objs/sphere.h"
// Samples the voxel nearest to the given coordinates. TODO: Can be re-used in other places so move
__device__ float sampleVolumeNearest(float* volumeData, const int volW, const int volH, const int volD, int vx, int vy, int vz) {
if (vx < 0) vx = 0;
if (vy < 0) vy = 0;
if (vz < 0) vz = 0;
if (vx >= volW) vx = volW - 1;
if (vy >= volH) vy = volH - 1;
if (vz >= volD) vz = volD - 1;
int idx = vz * volW * volH + vy * volD + vx;
return volumeData[idx];
}
// TODO: instead of IMAGEWIDTH and IMAGEHEIGHT this should reflect the windowSize; // TODO: instead of IMAGEWIDTH and IMAGEHEIGHT this should reflect the windowSize;
__global__ void raycastKernel(float* volumeData, FrameBuffer framebuffer) { __global__ void raycastKernel(float* volumeData, FrameBuffer framebuffer) {

View File

@ -54,8 +54,8 @@ void getSpeed(std::vector<float>& speedData, int idx = 0) {
int main() { int main() {
std::vector<float> data; std::vector<float> data;
getTemperature(data); // getTemperature(data);
// getSpeed(data); getSpeed(data);
std::cout << "DATA size: " << data.size() << std::endl; std::cout << "DATA size: " << data.size() << std::endl;

View File

@ -79,16 +79,3 @@ __host__ void generateVolume(float* volumeData, int volW, int volH, int volD) {
} }
} }
} }
// Samples the voxel nearest to the given coordinates. TODO: Can be re-used in other places so move
__device__ float sampleVolumeNearest(float* volumeData, const int volW, const int volH, const int volD, int vx, int vy, int vz) {
if (vx < 0) vx = 0;
if (vy < 0) vy = 0;
if (vz < 0) vz = 0;
if (vx >= volW) vx = volW - 1;
if (vy >= volH) vy = volH - 1;
if (vz >= volD) vz = volD - 1;
int idx = vz * volW * volH + vy * volD + vx;
return volumeData[idx];
}