mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
144 lines
5.8 KiB
Python
144 lines
5.8 KiB
Python
import os, json
|
|
|
|
from paraview import simple
|
|
from paraview import smtesting
|
|
from paraview import data_exploration as cinema
|
|
|
|
smtesting.ProcessCommandLineArguments()
|
|
work_directory = os.path.join(smtesting.TempDir, 'cinema')
|
|
has_rgbz_view = True
|
|
|
|
try:
|
|
simple.LoadDistributedPlugin('RGBZView', ns=globals())
|
|
except:
|
|
has_rgbz_view = False
|
|
|
|
# === Data to explore and configuration =======================================
|
|
|
|
data_to_explore = simple.Wavelet()
|
|
min = 63.96153259277344
|
|
max = 250.22056579589844
|
|
center_of_rotation = [0.0, 0.0, 0.0]
|
|
rotation_axis = [0.0, 0.0, 1.0]
|
|
angle_steps = (72, 60)
|
|
distance = 60
|
|
lut = simple.GetLookupTableForArray(
|
|
"RTData", 1,
|
|
RGBPoints=[min, 0.23, 0.299, 0.754, (min+max)*0.5, 0.865, 0.865, 0.865, max, 0.706, 0.016, 0.15],
|
|
ColorSpace='Diverging',
|
|
ScalarRangeInitialized=1.0 )
|
|
iso_values = [ ((float(x) * (max-min) * 0.1) + min) for x in range(10)]
|
|
|
|
# === Create analysis =========================================================
|
|
|
|
analysis = cinema.AnalysisManager( work_directory, "Cinema Test", "Test various cinema explorers.")
|
|
analysis.begin()
|
|
|
|
# === SliceExplorer ===========================================================
|
|
|
|
analysis.register_analysis(
|
|
"slice", # id
|
|
"Slice exploration", # title
|
|
"Perform 10 slice along X", # description
|
|
"{sliceColor}_{slicePosition}.jpg", # data structure
|
|
cinema.SliceExplorer.get_data_type())
|
|
nb_slices = 5
|
|
colorByArray = { "RTData": { "lut": lut , "type": 'POINT_DATA'} }
|
|
view = simple.CreateRenderView()
|
|
|
|
fng = analysis.get_file_name_generator("slice")
|
|
exporter = cinema.SliceExplorer(fng, view, data_to_explore, colorByArray, nb_slices)
|
|
exporter.set_analysis(analysis)
|
|
|
|
# Explore
|
|
exporter.UpdatePipeline()
|
|
|
|
# === ContourExplorer + ThreeSixtyImageStackExporter ==========================
|
|
|
|
analysis.register_analysis(
|
|
"contour-360", # id
|
|
"Contour", # title
|
|
"Perform 15 contour", # description
|
|
"{contourBy}/{contourValue}/{theta}_{phi}.jpg", # data structure
|
|
cinema.ThreeSixtyImageStackExporter.get_data_type())
|
|
fng = analysis.get_file_name_generator("contour-360")
|
|
arrayName = ('POINT_DATA', 'RTData')
|
|
view2 = simple.CreateRenderView()
|
|
|
|
cExplorer = cinema.ContourExplorer(fng, data_to_explore, arrayName, [min,max], 15)
|
|
proxy = cExplorer.getContour()
|
|
rep = simple.Show(proxy, view2)
|
|
rep.LookupTable = lut
|
|
rep.ColorArrayName = arrayName
|
|
|
|
exp = cinema.ThreeSixtyImageStackExporter(fng, view2, center_of_rotation, distance, rotation_axis, angle_steps)
|
|
for progress in cExplorer:
|
|
exp.UpdatePipeline()
|
|
|
|
# === ImageResampler ==========================================================
|
|
|
|
analysis.register_analysis(
|
|
"interactive-prober", # id
|
|
"Interactive prober", # title
|
|
"Sample data in image stack for line probing", # description
|
|
"{field}/{slice}.{format}", # data structure
|
|
cinema.ImageResampler.get_data_type())
|
|
fng = analysis.get_file_name_generator("interactive-prober")
|
|
arrays = { "RTData" : lut }
|
|
exp = cinema.ImageResampler(fng, data_to_explore, [21,21,21], arrays)
|
|
exp.UpdatePipeline()
|
|
|
|
|
|
|
|
# === CompositeImageExporter ==================================================
|
|
# CompositeImageExporter(file_name_generator, data_list, colorBy_list, luts, camera_handler, view_size, data_list_pipeline, axisVisibility=1, orientationVisibility=1, format='jpg')
|
|
if has_rgbz_view:
|
|
analysis.register_analysis(
|
|
"composite",
|
|
"Composite rendering",
|
|
"Performing composite on contour",
|
|
'{theta}/{phi}/{filename}', cinema.CompositeImageExporter.get_data_type())
|
|
fng = analysis.get_file_name_generator("composite")
|
|
|
|
# Create pipeline to compose
|
|
contour_values = [ 64.0, 90.6, 117.2, 143.8, 170.4, 197.0, 223.6, 250.2]
|
|
color_type = [('POINT_DATA', "RTData")]
|
|
luts = { "RTData": lut }
|
|
filters = [ data_to_explore ]
|
|
filters_description = [ {'name': 'Wavelet'} ]
|
|
color_by = [ color_type ]
|
|
|
|
for iso_value in contour_values:
|
|
filters.append( simple.Contour( Input=data_to_explore, PointMergeMethod="Uniform Binning", ContourBy = ['POINTS', 'RTData'], Isosurfaces = [iso_value], ComputeScalars = 1 ) )
|
|
color_by.append( color_type )
|
|
filters_description.append({'name': 'iso=%s' % str(iso_value)})
|
|
|
|
|
|
# Data exploration ------------------------------------------------------------
|
|
camera_handler = cinema.ThreeSixtyCameraHandler(fng, None, [ float(r) for r in range(0, 360, 72)], [ float(r) for r in range(-60, 61, 45)], center_of_rotation, rotation_axis, distance)
|
|
exporter = cinema.CompositeImageExporter(fng, filters, color_by, luts, camera_handler, [400,400], filters_description, 0, 0)
|
|
exporter.set_analysis(analysis)
|
|
exporter.UpdatePipeline()
|
|
|
|
# === TODO ====================================================================
|
|
# ThreeSixtyImageStackExporter(file_name_generator, view_proxy, focal_point=[0.0,0.0,0.0], distance=100.0, rotation_axis=[0,0,1], angular_steps=[10,15])
|
|
# LineProber(file_name_generator, data_to_probe, points_series, number_of_points)
|
|
# DataProber(file_name_generator, data_to_probe, points_series, fields)
|
|
# TimeSerieDataProber(file_name_generator, data_to_probe, point_series, fields, time_to_write)
|
|
# === TODO ====================================================================
|
|
|
|
analysis.end()
|
|
|
|
# Print analysis info.json
|
|
analysisInfo = None
|
|
with open(os.path.join(work_directory, 'info.json'), 'r') as json_file:
|
|
analysisInfo = json.load(json_file)
|
|
|
|
print json.dumps(analysisInfo, sort_keys=True, indent=4, separators=(',', ': '))
|
|
|
|
# === Execute embedded test functions =========================================
|
|
|
|
test_dir = os.path.join(smtesting.TempDir, 'cinema-test')
|
|
cinema.test(test_dir)
|
|
cinema.test2(test_dir)
|
|
cinema.test3(test_dir) |