Position the camera better so that the scaled volume is actually visible
This commit is contained in:
parent
d3b88aed30
commit
c5b8b6cff0
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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];
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue