Commit: 86da0f47498fad104421aa99a285e163017ab083 Author: Martin Felke Date: Sat Aug 12 22:48:17 2017 +0200 Branches: fracture_modifier https://developer.blender.org/rB86da0f47498fad104421aa99a285e163017ab083
Merge remote-tracking branch 'refs/remotes/origin/blender-v2.79-release' into fracture_modifier Conflicts: build_files/buildbot/slave_compile.py build_files/cmake/buildinfo.cmake build_files/cmake/config/blender_release.cmake build_files/cmake/macros.cmake build_files/cmake/packaging.cmake build_files/cmake/platform/platform_win32_msvc.cmake doc/python_api/sphinx_doc_gen.py doc/python_api/sphinx_doc_update.py intern/atomic/atomic_ops.h intern/atomic/intern/atomic_ops_ext.h intern/atomic/intern/atomic_ops_unix.h intern/cycles/CMakeLists.txt intern/cycles/blender/addon/properties.py intern/cycles/blender/addon/ui.py intern/cycles/blender/blender_mesh.cpp intern/cycles/blender/blender_object.cpp intern/cycles/blender/blender_object_cull.cpp intern/cycles/blender/blender_object_cull.h intern/cycles/blender/blender_python.cpp intern/cycles/blender/blender_session.cpp intern/cycles/blender/blender_session.h intern/cycles/blender/blender_shader.cpp intern/cycles/blender/blender_util.h intern/cycles/bvh/bvh.cpp intern/cycles/bvh/bvh.h intern/cycles/bvh/bvh_build.cpp intern/cycles/bvh/bvh_node.h intern/cycles/device/device.cpp intern/cycles/device/device.h intern/cycles/device/device_cpu.cpp intern/cycles/device/device_cuda.cpp intern/cycles/device/device_opencl.cpp intern/cycles/device/device_task.cpp intern/cycles/device/opencl/opencl.h intern/cycles/device/opencl/opencl_base.cpp intern/cycles/device/opencl/opencl_mega.cpp intern/cycles/device/opencl/opencl_split.cpp intern/cycles/device/opencl/opencl_util.cpp intern/cycles/kernel/bvh/bvh.h intern/cycles/kernel/bvh/bvh_nodes.h intern/cycles/kernel/bvh/bvh_shadow_all.h intern/cycles/kernel/bvh/bvh_volume_all.h intern/cycles/kernel/bvh/qbvh_shadow_all.h intern/cycles/kernel/bvh/qbvh_subsurface.h intern/cycles/kernel/bvh/qbvh_traversal.h intern/cycles/kernel/bvh/qbvh_volume.h intern/cycles/kernel/bvh/qbvh_volume_all.h intern/cycles/kernel/closure/bsdf.h intern/cycles/kernel/closure/bsdf_microfacet.h intern/cycles/kernel/closure/bsdf_microfacet_multi.h intern/cycles/kernel/closure/bsdf_microfacet_multi_impl.h intern/cycles/kernel/geom/geom.h intern/cycles/kernel/geom/geom_curve.h intern/cycles/kernel/geom/geom_motion_curve.h intern/cycles/kernel/geom/geom_motion_triangle_intersect.h intern/cycles/kernel/geom/geom_motion_triangle_shader.h intern/cycles/kernel/geom/geom_object.h intern/cycles/kernel/geom/geom_triangle.h intern/cycles/kernel/geom/geom_triangle_intersect.h intern/cycles/kernel/geom/geom_volume.h intern/cycles/kernel/kernel_accumulate.h intern/cycles/kernel/kernel_bake.h intern/cycles/kernel/kernel_compat_cpu.h intern/cycles/kernel/kernel_compat_cuda.h intern/cycles/kernel/kernel_emission.h intern/cycles/kernel/kernel_image_opencl.h intern/cycles/kernel/kernel_light.h intern/cycles/kernel/kernel_passes.h intern/cycles/kernel/kernel_path.h intern/cycles/kernel/kernel_path_branched.h intern/cycles/kernel/kernel_path_common.h intern/cycles/kernel/kernel_path_surface.h intern/cycles/kernel/kernel_path_volume.h intern/cycles/kernel/kernel_random.h intern/cycles/kernel/kernel_shader.h intern/cycles/kernel/kernel_shadow.h intern/cycles/kernel/kernel_subsurface.h intern/cycles/kernel/kernel_textures.h intern/cycles/kernel/kernel_types.h intern/cycles/kernel/kernel_volume.h intern/cycles/kernel/kernels/cpu/kernel_avx.cpp intern/cycles/kernel/kernels/cpu/kernel_avx2.cpp intern/cycles/kernel/kernels/opencl/kernel.cl intern/cycles/kernel/split/kernel_background_buffer_update.h intern/cycles/kernel/split/kernel_data_init.h intern/cycles/kernel/split/kernel_direct_lighting.h intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h intern/cycles/kernel/split/kernel_next_iteration_setup.h intern/cycles/kernel/split/kernel_scene_intersect.h intern/cycles/kernel/split/kernel_split_common.h intern/cycles/kernel/svm/svm_displace.h intern/cycles/kernel/svm/svm_image.h intern/cycles/kernel/svm/svm_tex_coord.h intern/cycles/render/buffers.cpp intern/cycles/render/graph.cpp intern/cycles/render/graph.h intern/cycles/render/image.cpp intern/cycles/render/image.h intern/cycles/render/mesh_subdivision.cpp intern/cycles/render/osl.cpp intern/cycles/render/session.cpp intern/cycles/render/session.h intern/cycles/render/svm.cpp intern/cycles/render/svm.h intern/cycles/render/tile.cpp intern/cycles/render/tile.h intern/cycles/util/util_atomic.h intern/cycles/util/util_boundbox.h intern/cycles/util/util_half.h intern/cycles/util/util_image.h intern/cycles/util/util_image_impl.h intern/cycles/util/util_math.h intern/cycles/util/util_path.cpp intern/cycles/util/util_progress.h intern/cycles/util/util_simd.h intern/cycles/util/util_task.cpp intern/cycles/util/util_types.h intern/ghost/intern/GHOST_SystemCocoa.mm make.bat release/datafiles/locale release/scripts/addons release/scripts/presets/interface_theme/24x_blues.xml release/scripts/presets/interface_theme/flatty_light.xml release/scripts/startup/bl_operators/wm.py release/scripts/startup/bl_ui/space_userpref.py source/blender/blenkernel/BKE_library_query.h source/blender/blenkernel/BKE_sca.h source/blender/blenkernel/intern/DerivedMesh.c source/blender/blenkernel/intern/armature.c source/blender/blenkernel/intern/library.c source/blender/blenkernel/intern/library_query.c source/blender/blenkernel/intern/mesh.c source/blender/blenkernel/intern/rigidbody.c source/blender/blenkernel/intern/sca.c source/blender/blenkernel/intern/subsurf_ccg.c source/blender/blenlib/intern/task.c source/blender/blenloader/intern/readfile.c source/blender/blenloader/intern/versioning_270.c source/blender/blenloader/intern/writefile.c source/blender/collada/ArmatureImporter.cpp source/blender/depsgraph/DEG_depsgraph_build.h source/blender/depsgraph/intern/builder/deg_builder.cc source/blender/depsgraph/intern/builder/deg_builder_cycle.cc source/blender/depsgraph/intern/builder/deg_builder_nodes.cc source/blender/depsgraph/intern/builder/deg_builder_nodes.h source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc source/blender/depsgraph/intern/builder/deg_builder_relations.cc source/blender/depsgraph/intern/builder/deg_builder_relations.h source/blender/depsgraph/intern/builder/deg_builder_relations_keys.cc source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc source/blender/depsgraph/intern/depsgraph.h source/blender/depsgraph/intern/depsgraph_build.cc source/blender/depsgraph/intern/depsgraph_eval.cc source/blender/depsgraph/intern/eval/deg_eval.cc source/blender/depsgraph/intern/eval/deg_eval_debug.cc source/blender/depsgraph/intern/nodes/deg_node.cc source/blender/depsgraph/intern/nodes/deg_node.h source/blender/depsgraph/intern/nodes/deg_node_component.cc source/blender/depsgraph/intern/nodes/deg_node_component.h source/blender/depsgraph/intern/nodes/deg_node_operation.cc source/blender/depsgraph/util/deg_util_foreach.h source/blender/editors/animation/anim_channels_defines.c source/blender/editors/animation/anim_draw.c source/blender/editors/armature/pose_transform.c source/blender/editors/interface/interface_layout.c source/blender/editors/object/object_modifier.c source/blender/editors/space_outliner/outliner_edit.c source/blender/editors/transform/transform_snap_object.c source/blender/gpu/shaders/gpu_shader_material.glsl source/blender/makesdna/DNA_ID.h source/blender/makesdna/DNA_modifier_types.h source/blender/makesdna/DNA_rigidbody_types.h source/blender/makesdna/DNA_userdef_types.h source/blender/makesrna/intern/rna_ID.c source/blender/makesrna/intern/rna_main.c source/blender/makesrna/intern/rna_main_api.c source/blender/makesrna/intern/rna_mesh_api.c source/blender/makesrna/intern/rna_modifier.c source/blender/makesrna/intern/rna_render.c source/blender/makesrna/intern/rna_rigidbody.c source/blender/makesrna/intern/rna_userdef.c source/blender/makesrna/intern/rna_wm_api.c source/blender/modifiers/MOD_modifiertypes.h source/blender/modifiers/intern/MOD_boolean.c source/blender/modifiers/intern/MOD_normal_edit.c source/blender/modifiers/intern/MOD_util.c source/blender/nodes/shader/nodes/node_shader_tex_brick.c source/blender/python/intern/bpy_rna_id_collection.c source/blender/render/extern/include/RE_pipeline.h source/blender/render/intern/source/render_result.c source/creator/CMakeLists.txt tests/gtests/CMakeLists.txt tests/gtests/blenlib/BLI_string_test.cc tests/python/CMakeLists.txt =================================================================== =================================================================== diff --cc extern/CMakeLists.txt index efe553fa375,f7e98525b8b..f040dc67aa4 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@@ -103,9 -99,10 +103,11 @@@ if(WITH_LIBMV endif() if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING)) - add_subdirectory(gflags) + if (NOT WITH_SYSTEM_GFLAGS) + add_subdirectory(gflags) + endif() add_subdirectory(glog) + endif() if(WITH_GTESTS) diff --cc intern/cycles/bvh/bvh_node.cpp index 67580e1bc7b,4237c62ab5b..048f9e987dd --- a/intern/cycles/bvh/bvh_node.cpp +++ b/intern/cycles/bvh/bvh_node.cpp @@@ -170,25 -171,25 +171,38 @@@ uint BVHNode::update_visibility( BVHNode *child0 = inner->children[0]; BVHNode *child1 = inner->children[1]; - m_visibility = child0->update_visibility()|child1->update_visibility(); + visibility = child0->update_visibility()|child1->update_visibility(); } - return m_visibility; + return visibility; + } + + void BVHNode::update_time() + { + if(!is_leaf()) { + InnerNode *inner = (InnerNode*)this; + BVHNode *child0 = inner->children[0]; + BVHNode *child1 = inner->children[1]; + child0->update_time(); + child1->update_time(); + time_from = min(child0->time_from, child1->time_from); + time_to = max(child0->time_to, child1->time_to); + } } +void BVHNode::update_time() +{ + if(!is_leaf()) { + InnerNode *inner = (InnerNode*)this; + BVHNode *child0 = inner->children[0]; + BVHNode *child1 = inner->children[1]; + child0->update_time(); + child1->update_time(); + m_time_from = min(child0->m_time_from, child1->m_time_from); + m_time_to = max(child0->m_time_to, child1->m_time_to); + } +} + /* Inner Node */ void InnerNode::print(int depth) const diff --cc release/scripts/startup/bl_operators/presets.py index fb9fe0e8b7d,fdacf24f6e0..d4f5639fd76 --- a/release/scripts/startup/bl_operators/presets.py +++ b/release/scripts/startup/bl_operators/presets.py @@@ -784,3 -680,26 +784,26 @@@ class AddPresetUnitsLength(AddPresetBas ] preset_subdir = "units_length" + + + classes = ( + AddPresetCamera, + AddPresetCloth, + AddPresetFluid, + AddPresetHairDynamics, + AddPresetInteraction, + AddPresetInterfaceTheme, + AddPresetKeyconfig, + AddPresetNodeColor, + AddPresetOperator, + AddPresetRender, + AddPresetSSS, + AddPresetSafeAreas, + AddPresetSunSky, + AddPresetTrackingCamera, + AddPresetTrackingSettings, + AddPresetTrackingTrackColor, + AddPresetUnitsLength, + ExecutePreset, + WM_MT_operator_presets, -) ++) diff --cc source/blender/blenkernel/intern/rigidbody.c index 99a60f2a6ae,e8c0cf53d0b..51117551a3e --- a/source/blender/blenkernel/intern/rigidbody.c +++ b/source/blender/blenkernel/intern/rigidbody.c @@@ -50,9 -46,8 +50,10 @@@ # include "RBI_api.h" #endif +#include "DNA_fracture_types.h" + #include "DNA_ID.h" #include "DNA_group_types.h" +#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" #include "DNA_object_force.h" @@@ -882,35 -974,15 +898,35 @@@ void BKE_rigidbody_world_groups_relink( void BKE_rigidbody_world_id_loop(RigidBodyWorld *rbw, RigidbodyWorldIDFunc func, void *userdata) { + GroupObject *go; + - func(rbw, (ID **)&rbw->group, userdata, IDWALK_NOP); - func(rbw, (ID **)&rbw->constraints, userdata, IDWALK_NOP); - func(rbw, (ID **)&rbw->effector_weights->group, userdata, IDWALK_NOP); + func(rbw, (ID **)&rbw->group, userdata, IDWALK_CB_NOP); + func(rbw, (ID **)&rbw->constraints, userdata, IDWALK_CB_NOP); + func(rbw, (ID **)&rbw->effector_weights->group, userdata, IDWALK_CB_NOP); + /* in regular blender one rigidbody is equivalent to one object, but in FM build you can have more + * rigidbodies in the world than objects in the object array... thats why loop over the group of objects + * of the rigidbody world... the rbw->objects array would contain group objects only anyway, also dont forget + * regular constraints if there are any */ + + /* if (rbw->objects) { int i; for (i = 0; i < rbw->numbodies; i++) { - func(rbw, (ID **)&rbw->objects[i], userdata, IDWALK_NOP); + func(rbw, (ID **)&rbw->objects[i], userdata, IDWALK_CB_NOP); } + }*/ + + if (rbw->group) { + for (go = rbw->group->gobject.first; go; go = go->next) { + func(rbw, (ID **)&go->ob, userdata, IDWALK_NOP); + } + } + + if (rbw->constraints) { + for (go = rbw->constraints->gobject.first; go; go = go->next) { + func(rbw, (ID **)&go->ob, userdata, IDWALK_NOP); + } } } @@@ -1961,38 -1482,61 +1983,72 @@@ void BKE_rigidbody_sync_transforms(Rigi } } -/* Used when canceling transforms - return rigidbody and object to initial states */ -void BKE_rigidbody_aftertrans_update(Object *ob, float loc[3], float rot[3], float quat[4], float rotAxis[3], float rotAngle) +static void do_reset_rigidbody(RigidBodyOb *rbo, Object *ob, MeshIsland* mi, float loc[3], + float rot[3], float quat[4], float rotAxis[3], float rotAngle) { + RigidBodyOb *rbo = ob->rigidbody_object; + bool correct_delta = !(rbo->flag & RBO_FLAG_KINEMATIC || rbo->type == RBO_TYPE_PASSIVE); + /* return rigid body and object to their initial states */ copy_v3_v3(rbo->pos, ob->loc); + if (mi) + add_v3_v3(rbo->pos, mi->centroid); copy_v3_v3(ob->loc, loc); + if (correct_delta) { + add_v3_v3(rbo->pos, ob->dloc); + } + if (ob->rotmode > 0) { - eulO_to_quat(rbo->orn, ob->rot, ob->rotmode); + float qt[4]; + eulO_to_quat(qt, ob->rot, ob->rotmode); + + if (correct_delta) { + float dquat[4]; + eulO_to_quat(dquat, ob->drot, ob->rotmode); + + mul_qt_qtqt(rbo->orn, dquat, qt); + } + else { + copy_qt_qt(rbo->orn, qt); + } + if (mi) - mul_qt_qtqt(rbo->orn, rbo->orn, mi->rot); ++ mul_qt_qtqt(rbo->orn, qt, mi->rot); + copy_v3_v3(ob->rot, rot); } else if (ob->rotmode == ROT_MODE_AXISANGLE) { - axis_angle_to_quat(rbo->orn, ob->rotAxis, ob->rotAngle); + float qt[4]; + axis_angle_to_quat(qt, ob->rotAxis, ob->rotAngle); + + if (correct_delta) { + float dquat[4]; + axis_angle_to_quat(dquat, ob->drotAxis, ob->drotAngle); + + mul_qt_qtqt(rbo->orn, dquat, qt); + } + else { + copy_qt_qt(rbo->orn, qt); + } + if (mi) - mul_qt_qtqt(rbo->orn, rbo->orn, mi->rot); ++ mul_qt_qtqt(rbo->orn, qt, mi->rot); + copy_v3_v3(ob->rotAxis, rotAxis); ob->rotAngle = rotAngle; } else { - copy_qt_qt(rbo->orn, ob->quat); + if (correct_delta) { + mul_qt_qtqt(rbo->orn, ob->dquat, ob->quat); + } + else { + copy_qt_qt(rbo->orn, ob->quat); + } + if (mi) - mul_qt_qtqt(rbo->orn, rbo->orn, mi->rot); ++ mul_qt_qtqt(rbo->orn, qt, mi->rot); + copy_qt_qt(ob->quat, quat); } @@@ -2122,40 -1600,8 +2178,40 @@@ void BKE_rigidbody_do_simulation(Scene BKE_ptcache_id_time(&pid, scene, ctime, &startframe, &endframe, NULL); cache = rbw->pointcache; + /*trigger dynamic update*/ + if (rbw->flag & RBW_FLAG_OBJECT_CHANGED) + { + rbw->flag &= ~RBW_FLAG_OBJECT_CHANGED; + was_changed = rbw->flag & RBW_FLAG_REFRESH_MODIFIERS; + rbw->flag &= ~RBW_FLAG_REFRESH_MODIFIERS; + //if (!(cache->flag & PTCACHE_BAKED)) + { + bool baked = cache->flag & PTCACHE_BAKED; + bool from_cache = cache->last_exact > cache->simframe; + if ((from_cache || baked) && ctime > startframe + 1) + { + /* dont mess with baked data */ + rigidbody_update_simulation(scene, rbw, true); + } + } + //rbw->flag &= ~RBW_FLAG_REFRESH_MODIFIERS; + } + + if (ctime <= startframe) { + /* rebuild constraints */ + rbw->flag |= RBW_FLAG_REBUILD_CONSTRAINTS; + + rbw->ltime = startframe; + if (rbw->flag & RBW_FLAG_OBJECT_CHANGED) + { /* flag modifier refresh at their next execution XXX TODO -> still used ? */ + rbw->flag |= RBW_FLAG_REFRESH_MODIFIERS; + rbw->flag &= ~RBW_FLAG_OBJECT_CHANGED; + rigidbody_update_simulation(scene, rbw, true); + } + return; + } /* make sure we don't go out of cache frame range */ - else if (ctime > endframe) { + if (ctime > endframe) { ctime = endframe; } @@@ -2177,21 -1615,14 +2233,25 @@@ // RB_TODO deal with interpolated, old and baked results bool can_simulate = (ctime == rbw->ltime + 1) && !(cache->flag & PTCACHE_BAKED); + if (cache->flag & PTCACHE_OUTDATED || cache->last_exact == 0) { + rbw->ltime = cache->startframe; + } + if (BKE_ptcache_read(&pid, ctime, can_simulate)) { BKE_ptcache_validate(cache, (int)ctime); + + rbw->ltime = ctime; + return; } + else if (rbw->ltime == startframe) + { + /*bool did_it = */restoreKinematic(rbw); + //if (did_it) + + //make 1st run like later runs... hack... + rigidbody_update_simulation(scene, rbw, true); + } /* advance simulation, we can only step one frame forward */ if (can_simulate) { diff --cc source/blender/blenloader/intern/readfile.c index 64c49f01d69,f224f0b5633..78df9d00501 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@@ -9110,9 -8713,19 +9252,21 @@@ BlendFileData *blo_read_file_internal(F lib_link_all(fd, bfd->main); + fix_fracture_image_hack(bfd->main); + - //do_versions_after_linking(fd, NULL, bfd->main); // XXX: not here (or even in this function at all)! this causes crashes on many files - Aligorith (July 04, 2010) + /* Skip in undo case. */ + if (fd->memfile == NULL) { + /* Yep, second splitting... but this is a very cheap operation, so no big deal. */ + blo_split_main(&mainlist, bfd->main); + for (Main *mainvar = mainlist.first; mainvar; mainvar = mainvar->next) { + BLI_assert(mainvar->versionfile != 0); + do_versions_after_linking(mainvar); + } + blo_join_main(&mainlist); + } + + BKE_main_id_tag_all(bfd->main, LIB_TAG_NEW, false); + lib_verify_nodetree(bfd->main, true); fix_relpaths_library(fd->relabase, bfd->main); /* make all relative paths, relative to the open blend file */ diff --cc source/blender/blenloader/intern/writefile.c index 631f01241ba,ee9665dc834..4439cf99ad0 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloa @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs