[Bf-blender-cvs] [6311911] multiview: Merge remote-tracking branch 'upstream/master' into multiview

Dalai Felinto noreply at git.blender.org
Fri Jul 25 04:27:21 CEST 2014


Commit: 63119114665b0ae1bd1e784b00326792a7195d92
Author: Dalai Felinto
Date:   Thu Jul 24 23:22:21 2014 -0300
Branches: multiview
https://developer.blender.org/rB63119114665b0ae1bd1e784b00326792a7195d92

Merge remote-tracking branch 'upstream/master' into multiview

(removed the multiview splashscreen as well to prevent future issues and
not to increase the git repo size by much)

Conflicts:
	release/datafiles/splash.png
	source/blender/blenloader/intern/versioning_270.c
	source/blender/makesdna/DNA_scene_types.h
	source/blender/makesrna/intern/rna_scene.c
	source/blender/makesrna/intern/rna_userdef.c
	source/blender/render/intern/include/render_types.h
	source/blender/render/intern/source/pipeline.c
	source/blender/windowmanager/intern/wm_draw.c

===================================================================



===================================================================

diff --cc release/datafiles/locale
index cb1967c,5ea1456..b02bd60
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit cb1967cc63a6d2d75d2b59cdf91c5f5645285aea
 -Subproject commit 5ea1456cf5bf9caa32d4988284cc0b75637dd45d
++Subproject commit b02bd6054548c2daa4a223e035835b626cc9476e
diff --cc release/scripts/addons
index c50944e,59ff66f..fcec730
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit c50944e808d6c74148237e85866e893628f0fee6
 -Subproject commit 59ff66fa7aca6a56dfa516ee4a456428516d2c6f
++Subproject commit fcec7304a00de3b612c6a5435328fdfd753fecd3
diff --cc release/scripts/addons_contrib
index 31545d2,9c1b725..103b024
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 31545d25c9cb41d271a3f3ef84d327708572290e
 -Subproject commit 9c1b7252bb510cc527c4ef2fd5aa3b586d095e98
