Ejemplo n.º 1
0
	void generateRay(const Point2 &dirSample, const Point2 &lensSample, 
		Float timeSample, Ray &ray) const {
		++cameraRays;

		Float u = dirSample.x * m_invResolution.x,
			  v = dirSample.y * m_invResolution.y;

		Vector direction = squareToSphereY(u, v);
		Point2 uvPrime = sphereToSquareY(direction);

		if ((std::abs(uvPrime.x-u) > Epsilon || std::abs(uvPrime.y-v)>Epsilon) && u < 1 && v < 1 && u > 0 && v > 0)
			cout << uvPrime.toString() << " vs " << u << ", " << v << endl;

		/* Construct ray in camera space */
		Ray localRay(Point(0.0f), direction,
			m_shutterOpen + m_shutterOpenTime * timeSample);

		/* Transform into world space */
		m_cameraToWorld(localRay, ray);
	}
Ejemplo n.º 2
0
Vector Camera::GetLookVector() {
return Vector(-m_cameraToWorld(0,2), -m_cameraToWorld(1,2), -m_cameraToWorld(2, 2));
}
Ejemplo n.º 3
0
Vector Camera::GetUpVector() {
return Vector(m_cameraToWorld(0, 1), m_cameraToWorld(1, 1), m_cameraToWorld(2, 1));
}
Ejemplo n.º 4
0
Point Camera::GetEyePoint() {
   return Point(m_cameraToWorld(0,3), m_cameraToWorld(1,3), m_cameraToWorld(2, 3)); 
}