Commit graph

371 commits

Author SHA1 Message Date
d7ff6b194e Roughly try to get the base name for output files 2014-08-05 22:00:49 -07:00
c380a3c3cd Ignore .DS_Store files 2014-08-04 07:09:42 -07:00
14db2752ae Log where the camera is looking 2014-08-03 20:13:00 -07:00
589b1f23ec Camera GetTypeString and WriteType declarations 2014-08-03 20:12:40 -07:00
781c8cbe9f Log camera before logging scene objects 2014-08-03 20:12:10 -07:00
08bd04d8da Fancier way of logging the camera's parameters 2014-08-03 20:12:00 -07:00
5ac721d601 Lots of comments about what LookAt is doing 2014-08-03 20:11:22 -07:00
c2a4372467 Add Camera::IsLeftHanded()
A method that returns true if the camera's coordinate system is left-handed.
2014-08-03 20:10:52 -07:00
a7020545c1 New header comment for camera.cc 2014-08-03 19:10:43 -07:00
f99608085e Log the camera before rendering
Implement an operator<< for Cameras. Log the scene's camera.
2014-08-03 19:10:31 -07:00
bcf93bb4ce LookAt comments 2014-08-03 18:51:49 -07:00
0df6244b8b Bit of code clean up in LookAt 2014-08-03 18:51:41 -07:00
7297bc5c17 Add Camera::LookAt
This is identical to the POV-Ray look_at keyword for cameras. In fact, I stole the code almost directly from them… It's super handy for panning and tilting the camera towards a particular point, and saves me having to do dubiously accurate direction vector calculations by hand.

I still need to figure out what exactly this math is doing.
2014-08-03 18:34:00 -07:00
e64b9403ac Log some extra spaces when logging scene objects 2014-08-03 17:38:22 -07:00
b1c818ac20 Modernize object_sphere
Rename files objectSphere. Clean up dependencies.
2014-08-03 17:35:12 -07:00
a0fbecf483 Log all objects before starting the render 2014-08-03 17:25:25 -07:00
4828cb313f Add Write methods to scene objects
Write methods are polymorphic, overridden by subclasses. There is a single operator<< for Objects that calls the right Write() method for the object. Neat.
2014-08-03 17:25:00 -07:00
b56bbf4ced Root logger is called "ROOT" not "root" 2014-08-03 17:02:25 -07:00
ecc6c1efcd TODO about raising an error for non-intersecting normals 2014-08-03 16:37:03 -07:00
92e67215b9 Get rid of commented out Box intersection code 2014-08-03 16:36:12 -07:00
556e13ae74 I was a little to hasty with this clean up
I actually need this check to get the closest shape for intersection.
2014-08-03 13:05:22 -07:00
4cbe9df324 Legacy code clean up for t values
Intersection methods push values into the t vector in ascending order, so no need to check them in TraceRay.
2014-08-03 12:46:14 -07:00
2ade996783 p.z comparison was comparing against mFar.y 2014-08-03 12:45:34 -07:00
6f4d91af01 Ray parameterization takes a Double 2014-08-03 12:44:53 -07:00
b1d18a124f Move the oneBox camera to see the angles 2014-08-03 12:24:15 -07:00
d79c95be71 Playing with the implementation of slab intersection
This stuff is commented out anyway because it all moved to IntersectSlab...
2014-08-03 12:23:59 -07:00
3ce6987d78 Add the declaration of Box::IntersectSlab 2014-08-03 12:23:19 -07:00
8831dec40c Use NearlyEqual in Box::compute_normal 2014-08-03 12:23:05 -07:00
ecb15470ac Some tweaks to floating point utility methods
- Implement NearlyEqual
- NearZero and TooFar take const Double&
- NearZero and NearlyEqual are templated to take Double& and Double&& (and anything else that can be subtracted and/or passed into std::fabs.
2014-08-03 12:22:30 -07:00
8d5dfe5154 Move slab intersection to Box::IntersectSlab
Makes it easier to debug because I don't have to change things in three places.

This change also includes the fix! The swap was the problem. I didn't have the optimization right. I'll have to go back and figure it out.
2014-08-03 12:20:48 -07:00
8275c9baee Update header for basics.h 2014-08-03 12:18:53 -07:00
dc1849a786 Test reverse subtraction (v2 - v1) 2014-08-03 10:51:38 -07:00
467edaf02b planeSphere scene: move some stuff around
To get a better view of where things are supposed to be.
2014-08-03 08:18:13 -07:00
6dcb9dd37f The problem was this one subtraction. Seriously. 2014-08-02 23:46:02 -07:00
e638764340 Put the light where I actually want it to be 2014-08-02 23:45:49 -07:00
f03945c0f7 Always return the normal, even if the point isn't in the plane
Getting so much closer!
2014-08-02 15:40:24 -07:00
5390600cdd TODO: what does this (apparently) random conditional do? 2014-08-02 15:32:27 -07:00
8ea832c090 Disable specular calculations for now.
Just to simplify things while I'm figuring out the lighting model...
2014-08-02 15:23:22 -07:00
79c951030d Move Stats to its own module
Move Stats to its own module and pass it around to the intersection methods to keep track of how many tests and successful intersections there are.
2014-08-02 15:21:14 -07:00
b60e27824b Forgot declaration of shadowRay <- shadow_ray 2014-08-02 14:33:50 -07:00
5ddfe068a6 No specular reflections (for now) 2014-08-02 14:33:32 -07:00
8de737decd Little bit of code clean up in TraceRay 2014-08-02 14:30:40 -07:00
1a5a46c468 Use NearZero in plane intersection calculations
Also clean up the "point on surface" logic and remove the normal flipping (doesn't make sense without a ray origin anyway).
2014-08-02 14:12:01 -07:00
82c7e75e11 Normalize primary ray direction vectors 2014-08-02 14:10:28 -07:00
57f3154986 Add a NearZero for temporary values 2014-08-02 14:10:04 -07:00
0d4b700546 Add EPSILON, MAX_DISTANCE, and NearZero and TooFar 2014-08-02 12:19:46 -07:00
0d6a238b44 Clean up some implementation header comments 2014-08-02 10:40:41 -07:00
662867f529 Return the appropriate normal
I'm not actually sure this is necessary...
2014-08-02 10:39:56 -07:00
20b88f6dac Clarify some notation in plane intersection 2014-08-02 10:39:29 -07:00
964b6a5751 Add Plane object parsing to ObjectParser 2014-08-02 10:13:39 -07:00