Skip to content

Commit 3e5894f

Browse files
committed
Tweaked a Search Distance Fallback special case and removed some old render code
1 parent a6f76e0 commit 3e5894f

File tree

4 files changed

+16
-40
lines changed

4 files changed

+16
-40
lines changed

kk_bullet_constraints_builder.zip

-413 Bytes
Binary file not shown.

kk_bullet_constraints_builder/builder_prep.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -887,18 +887,19 @@ def calculateContactAreaBasedOnBoundaryBoxesForPair(objA, objB, sDistFallb, qNon
887887
if not qSkipConnect or props.surfaceForced:
888888

889889
### Calculate area based on either the sum of all axis surfaces...
890-
if not qNonManifold:
890+
if not qNonManifold or sDistFallb:
891891
overlapAreaX = overlapY *overlapZ
892892
overlapAreaY = overlapX *overlapZ
893893
overlapAreaZ = overlapX *overlapY
894894
# Add up all contact areas
895895
geoContactAreaB = overlapAreaX +overlapAreaY +overlapAreaZ
896896

897897
### Or calculate contact area based on predefined custom thickness
898-
elif props.surfaceForced:
899-
geoContactAreaB = (overlapX +overlapY +overlapZ) *props.surfaceThickness
900-
else:
901-
geoContactAreaB = 0
898+
if qNonManifold:
899+
if props.surfaceForced:
900+
geoContactAreaB = (overlapX +overlapY +overlapZ) *props.surfaceThickness
901+
elif not sDistFallb:
902+
geoContactAreaB = 0
902903

903904
### Calculate alternative contact area from object dimensions
904905
dimA = objA.dimensions

kk_bullet_constraints_builder/global_vars.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -286,9 +286,6 @@
286286
grpNameFoundation = "Foundation"
287287
materialName = "BCB_Gradient_"
288288

289-
# For monitor event handler
290-
qRenderAnimation = 0 # 0 | Render animation by using render single image function for each frame (doesn't support motion blur, keep it disabled), 1 = regular, 2 = OpenGL
291-
292289
### Consts
293290
pi = 3.1416
294291
pi2 = pi /2

kk_bullet_constraints_builder/monitor.py

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -44,32 +44,6 @@ def monitor_eventHandler(scene):
4444

4545
props = bpy.context.window_manager.bcb
4646

47-
### Render part
48-
if qRenderAnimation:
49-
# Need to disable handlers while rendering, otherwise Blender crashes
50-
bpy.app.handlers.frame_change_pre.remove(monitor_eventHandler)
51-
bpy.app.handlers.frame_change_pre.remove(monitor_stop_eventHandler)
52-
53-
filepathOld = bpy.context.scene.render.filepath
54-
bpy.context.scene.render.filepath += "%04d" %(scene.frame_current -1)
55-
bpy.context.scene.render.image_settings.file_format = 'JPEG'
56-
bpy.context.scene.render.image_settings.quality = 75
57-
58-
# Stupid Blender design hack, enforcing context to be accepted by operators (at this point copy() even throws a warning but works anyway, funny Blender)
59-
contextFix = bpy.context.copy()
60-
print("Note: Please ignore above copy warning, it's a false alarm.")
61-
contextFix["area"] = None
62-
# Render single frame with render settings
63-
if qRenderAnimation == 1: bpy.ops.render.render(contextFix, write_still=True)
64-
# Render single frame in OpenGL mode
65-
elif qRenderAnimation == 2: bpy.ops.render.opengl(contextFix, write_still=True)
66-
67-
bpy.context.scene.render.filepath = filepathOld
68-
69-
# Append handlers again
70-
bpy.app.handlers.frame_change_pre.append(monitor_eventHandler)
71-
bpy.app.handlers.frame_change_pre.append(monitor_stop_eventHandler)
72-
7347
# Only evaluate monitor when official Blender and not Fracture Modifier is in use
7448
if not hasattr(bpy.types.DATA_PT_modifiers, 'FRACTURE') or not asciiExportName in scene.objects:
7549

@@ -361,6 +335,16 @@ def monitor_stop_eventHandler(scene):
361335
for canvas_surface in mod.canvas_settings.canvas_surfaces:
362336
contextFix['active_object'] = obj; contextFix['point_cache'] = canvas_surface.point_cache
363337
bpy.ops.ptcache.bake_from_cache(contextFix)
338+
# When Fracture Modifier is in use
339+
if hasattr(bpy.types.DATA_PT_modifiers, 'FRACTURE') and asciiExportName in scene.objects:
340+
try: objFM = scene.objects[asciiExportName]
341+
except: pass
342+
else:
343+
# Disable Dynamic Paint modifier after baking for a playback performance boost
344+
for mod in objFM.modifiers:
345+
if "Dynamic Paint" in mod.name:
346+
mod.show_render = False
347+
mod.show_viewport = False
364348

365349
### Free all monitor related data
366350
# When official Blender and not Fracture Modifier is in use
@@ -1685,12 +1669,6 @@ def monitor_freeBuffers_fm(scene):
16851669
print("\rWarning: Element has lost its constraint references or the corresponding empties their constraint properties respectively, rebuilding constraints is recommended.")
16861670
print("(%s)" %const.name)
16871671

1688-
### Disable Dynamic Paint modifier after baking for a playback performance boost
1689-
for mod in objFM.modifiers:
1690-
if "Dynamic Paint" in mod.name:
1691-
mod.show_render = False
1692-
mod.show_viewport = False
1693-
16941672
### Damping Region - revert RBs to original dampings
16951673
if "bcb_damps" in bpy.app.driver_namespace:
16961674
### Get damping region object

0 commit comments

Comments
 (0)