++Subproject commit 103b024c9476ad849152fbba329e9fae2ebe137a
diff --cc source/blender/blenkernel/intern/camera.c
index 3ac3480,b20ba40..f05d802
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@@ -600,165 -593,3 +600,169 @@@ bool BKE_camera_view_frame_fit_to_scene
  		}
  	}
  }
 +
 +/* transforms the camera matrix to the correct stereo eye to be rendered */
 +void BKE_camera_multiview_basic(Object *camera, const bool left)
 +{
 +	Camera *data = (Camera *)camera->data;
 +	float *r_shift = &data->shiftx;
 +	float interocular_distance, convergence_distance;
 +	float angle = 0.0f;
 +	short convergence_mode, pivot;
 +	float tmpmat[4][4];
 +
- 	float rotmat[3][3] = MAT3_UNITY;
++	float rotmat[3][3];
 +	float fac = 1.0f;
 +
++	unit_m3(rotmat);
++
 +	interocular_distance = data->stereo.interocular_distance;
 +	convergence_distance = data->stereo.convergence_distance;
 +	convergence_mode = data->stereo.convergence_mode;
 +	pivot = data->stereo.pivot;
 +
 +	if (((pivot == CAM_S3D_PIVOT_LEFT) && left) ||
 +	    ((pivot == CAM_S3D_PIVOT_RIGHT) && !left))
 +		return;
 +
 +	if (pivot == CAM_S3D_PIVOT_CENTER)
 +		fac = 0.5f;
 +
 +	/* rotation */
 +	if (convergence_mode == CAM_S3D_TOE) {
 +		angle = -atanf((interocular_distance * 0.5f) / convergence_distance);
 +
 +		if (left)
 +			angle = -angle;
 +
 +		rotmat[0][0] = cosf(angle * 2.0f * fac);
 +		rotmat[2][0] =-sinf(angle * 2.0f * fac);
 +		rotmat[0][2] = sinf(angle * 2.0f * fac);
 +		rotmat[2][2] = cosf(angle * 2.0f * fac);
 +	}
 +
 +	copy_m4_m4(tmpmat, camera->obmat);
 +	mul_m4_m4m3(camera->obmat, tmpmat, rotmat);
 +
 +	/* translation */
 +	if (left) {
 +		translate_m4(camera->obmat,
 +					 -interocular_distance * cosf(angle) * fac, 0.0f,
 +					 interocular_distance * sinf(angle) * fac);
 +	}
 +	else {
 +		translate_m4(camera->obmat,
 +					 interocular_distance * cosf(angle) * fac, 0.0f,
 +					 -interocular_distance * sinf(angle) * fac);
 +	}
 +
 +	/* prepare the camera shift for the projection matrix */
 +	/* Note: in viewport, parallel renders as offaxis, but in render it does parallel */
 +	if (convergence_mode == CAM_S3D_OFFAXIS) {
 +		if (left)
 +			*r_shift += ((interocular_distance / data->sensor_x) * (data->lens / convergence_distance)) * fac;
 +		else
 +			*r_shift -= ((interocular_distance / data->sensor_x) * (data->lens / convergence_distance)) * fac;
 +	}
 +}
 +
 +void BKE_camera_stereo_matrices(Object *camera, float r_viewmat[4][4], float *r_shift, const bool left)
 +{
 +	/* viewmat = MODELVIEW_MATRIX */
 +	Camera *data = (Camera *)camera->data;
 +	float interocular_distance, convergence_distance;
 +	float angle = 0.0f;
 +	short convergence_mode, pivot;
 +	float tmpviewmat[4][4];
- 	float transmat[4][4] = MAT4_UNITY;
++	float transmat[4][4];
 +	float fac = 1.0f;
 +
++	unit_m4(transmat);
++
 +	interocular_distance = data->stereo.interocular_distance;
 +	convergence_distance = data->stereo.convergence_distance;
 +	convergence_mode = data->stereo.convergence_mode;
 +	pivot = data->stereo.pivot;
 +
 +	invert_m4_m4(tmpviewmat, camera->obmat);
 +
 +	if (((pivot == CAM_S3D_PIVOT_LEFT) && left) ||
 +	    ((pivot == CAM_S3D_PIVOT_RIGHT) && !left)) {
 +		copy_m4_m4(r_viewmat, tmpviewmat);
 +		return;
 +	}
 +
 +	if (pivot == CAM_S3D_PIVOT_CENTER)
 +		fac = 0.5f;
 +
 +	/* rotation */
 +	if (convergence_mode == CAM_S3D_TOE) {
 +		angle = atanf((interocular_distance * 0.5f) / convergence_distance);
 +
 +		if (left)
 +			angle = -angle;
 +
 +		transmat[0][0] = cosf(angle * 2.0f * fac);
 +		transmat[2][0] =-sinf(angle * 2.0f * fac);
 +		transmat[0][2] = sinf(angle * 2.0f * fac);
 +		transmat[2][2] = cosf(angle * 2.0f * fac);
 +	}
 +
 +	/* translation */
 +	if (left) {
 +		transmat[3][0] = cosf(angle) * interocular_distance * fac;
 +		transmat[3][2] = sinf(angle) * interocular_distance * fac;
 +	}
 +	else {
 +		transmat[3][0] = -cosf(angle) * interocular_distance * fac;
 +		transmat[3][2] = -sinf(angle) * interocular_distance * fac;
 +	}
 +
 +	/* apply */
 +	mul_m4_m4m4(r_viewmat, transmat, tmpviewmat);
 +
 +	/* prepare the camera shift for the projection matrix */
 +	/* Note: in viewport, parallel renders as offaxis, but in render it does parallel */
 +	if (ELEM(convergence_mode, CAM_S3D_OFFAXIS, CAM_S3D_PARALLEL)) {
 +		if (left)
 +			*r_shift += (interocular_distance / data->sensor_x) * (data->lens / convergence_distance) * fac;
 +		else
 +			*r_shift -= (interocular_distance / data->sensor_x) * (data->lens / convergence_distance) * fac;
 +	}
 +}
 +
 +Object *BKE_camera_multiview_advanced(Scene *scene, RenderData *rd, Object *camera, const char *suffix)
 +{
 +	SceneRenderView *srv;
 +	char name[MAX_NAME];
 +	int len_name, len_suffix;
 +
 +	len_name = BLI_strnlen(camera->id.name, sizeof(camera->id.name));
 +
 +	for (srv = rd->views.first; srv; srv = srv->next)
 +	{
 +		len_suffix = BLI_strnlen(srv->suffix, sizeof(srv->suffix));
 +
 +		if (len_name < len_suffix)
 +			continue;
 +
 +		if (strcmp(camera->id.name + (len_name - len_suffix), srv->suffix) == 0) {
 +			BLI_snprintf(name, sizeof(name), "%.*s%s", (len_name - len_suffix), camera->id.name, suffix);
 +			break;
 +		}
 +	}
 +
 +	if (name[0] != '\0') {
 +		Base *base;
 +		Object *ob;
 +		for (base = scene->base.first; base; base = base->next) {
 +			ob = base->object;
 +			if (strcmp(ob->id.name, name) == 0) {
 +				return ob;
 +			}
 +		}
 +	}
 +
 +	return camera;
 +}
 +
