[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41554] branches/cycles/intern/cycles/ blender: Cycles: make cycles work with new camera sensor size.

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Nov 5 12:11:06 CET 2011


Revision: 41554
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41554
Author:   blendix
Date:     2011-11-05 11:11:06 +0000 (Sat, 05 Nov 2011)
Log Message:
-----------
Cycles: make cycles work with new camera sensor size.

Modified Paths:
--------------
    branches/cycles/intern/cycles/blender/addon/ui.py
    branches/cycles/intern/cycles/blender/blender_camera.cpp

Modified: branches/cycles/intern/cycles/blender/addon/ui.py
===================================================================
--- branches/cycles/intern/cycles/blender/addon/ui.py	2011-11-05 11:04:28 UTC (rev 41553)
+++ branches/cycles/intern/cycles/blender/addon/ui.py	2011-11-05 11:11:06 UTC (rev 41554)
@@ -712,6 +712,7 @@
         bpy.types.DATA_PT_vertex_colors,
         bpy.types.DATA_PT_camera,
         bpy.types.DATA_PT_camera_display,
+        bpy.types.DATA_PT_lens,
         bpy.types.DATA_PT_custom_props_mesh,
         bpy.types.DATA_PT_custom_props_camera,
         bpy.types.DATA_PT_custom_props_lamp,

Modified: branches/cycles/intern/cycles/blender/blender_camera.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_camera.cpp	2011-11-05 11:04:28 UTC (rev 41553)
+++ branches/cycles/intern/cycles/blender/blender_camera.cpp	2011-11-05 11:11:06 UTC (rev 41554)
@@ -47,6 +47,10 @@
 
 	float2 pixelaspect;
 
+	enum { AUTO, HORIZONTAL, VERTICAL } sensor_fit;
+	float sensor_width;
+	float sensor_height;
+
 	Transform matrix;
 };
 
@@ -56,6 +60,9 @@
 
 	bcam->zoom = 1.0f;
 	bcam->pixelaspect = make_float2(1.0f, 1.0f);
+	bcam->sensor_width = 32.0f;
+	bcam->sensor_height = 18.0f;
+	bcam->sensor_fit = BlenderCamera::AUTO;
 }
 
 static float blender_camera_focal_distance(BL::Object b_ob, BL::Camera b_camera)
@@ -100,6 +107,16 @@
 
 		bcam->shift.x = b_camera.shift_x();
 		bcam->shift.y = b_camera.shift_y();
+
+		bcam->sensor_width = b_camera.sensor_width();
+		bcam->sensor_height = b_camera.sensor_height();
+
+		if(b_camera.sensor_fit() == BL::Camera::sensor_fit_AUTO)
+			bcam->sensor_fit = BlenderCamera::AUTO;
+		else if(b_camera.sensor_fit() == BL::Camera::sensor_fit_HORIZONTAL)
+			bcam->sensor_fit = BlenderCamera::HORIZONTAL;
+		else
+			bcam->sensor_fit = BlenderCamera::VERTICAL;
 	}
 	else {
 		/* from lamp not implemented yet */
@@ -118,7 +135,24 @@
 	/* compute x/y aspect and ratio */
 	float aspectratio, xaspect, yaspect;
 
-	if(xratio > yratio) {
+	/* sensor fitting */
+	bool horizontal_fit;
+	float sensor_size;
+
+	if(bcam->sensor_fit == BlenderCamera::AUTO) {
+		horizontal_fit = (xratio > yratio);
+		sensor_size = bcam->sensor_width;
+	}
+	else if(bcam->sensor_fit == BlenderCamera::HORIZONTAL) {
+		horizontal_fit = true;
+		sensor_size = bcam->sensor_width;
+	}
+	else {
+		horizontal_fit = false;
+		sensor_size = bcam->sensor_height;
+	}
+
+	if(horizontal_fit) {
 		aspectratio= xratio/yratio;
 		xaspect= aspectratio;
 		yaspect= 1.0f;
@@ -165,7 +199,7 @@
 	cam->ortho = bcam->ortho;
 
 	/* perspective */
-	cam->fov = 2.0f*atan(16.0f/bcam->lens/aspectratio);
+	cam->fov = 2.0f*atan((0.5f*sensor_size)/bcam->lens/aspectratio);
 	cam->focaldistance = bcam->focaldistance;
 	cam->aperturesize = bcam->aperturesize;
 	cam->blades = bcam->apertureblades;




More information about the Bf-blender-cvs mailing list