void Vizzer::renderCamera(ApplicationData &app, const Cameraf &c, const vec3f &color) { const float axisLength = 0.15f; const float radius = 0.003f; const vec3f eye = c.getEye(); const vec3f look = c.getLook() * axisLength; const vec3f right = c.getRight() * axisLength; const vec3f up = c.getUp() * axisLength; assets.renderSphere(camera.getCameraPerspective(), eye, radius * 1.5f, math::lerp(color, vec3f(1.0f, 1.0f, 1.0f), 0.25f)); assets.renderCylinder(camera.getCameraPerspective(), eye, eye + look, radius, math::lerp(color, vec3f(0.0f, 0.0f, 1.0f), 0.25f)); assets.renderCylinder(camera.getCameraPerspective(), eye, eye + right, radius, math::lerp(color, vec3f(0.0f, 1.0f, 0.0f), 0.25f)); assets.renderCylinder(camera.getCameraPerspective(), eye, eye + up, radius, math::lerp(color, vec3f(1.0f, 0.0f, 0.0f), 0.25f)); }
void PBRTPreamble(const Cameraf &camera, UINT resolution, bool externalCamera, const string &externalLookAt) { ofstream file(PBRTFilename()); // //http://www-users.cselabs.umn.edu/classes/Spring-2012/csci5108/fileformat.pdf // file << "Film \"image\"" << endl; file << " \"integer xresolution\" [" << resolution << "] \"integer yresolution\" [" << resolution << "]" << endl; file << " \"string filename\" [\"./scene.exr\"]" << endl; file << "Scale -1 1 1" << endl; if (externalCamera) file << "Include \"./camera.pbrt\"" << endl; else if (externalLookAt.size() > 0) file << externalLookAt << endl; else file << "LookAt " << camera.getEye() << ' ' << (camera.getEye() + camera.getLook()) << ' ' << camera.getUp() << endl; file << "Camera \"perspective\" \"float fov\" [60]" << endl; file << "SurfaceIntegrator \"whitted\"" << endl; file << " Sampler \"lowdiscrepancy\" \"integer pixelsamples\" [" << synthParams().PBRTSamples << "]" << endl; file << "WorldBegin" << endl; // // nsamples for an infinite light source does nothing. Light sampling is deterministic given the u-v sample values provided by the Sampler. // //file << "LightSource \"infinite\" \"string mapname\" [\"lightMaps/pisa_latlong.exr\"]" << endl; //file << " \"integer nsamples\" [1]" << endl; file << "AttributeBegin" << endl; file << "Rotate 110 0 0 1" << endl; file << "LightSource \"infinite\" \"string mapname\" [\"lightMaps/skylight-surreal.exr\"]" << endl; file << " \"integer nsamples\" [1]" << endl; file << "AttributeEnd" << endl; file << "AttributeBegin" << endl; file << "Rotate 110 0 0 1" << endl; file << "LightSource \"infinite\" \"string mapname\" [\"lightMaps/skylight-surreal.exr\"]" << endl; file << " \"integer nsamples\" [1]" << endl; file << "AttributeEnd" << endl; file << "AttributeBegin" << endl; file << "Rotate 180 1 0 0" << endl; file << "LightSource \"infinite\" \"string mapname\" [\"lightMaps/skylight-blue.exr\"]" << endl; file << " \"integer nsamples\" [1]" << endl; file << "AttributeEnd" << endl; file << "AttributeBegin" << endl; file << "Rotate 190 0 0 1" << endl; file << "LightSource \"infinite\" \"string mapname\" [\"lightMaps/skylight-pollution.exr\"]" << endl; file << " \"integer nsamples\" [1]" << endl; file << "AttributeEnd" << endl; }