diff --cc source/blender/blenkernel/intern/image.c
index 81e8c69,805c125..6d03318
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@@ -1014,7 -1014,7 +1014,7 @@@ int BKE_imtype_to_ftype(const char imty
  	else if (imtype == R_IMF_IMTYPE_TIFF)
  		return TIF;
  #endif
- 	else if (ELEM3(imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER, R_IMF_IMTYPE_MULTIVIEW))
 -	else if (imtype == R_IMF_IMTYPE_OPENEXR || imtype == R_IMF_IMTYPE_MULTILAYER)
++	else if (ELEM(imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER, R_IMF_IMTYPE_MULTIVIEW))
  		return OPENEXR;
  #ifdef WITH_CINEON
  	else if (imtype == R_IMF_IMTYPE_CINEON)
@@@ -1293,7 -1289,7 +1293,7 @@@ static bool do_add_image_extension(cha
  	}
  #endif
  #ifdef WITH_OPENEXR
- 	else if (ELEM3(imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER, R_IMF_IMTYPE_MULTIVIEW)) {
 -	else if (ELEM(imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER)) {
++	else if (ELEM(imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER, R_IMF_IMTYPE_MULTIVIEW)) {
  		if (!BLI_testextensie(string, extension_test = ".exr"))
  			extension = extension_test;
  	}
@@@ -1932,7 -1928,7 +1932,7 @@@ int BKE_imbuf_write(ImBuf *ibuf, const 
  	}
  #endif
  #ifdef WITH_OPENEXR
- 	else if (ELEM3(imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER, R_IMF_IMTYPE_MULTIVIEW)) {
 -	else if (imtype == R_IMF_IMTYPE_OPENEXR || imtype == R_IMF_IMTYPE_MULTILAYER) {
++	else if (ELEM(imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER, R_IMF_IMTYPE_MULTIVIEW)) {
  		ibuf->ftype = OPENEXR;
  		if (imf->depth == R_IMF_CHAN_DEPTH_16)
  			ibuf->ftype |= OPENEXR_HALF;
diff --cc source/blender/blenloader/intern/versioning_270.c
index 9dd877f,2e4d38e..5523ecd
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@@ -42,8 -42,8 +43,10 @@@
  #include "DNA_object_types.h"
  #include "DNA_mesh_types.h"
  #include "DNA_modifier_types.h"
+ #include "DNA_linestyle_types.h"
+ #include "DNA_actuator_types.h"
 +#include "DNA_camera_types.h"
 +#include "DNA_view3d_types.h"
  
  #include "DNA_genfile.h"
  
@@@ -292,62 -342,18 +346,69 @@@ void blo_do_versions_270(FileData *fd, 
  		}
  	}
  
- 	{
+ 	if (!MAIN_VERSION_ATLEAST(main, 271, 3)) {
+ 		Brush *br;
+ 
+ 		for (br = main->brush.first; br; br = br->id.next) {
+ 			br->fill_threshold = 0.2f;
+ 		}
+ 	}
+ 
+ 	if (!DNA_struct_elem_find(fd->filesdna, "RenderData", "int", "preview_start_resolution")) {
  		Scene *scene;
  		for (scene = main->scene.first; scene; scene = scene->id.next) {
- 			int num_layers = BLI_countlist(&scene->r.layers);
- 			scene->r.actlay = min_ff(scene->r.actlay, num_layers - 1);
+ 			scene->r.preview_start_resolution = 64;
  		}
  	}
 +
 +	{
 +		SceneRenderView *srv;
 +		Camera *cam;
 +		bScreen *screen;
 +		Scene *scene;
 +
 +		if (!DNA_struct_elem_find(fd->filesdna, "RenderData", "ListBase", "views")) {
 +			for (scene = main->scene.first; scene; scene = scene->id.next) {
 +				BKE_scene_add_render_view(scene, STEREO_LEFT_NAME);
 +				srv = (SceneRenderView *)scene->r.views.first;
 +				BLI_strncpy(srv->suffix, "_L", sizeof(srv->suffix));
 +
 +				BKE_scene_add_render_view(scene, STEREO_RIGHT_NAME);
 +				srv = (SceneRenderView *)scene->r.views.last;
 +				BLI_strncpy(srv->suffix, "_R", sizeof(srv->suffix));
 +			}
 +		}
 +
 +		for (screen = main->screen.first; screen; screen = screen->id.next) {
 +			ScrArea *sa;
 +			for (sa = screen->areabase.first; sa; sa = sa->next) {
 +				SpaceLink *sl;
 +
 +				for (sl = sa->spacedata.first; sl; sl= sl->next) {
 +					switch (sl->spacetype) {
 +						case SPACE_VIEW3D:
 +						{
 +							View3D *v3d = (View3D*) sl;
 +							v3d->stereo_camera = STEREO_3D_ID;
 +							break;
 +						}
 +						case SPACE_IMAGE:
 +						{
 +							SpaceImage *sima = (SpaceImage *) sl;
 +							sima->iuser.fl

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list