Commit: 23614570b4ec5f51cc15d076620b9d3e4f515f04
Author: calra123
Date: Fri Jul 31 13:52:03 2020 +0530
Branches: soc-2020-testing-frameworks
https://developer.blender.org/rB23614570b4ec5f51cc15d076620b9d3e4f515f04
Extended FluidSpec to contain DynamicPaint Spec
FluidSpec is now called FluidDynamicPaintSpec, added test file for
Dynamic Paint
===================================================================
M tests/python/modules/mesh_test.py
A tests/python/physics_dynamic_paint.py
M tests/python/physics_fluid.py
===================================================================
diff --git a/tests/python/modules/mesh_test.py
b/tests/python/modules/mesh_test.py
index 40a99ed5a96..4dc643ba6a3 100644
--- a/tests/python/modules/mesh_test.py
+++ b/tests/python/modules/mesh_test.py
@@ -96,27 +96,27 @@ class PhysicsSpec:
" with parameters: " + str(self.modifier_parameters) + " with
frame end: " + str(self.frame_end)
-class FluidSpec:
+class FluidDyanmicPaintSpec:
"""
- Holds a Fluid modifier and its parameters.
+ Holds a Fluid modifier and a Dynamic Paint modifier and their parameters.
"""
- def __init__(self, modifier_name: str, fluid_type: str,
modifier_parameters: dict, frame_end: int):
+ def __init__(self, modifier_name: str, modifier_type: str, sub_type: str,
modifier_parameters: dict, frame_end: int):
"""
- Constructs a Fluid spec.
+ Constructs a Fluid/Dynamic Paint spec.
:param modifier_name: str - name of object modifier, e.g. "FLUID"
- :param fluid_type: str - type of fluid, e.g. "Domain"
+ :param sub_type: str - type of fluid, e.g. "Domain"
:param modifier_parameters: dict - {name : val} dictionary giving
modifier parameters, e.g. {"use_mesh" : True}
:param frame_end:int - the frame at which the modifier is "applied"
"""
self.modifier_name = modifier_name
- self.fluid_type = fluid_type
+ self.sub_type = sub_type
self.modifier_parameters = modifier_parameters
- self.modifier_type = "FLUID"
+ self.modifier_type = modifier_type
self.frame_end = frame_end
def __str__(self):
- return "Fluid Modifier: " + self.modifier_name + " of type " +
self.modifier_type + \
+ return "Modifier: " + self.modifier_name + " of type " +
self.modifier_type + \
" with parameters: " + str(self.modifier_parameters) + " with
frame end: " + str(self.frame_end)
class ParticleSystemSpec:
@@ -231,10 +231,10 @@ class MeshTest:
for operation in operations_stack:
if not (isinstance(operation, ModifierSpec) or
isinstance(operation, OperatorSpec) or isinstance(operation, PhysicsSpec)
or isinstance(operation, ObjectOperatorSpec) or
isinstance(operation, DeformModifierSpec)
- or isinstance(operation, FluidSpec) or
isinstance(operation, ParticleSystemSpec)):
+ or isinstance(operation, FluidDyanmicPaintSpec) or
isinstance(operation, ParticleSystemSpec)):
raise ValueError("Expected operation of type {} or {} or {} or
{} or {} or {}. Got {}".
format(type(ModifierSpec),
type(OperatorSpec), type(PhysicsSpec),
- type(DeformModifierSpec),
type(FluidSpec), type(ParticleSystemSpec),
+ type(DeformModifierSpec),
type(FluidDyanmicPaintSpec), type(ParticleSystemSpec),
type(operation)))
self.operations_stack = operations_stack
self.apply_modifier = apply_modifiers
@@ -398,48 +398,72 @@ class MeshTest:
if self.apply_modifier:
self._apply_modifier(test_object, physics_spec.modifier_name)
- def _apply_fluid_settings(self, test_object, fluid_spec: FluidSpec):
+ def _apply_fluid_settings(self, test_object, fluid_paint_spec:
FluidDyanmicPaintSpec):
"""
Apply Fluid settings to test objects.
"""
scene = bpy.context.scene
scene.frame_set(1)
- modifier = test_object.modifiers.new(fluid_spec.modifier_name,
- fluid_spec.modifier_type)
-
- modifier.fluid_type = fluid_spec.fluid_type
-
- if str(fluid_spec.fluid_type) == "DOMAIN":
- physics_setting = modifier.domain_settings
- elif str(fluid_spec.fluid_type) == "FLOW":
- physics_setting = modifier.flow_settings
- elif str(fluid_spec.fluid_type) == "EFFECTOR":
- physics_setting = modifier.effector_settings
-
+ modifier = test_object.modifiers.new(fluid_paint_spec.modifier_name,
+ fluid_paint_spec.modifier_type)
+
+ physics_setting = None
+ physics_canvas_surface_settings = None
+
+ if fluid_paint_spec.modifier_type == "FLUID":
+ modifier.fluid_type = fluid_paint_spec.sub_type
+ if fluid_paint_spec.sub_type == "DOMAIN":
+ physics_setting = modifier.domain_settings
+ elif fluid_paint_spec.sub_type == "FLOW":
+ physics_setting = modifier.flow_settings
+ elif fluid_paint_spec.sub_type == "EFFECTOR":
+ physics_setting = modifier.effector_settings
+
+ elif fluid_paint_spec.modifier_type == "DYNAMIC_PAINT":
+ modifier.ui_type = fluid_paint_spec.sub_type
+
+ if fluid_paint_spec.sub_type == "CANVAS":
+ bpy.ops.dpaint.type_toggle(type='CANVAS')
+ physics_setting = modifier.canvas_settings
+ elif fluid_paint_spec.sub_type == "BRUSH":
+ bpy.ops.dpaint.type_toggle(type='BRUSH')
+ physics_setting = modifier.brush_settings
if self.verbose:
print("Created modifier '{}' of type '{}'.".
- format(fluid_spec.modifier_name, fluid_spec.modifier_type))
+ format(fluid_paint_spec.modifier_name,
fluid_paint_spec.modifier_type))
- for param_name in fluid_spec.modifier_parameters:
+ for param_name in fluid_paint_spec.modifier_parameters:
try:
- setattr(physics_setting, param_name,
fluid_spec.modifier_parameters[param_name])
+ setattr(physics_setting, param_name,
fluid_paint_spec.modifier_parameters[param_name])
if self.verbose:
print("\t set parameter '{}' with value '{}'".
- format(param_name,
fluid_spec.modifier_parameters[param_name]))
+ format(param_name,
fluid_paint_spec.modifier_parameters[param_name]))
except AttributeError:
- # Clean up first
- bpy.ops.object.delete()
- raise AttributeError("Modifier '{}' has no parameter named
'{}'".
- format(fluid_spec.modifier_type,
param_name))
+ try:
+ physics_canvas_surface_settings =
physics_setting.canvas_surfaces.active
+ setattr(physics_canvas_surface_settings, param_name,
fluid_paint_spec.modifier_parameters[param_name])
+ if self.verbose:
+ print("\t set parameter '{}' with value '{}'".
+ format(param_name,
fluid_paint_spec.modifier_parameters[param_name]))
+ except AttributeError:
+ # Clean up first
+ bpy.ops.object.delete()
+ raise AttributeError("Modifier '{}' has no parameter named
'{}'".
+
format(fluid_paint_spec.modifier_type, param_name))
+
+ if fluid_paint_spec.modifier_type == "FLUID":
+ bpy.ops.fluid.bake_all()
+ elif fluid_paint_spec.modifier_type == "DYNAMIC_PAINT":
+ override = {'scene': scene, 'active_object': test_object,
'point_cache': physics_canvas_surface_settings.point_cache}
+ bpy.ops.ptcache.bake(override, bake=True)
- bpy.ops.fluid.bake_all()
# Jump to the frame specified by user to apply the modifier.
- scene.frame_set(fluid_spec.frame_end)
+ scene.frame_set(fluid_paint_spec.frame_end)
if self.apply_modifier:
- self._apply_modifier(test_object, fluid_spec.modifier_name)
+ self._apply_modifier(test_object, fluid_paint_spec.modifier_name)
def _apply_particle_system(self, test_object, particle_sys_spec:
ParticleSystemSpec):
"""
@@ -602,7 +626,7 @@ class MeshTest:
elif isinstance(operation, DeformModifierSpec):
self._apply_modifier_operator(evaluated_test_object, operation)
- elif isinstance(operation, FluidSpec):
+ elif isinstance(operation, FluidDyanmicPaintSpec):
self._apply_fluid_settings(evaluated_test_object, operation)
elif isinstance(operation, ParticleSystemSpec):
@@ -611,7 +635,7 @@ class MeshTest:
else:
raise ValueError("Expected operation of type {} or {} or {} or
{} or {} or {}. Got {}".
format(type(ModifierSpec),
type(OperatorSpec), type(PhysicsSpec),
- type(ObjectOperatorSpec),
type(FluidSpec), type(ParticleSystemSpec), type(operation)))
+ type(ObjectOperatorSpec),
type(FluidDyanmicPaintSpec), type(ParticleSystemSpec), type(operation)))
# Compare resulting mesh with expected one.
if self.verbose:
diff --git a/tests/python/physics_fluid.py
b/tests/python/physics_dynamic_paint.py
similarity index 74%
copy from tests/python/physics_fluid.py
copy to tests/python/physics_dynamic_paint.py
index 34809e7d801..566d6f530b0 100644
--- a/tests/python/physics_fluid.py
+++ b/tests/python/physics_dynamic_paint.py
@@ -30,22 +30,22 @@ from modules.mesh_test import ModifierTest, FluidSpec
def main():
test = [
- ["FluidLiquid", "test", "exp",
- [FluidSpec('fluid_liquid', 'DOMAIN', {'domain_type': 'LIQUID',
'use_mesh': True, 'cache_type': 'ALL',
- 'cache_frame_end': 20}, 20)]],
+ ["DynamicPaint", "test", "exp",
+ [FluidSpec('dynamic_paint', 'DYNAMIC_PAINT', 'CANVAS',
{'surface_type': 'WAVE', 'frame_end': 50}, 50)]],
+
]
- fluid_test = ModifierTest(test)
+ dynamic_paint_test = ModifierTest(test)
command = list(sys.argv)
for i, cmd in enumerate(command):
if cmd == "--run-all-tests":
- fluid_test.apply_modifiers = True
- fluid_test.run_all_tests()
+ dynamic_paint_test.apply_modifiers = True
+ dynamic_paint_test.run_all_tests()
@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs