[Bf-blender-cvs] [d164634] gooseberry: Merge branch 'master' into gooseberry

Lukas Tönne noreply at git.blender.org
Fri Mar 13 13:41:56 CET 2015


Commit: d164634cc0fddbefef51291d94a654f045f9fe3b
Author: Lukas Tönne
Date:   Fri Mar 13 13:41:37 2015 +0100
Branches: gooseberry
https://developer.blender.org/rBd164634cc0fddbefef51291d94a654f045f9fe3b

Merge branch 'master' into gooseberry

Conflicts:
	source/blender/editors/space_view3d/view3d_draw.c
	source/blender/physics/intern/BPH_mass_spring.cpp

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



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

diff --cc source/blender/editors/space_view3d/view3d_draw.c
index db29b08,58ef918..85a5f91
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@@ -2954,13 -2879,9 +2954,11 @@@ void ED_view3d_draw_offscreen_init(Scen
  /*
   * Function to clear the view
   */
- static void view3d_main_area_clear(Scene *scene, View3D *v3d, ARegion *ar, bool force)
+ static void view3d_main_area_clear(Scene *scene, View3D *v3d, ARegion *ar)
  {
 +	const bool is_wire_color = V3D_IS_WIRECOLOR(scene, v3d);
- 
- 	/* clear background */
- 	if (scene->world && ((v3d->flag3 & V3D_SHOW_WORLD) || force)) {
- 		float alpha = (force) ? 1.0f : 0.0f;
++	
+ 	if (scene->world && (v3d->flag3 & V3D_SHOW_WORLD)) {
  		bool glsl = GPU_glsl_support() && BKE_scene_use_new_shading_nodes(scene) && scene->world->nodetree && scene->world->use_nodes;
  		
  		if (glsl) {
@@@ -3114,12 -3029,8 +3112,12 @@@
  			IMB_colormanagement_pixel_to_display_space_v3(col_hor, &scene->world->horr, &scene->view_settings,
  			                                              &scene->display_settings);
  
- 			glClearColor(col_hor[0], col_hor[1], col_hor[2], alpha);
+ 			glClearColor(col_hor[0], col_hor[1], col_hor[2], 1.0);
  			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 +
 +			if (is_wire_color) {
 +				draw_object_bg_wire_color_set(col_hor);
 +			}
  		}
  	}
  	else {
@@@ -3156,23 -3063,10 +3154,23 @@@
  
  			glMatrixMode(GL_MODELVIEW);
  			glPopMatrix();
 +
 +			if (is_wire_color) {
 +				float col_mid[3];
 +				mid_v3_v3v3(col_mid, col_low, col_high);
 +				draw_object_bg_wire_color_set(col_mid);
 +			}
  		}
  		else {
 +			float col[3];
 +
 +			UI_GetThemeColor3fv(TH_HIGH_GRAD, col);
- 			UI_ThemeClearColor(TH_HIGH_GRAD);
+ 			UI_ThemeClearColorAlpha(TH_HIGH_GRAD, 1.0f);
  			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 +
 +			if (is_wire_color) {
 +				draw_object_bg_wire_color_set(col);
 +			}
  		}
  	}
  }
diff --cc source/blender/editors/space_view3d/view3d_edit.c
index 39541c1,51915e0..a078bfc
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@@ -3975,9 -3979,13 +3979,13 @@@ void VIEW3D_OT_view_orbit(wmOperatorTyp
  
  	/* flags */
  	ot->flag = 0;
 -	
 +
  	/* properties */
+ 	prop = RNA_def_float(ot->srna, "angle", 0, -FLT_MAX, FLT_MAX, "Roll", "", -FLT_MAX, FLT_MAX);
+ 	RNA_def_property_flag(prop, PROP_SKIP_SAVE);
+ 
  	ot->prop = RNA_def_enum(ot->srna, "type", prop_view_orbit_items, 0, "Orbit", "Direction of View Orbit");
+ 
  }
  
  
diff --cc source/blender/physics/intern/BPH_mass_spring.cpp
index faf8ac9,e0ca945..f7cfc3c
--- a/source/blender/physics/intern/BPH_mass_spring.cpp
+++ b/source/blender/physics/intern/BPH_mass_spring.cpp
@@@ -1,1086 -1,1117 +1,1086 @@@
 -/*
 - * ***** BEGIN GPL LICENSE BLOCK *****
 - *
 - * This program is free software; you can redistribute it and/or
 - * modify it under the terms of the GNU General Public License
 - * as published by the Free Software Foundation; either version 2
 - * of the License, or (at your option) any later version.
 - *
 - * This program is distributed in the hope that it will be useful,
 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software Foundation,
 - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 - *
 - * The Original Code is Copyright (C) Blender Foundation
 - * All rights reserved.
 - *
 - * The Original Code is: all of this file.
 - *
 - * Contributor(s): Lukas Toenne
 - *
 - * ***** END GPL LICENSE BLOCK *****
 - */
 -
 -/** \file blender/physics/intern/BPH_mass_spring.cpp
 - *  \ingroup bph
 - */
 -
 -extern "C" {
 -#include "MEM_guardedalloc.h"
 -
 -#include "DNA_cloth_types.h"
 -#include "DNA_scene_types.h"
 -#include "DNA_object_force.h"
 -#include "DNA_object_types.h"
 -#include "DNA_meshdata_types.h"
 -#include "DNA_modifier_types.h"
 -
 -#include "BLI_math.h"
 -#include "BLI_linklist.h"
 -#include "BLI_utildefines.h"
 -
 -#include "BKE_cloth.h"
 -#include "BKE_collision.h"
 -#include "BKE_effect.h"
 -}
 -
 -#include "BPH_mass_spring.h"
 -#include "implicit.h"
 -
 -static float I3[3][3] = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}};
 -
 -/* Number of off-diagonal non-zero matrix blocks.
 - * Basically there is one of these for each vertex-vertex interaction.
 - */
 -static int cloth_count_nondiag_blocks(Cloth *cloth)
 -{
 -	LinkNode *link;
 -	int nondiag = 0;
 -	
 -	for (link = cloth->springs; link; link = link->next) {
 -		ClothSpring *spring = (ClothSpring *)link->link;
 -		switch (spring->type) {
 -			case CLOTH_SPRING_TYPE_BENDING_ANG:
 -				/* angular bending combines 3 vertices */
 -				nondiag += 3;
 -				break;
 -				
 -			default:
 -				/* all other springs depend on 2 vertices only */
 -				nondiag += 1;
 -				break;
 -		}
 -	}
 -	
 -	return nondiag;
 -}
 -
 -int BPH_cloth_solver_init(Object *UNUSED(ob), ClothModifierData *clmd)
 -{
 -	Cloth *cloth = clmd->clothObject;
 -	ClothVertex *verts = cloth->verts;
 -	const float ZERO[3] = {0.0f, 0.0f, 0.0f};
 -	Implicit_Data *id;
 -	unsigned int i, nondiag;
 -	
 -	nondiag = cloth_count_nondiag_blocks(cloth);
 -	cloth->implicit = id = BPH_mass_spring_solver_create(cloth->numverts, nondiag);
 -	
 -	for (i = 0; i < cloth->numverts; i++) {
 -		BPH_mass_spring_set_vertex_mass(id, i, verts[i].mass);
 -	}
 -	
 -	for (i = 0; i < cloth->numverts; i++) {
 -		BPH_mass_spring_set_motion_state(id, i, verts[i].x, ZERO);
 -	}
 -	
 -	return 1;
 -}
 -
 -void BPH_cloth_solver_free(ClothModifierData *clmd)
 -{
 -	Cloth *cloth = clmd->clothObject;
 -	
 -	if (cloth->implicit) {
 -		BPH_mass_spring_solver_free(cloth->implicit);
 -		cloth->implicit = NULL;
 -	}
 -}
 -
 -void BKE_cloth_solver_set_positions(ClothModifierData *clmd)
 -{
 -	Cloth *cloth = clmd->clothObject;
 -	ClothVertex *verts = cloth->verts;
 -	unsigned int numverts = cloth->numverts, i;
 -	ClothHairData *cloth_hairdata = clmd->hairdata;
 -	Implicit_Data *id = cloth->implicit;
 -	
 -	for (i = 0; i < numverts; i++) {
 -		if (cloth_hairdata) {
 -			ClothHairData *root = &cloth_hairdata[i];
 -			BPH_mass_spring_set_rest_transform(id, i, root->rot);
 -		}
 -		else
 -			BPH_mass_spring_set_rest_transform(id, i, I3);
 -		
 -		BPH_mass_spring_set_motion_state(id, i, verts[i].x, verts[i].v);
 -	}
 -}
 -
 -static bool collision_response(ClothModifierData *clmd, CollisionModifierData *collmd, CollPair *collpair, float dt, float restitution, float r_impulse[3])
 -{
 -	Cloth *cloth = clmd->clothObject;
 -	int index = collpair->ap1;
 -	bool result = false;
 -	
 -	float v1[3], v2_old[3], v2_new[3], v_rel_old[3], v_rel_new[3];
 -	float epsilon2 = BLI_bvhtree_getepsilon(collmd->bvhtree);
 -
 -	float margin_distance = collpair->distance - epsilon2;
 -	float mag_v_rel;
 -	
 -	zero_v3(r_impulse);
 -	
 -	if (margin_distance > 0.0f)
 -		return false; /* XXX tested before already? */
 -	
 -	/* only handle static collisions here */
 -	if ( collpair->flag & COLLISION_IN_FUTURE )
 -		return false;
 -	
 -	/* velocity */
 -	copy_v3_v3(v1, cloth->verts[index].v);
 -	collision_get_collider_velocity(v2_old, v2_new, collmd, collpair);
 -	/* relative velocity = velocity of the cloth point relative to the collider */
 -	sub_v3_v3v3(v_rel_old, v1, v2_old);
 -	sub_v3_v3v3(v_rel_new, v1, v2_new);
 -	/* normal component of the relative velocity */
 -	mag_v_rel = dot_v3v3(v_rel_old, collpair->normal);
 -	
 -	/* only valid when moving toward the collider */
 -	if (mag_v_rel < -ALMOST_ZERO) {
 -		float v_nor_old, v_nor_new;
 -		float v_tan_old[3], v_tan_new[3];
 -		float bounce, repulse;
 -		
 -		/* Collision response based on
 -		 * "Simulating Complex Hair with Robust Collision Handling" (Choe, Choi, Ko, ACM SIGGRAPH 2005)
 -		 * http://graphics.snu.ac.kr/publications/2005-choe-HairSim/Choe_2005_SCA.pdf
 -		 */
 -		
 -		v_nor_old = mag_v_rel;
 -		v_nor_new = dot_v3v3(v_rel_new, collpair->normal);
 -		
 -		madd_v3_v3v3fl(v_tan_old, v_rel_old, collpair->normal, -v_nor_old);
 -		madd_v3_v3v3fl(v_tan_new, v_rel_new, collpair->normal, -v_nor_new);
 -		
 -		bounce = -v_nor_old * restitution;
 -		
 -		repulse = -margin_distance / dt; /* base repulsion velocity in normal direction */
 -		/* XXX this clamping factor is quite arbitrary ...
 -		 * not sure if there is a more scientific approach, but seems to give good results
 -		 */
 -		CLAMP(repulse, 0.0f, 4.0f * bounce);
 -		
 -		if (margin_distance < -epsilon2) {
 -			mul_v3_v3fl(r_impulse, collpair->normal, max_ff(repulse, bounce) - v_nor_new);
 -		}
 -		else {
 -			bounce = 0.0f;
 -			mul_v3_v3fl(r_impulse, collpair->normal, repulse - v_nor_new);
 -		}
 -		
 -		result = true;
 -	}
 -	
 -	return result;
 -}
 -
 -/* Init constraint matrix
 - * This is part of the modified CG method suggested by Baraff/Witkin in
 - * "Large Steps in Cloth Simulation" (Siggraph 1998)
 - */
 -static void cloth_setup_constraints(ClothModifierData *clmd, ColliderContacts *contacts, int totcolliders, float dt)
 -{
 -	Cloth *cloth = clmd->clothObject;
 -	Implicit_Data *data = cloth->implicit;
 -	ClothVertex *verts = cloth->verts;
 -	int numverts = cloth->numverts;
 -	int i, j, v;
 -	
 -	const float ZERO[3] = {0.0f, 0.0f, 0.0f};
 -	
 -	BPH_mass_spring_clear_constraints(data);
 -	
 -	for (v = 0; v < numverts; v++) {
 -		if (verts[v].flags & CLOTH_VERT_FLAG_PINNED) {
 -			/* pinned vertex constraints */
 -			BPH_mass_spring_add_constraint_ndof0(data, v, ZERO); /* velocity is defined externally */
 -		}
 -		
 -		verts[v].impulse_count = 0;
 -	}
 -
 -	for (i = 0; i < totcolliders; ++i) {
 -		ColliderContacts *ct = &contacts[i];
 -		for (j = 0; j < ct->totcollisions; ++j) {
 -			CollPair *collpair = &ct->collisions[j];
 -//			float restitution = (1.0f - clmd->coll_parms->damping) * (1.0f - ct->ob->pd->pdef_sbdamp);
 -			float restitution = 0.0f;
 -			int v = collpair->face1;
 -			float impulse[3];
 -			
 -			/* pinned verts handled separately */
 -			if (verts[v].flags & CLOTH_VERT_FLAG_PINNED)
 -				continue;
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list