[Bf-blender-cvs] [c556dc4] multiview: Merge remote-tracking branch 'origin/master' into multiview
Dalai Felinto
noreply at git.blender.org
Fri Aug 29 00:29:45 CEST 2014
Commit: c556dc44dac1a93fc23210f537cbcea912bc495f
Author: Dalai Felinto
Date: Thu Aug 28 11:53:11 2014 +0200
Branches: multiview
https://developer.blender.org/rBc556dc44dac1a93fc23210f537cbcea912bc495f
Merge remote-tracking branch 'origin/master' into multiview
Conflicts:
source/blender/blenkernel/BKE_scene.h
source/blender/blenkernel/intern/scene.c
source/blender/blenloader/intern/versioning_270.c
===================================================================
===================================================================
diff --cc source/blender/blenkernel/BKE_scene.h
index 2dee362,1bfe0ee..ec0798a
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@@ -141,10 -140,8 +143,12 @@@ bool BKE_scene_check_rigidbody_active(c
int BKE_scene_num_threads(const struct Scene *scene);
int BKE_render_num_threads(const struct RenderData *r);
+ double BKE_scene_unit_scale(const struct UnitSettings *unit, const int unit_type, double value);
+
+/* multiview */
+bool BKE_render_is_stereo3d(const struct RenderData *rd);
+size_t BKE_render_num_views(const struct RenderData *rd);
+
#ifdef __cplusplus
}
#endif
diff --cc source/blender/blenkernel/intern/scene.c
index dbc2dda,eb98e38..7a94ac9
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@@ -2022,39 -1978,28 +2029,65 @@@ int BKE_scene_num_threads(const Scene *
return BKE_render_num_threads(&scene->r);
}
+ /* Apply the needed correction factor to value, based on unit_type (only length-related are affected currently)
+ * and unit->scale_length.
+ */
+ double BKE_scene_unit_scale(const UnitSettings *unit, const int unit_type, double value)
+ {
+ if (unit->system == USER_UNIT_NONE) {
+ /* Never apply scale_length when not using a unit setting! */
+ return value;
+ }
+
+ switch (unit_type) {
+ case B_UNIT_LENGTH:
+ return value * (double)unit->scale_length;
+ case B_UNIT_CAMERA:
+ return value * (double)unit->scale_length;
+ case B_UNIT_AREA:
+ return value * pow(unit->scale_length, 2);
+ case B_UNIT_VOLUME:
+ return value * pow(unit->scale_length, 3);
+ case B_UNIT_MASS:
+ return value * pow(unit->scale_length, 3);
+ default:
+ return value;
+ }
+ }
++
+/******************** multiview *************************/
+
+size_t BKE_render_num_views(const RenderData *rd)
+{
+ SceneRenderView *srv;
+ size_t totviews = 0;
+
+ if (rd->views_setup == SCE_VIEWS_SETUP_BASIC) {
+ if (BLI_findstring(&rd->views, STEREO_LEFT_NAME, offsetof(SceneRenderView, name)))
+ totviews++;
+
+ if (BLI_findstring(&rd->views, STEREO_RIGHT_NAME, offsetof(SceneRenderView, name)))
+ totviews++;
+ }
+ else {
+ for (srv = (SceneRenderView *)rd->views.first; srv; srv = srv->next)
+ if ((srv->viewflag & SCE_VIEW_DISABLE) == 0)
+ totviews++;
+ }
+ return totviews;
+}
+
+bool BKE_render_is_stereo3d(const RenderData *rd)
+{
+ SceneRenderView *srv[2];
+
+ if ((rd->scemode & R_MULTIVIEW) == 0)
+ return false;
+
+ srv[0] = (SceneRenderView *)BLI_findstring(&rd->views, STEREO_LEFT_NAME, offsetof(SceneRenderView, name));
+ srv[1] = (SceneRenderView *)BLI_findstring(&rd->views, STEREO_RIGHT_NAME, offsetof(SceneRenderView, name));
+
+ return (srv[0] && ((srv[0]->viewflag & SCE_VIEW_DISABLE) == 0) &&
+ srv[1] && ((srv[1]->viewflag & SCE_VIEW_DISABLE) == 0));
+}
+
diff --cc source/blender/blenloader/intern/versioning_270.c
index 5523ecd,8e760a9..2cc330d
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@@ -43,10 -43,9 +44,11 @@@
#include "DNA_object_types.h"
#include "DNA_mesh_types.h"
#include "DNA_modifier_types.h"
+ #include "DNA_particle_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"
@@@ -361,54 -359,19 +363,70 @@@ void blo_do_versions_270(FileData *fd,
}
}
+ if (!MAIN_VERSION_ATLEAST(main, 271, 6)) {
+ Object *ob;
+ for (ob = main->object.first; ob; ob = ob->id.next) {
+ ModifierData *md;
+
+ for (md = ob->modifiers.first; md; md = md->next) {
+ if (md->type == eModifierType_ParticleSystem) {
+ ParticleSystemModifierData *pmd = (ParticleSystemModifierData *)md;
+ if (pmd->psys && pmd->psys->clmd) {
+ pmd->psys->clmd->sim_parms->vel_damping = 1.0f;
+ }
+ }
+ }
+ }
+ }
++
+ {
+ 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.flag |= IMA_SHOW_STEREO;
+ sima->iuser.passtype = SCE_PASS_COMBINED;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (!DNA_struct_elem_find(fd->filesdna, "Camera", "CameraStereoSettings", "stereo")) {
+ for (cam = main->camera.first; cam; cam = cam->id.next) {
+ cam->stereo.interocular_distance = 0.065;
+ cam->stereo.convergence_distance = 30.f * 0.065;
+ }
+ }
+ }
}
More information about the Bf-blender-cvs
mailing list