我想使用网格和标量值的低数据在vtk(python)中进行体绘制。
我拥有的数据如下所示
#{
# "Field Quantity": "p(x,y,z,f)"
# "Field Quantity Units": "Pa"
# "Snapshot Quantity": "Frequency"
# "Snapshot Value": 10000
# "Snapshot Units": "Hz"
# "Column 1 Quantity": "x"
# "Column 1 Units": "m"
# "Column 2 Quantity": "y"
# "Column 2 Units": "m"
# "Column 3 Quantity": "z"
# "Column 3 Units": "m"
# "Column 4-5 Quantity": "Re/Im Pressure"
# "Column 4-5 Units": ""
# "Number Rows": 48
#}
-2.5000000000e-003 -2.5000000000e-003 1.5000000000e-003 8.9377240003e-020 3.8721174272e-020
-1.5000000000e-003 -2.5000000000e-003 1.5000000000e-003 -9.1717825094e-020 -3.9798318526e-020
-5.0000000000e-004 -2.5000000000e-003 1.5000000000e-003 9.1171769567e-020 4.0357725265e-020
5.0000000000e-004 -2.5000000000e-003 1.5000000000e-003 -8.9922526510e-020 -3.8161699679e-020
-2.5000000000e-003 -1.5000000000e-003 1.5000000000e-003 9.0017374399e-020 3.8911280410e-020
-1.5000000000e-003 -1.5000000000e-003 1.5000000000e-003 -9.2372396377e-020 -3.9998715954e-020
-5.0000000000e-004 -1.5000000000e-003 1.5000000000e-003 9.1826276227e-020 4.0557825425e-020
5.0000000000e-004 -1.5000000000e-003 1.5000000000e-003 -9.0563145582e-020 -3.8351773505e-020
-2.5000000000e-003 -5.0000000000e-004 1.5000000000e-003 9.0017820301e-020 3.8911018685e-020
-1.5000000000e-003 -5.0000000000e-004 1.5000000000e-003 -9.2372545011e-020 -3.9998454229e-020
-5.0000000000e-004 -5.0000000000e-004 1.5000000000e-003 9.1826315001e-020 4.0557818963e-020
5.0000000000e-004 -5.0000000000e-004 1.5000000000e-003 -9.0562932325e-020 -3.8351886597e-020
-2.5000000000e-003 5.0000000000e-004 1.5000000000e-003 8.9376878111e-020 3.8721167810e-020
-1.5000000000e-003 5.0000000000e-004 1.5000000000e-003 -9.1717663535e-020 -3.9798851670e-020
-5.0000000000e-004 5.0000000000e-004 1.5000000000e-003 9.1171659707e-020 4.0357857743e-020
5.0000000000e-004 5.0000000000e-004 1.5000000000e-003 -8.9922416650e-020 -3.8161906474e-020
-2.5000000000e-003 -2.5000000000e-003 2.5000000000e-003 8.9725437804e-020 3.8824497532e-020
-1.5000000000e-003 -2.5000000000e-003 2.5000000000e-003 -9.2073900498e-020 -3.9907483749e-020
-5.0000000000e-004 -2.5000000000e-003 2.5000000000e-003 9.1527657564e-020 4.0466754778e-020
5.0000000000e-004 -2.5000000000e-003 2.5000000000e-003 -9.0271053891e-020 -3.8265142492e-020
-2.5000000000e-003 -1.5000000000e-003 2.5000000000e-003 9.0368493182e-020 3.9015298373e-020
-1.5000000000e-003 -1.5000000000e-003 2.5000000000e-003 -9.2731211817e-020 -4.0107881177e-020
-5.0000000000e-004 -1.5000000000e-003 2.5000000000e-003 9.2184755625e-020 4.0667446243e-020
5.0000000000e-004 -1.5000000000e-003 2.5000000000e-003 -9.0914167430e-020 -3.8455775312e-020
-2.5000000000e-003 -5.0000000000e-004 2.5000000000e-003 9.0368480257e-020 3.9015194975e-020
-1.5000000000e-003 -5.0000000000e-004 2.5000000000e-003 -9.2730888700e-020 -4.0107984575e-020
-5.0000000000e-004 -5.0000000000e-004 2.5000000000e-003 9.2184787937e-020 4.0667200674e-020
5.0000000000e-004 -5.0000000000e-004 2.5000000000e-003 -9.0914225591e-020 -3.8455720382e-020
-2.5000000000e-003 5.0000000000e-004 2.5000000000e-003 8.9725754459e-020 3.8824584774e-020
-1.5000000000e-003 5.0000000000e-004 2.5000000000e-003 -9.2073939272e-020 -3.9907257567e-020
-5.0000000000e-004 5.0000000000e-004 2.5000000000e-003 9.1527748036e-020 4.0466509209e-020
5.0000000000e-004 5.0000000000e-004 2.5000000000e-003 -9.0271047429e-020 -3.8265126336e-020
-2.5000000000e-003 -2.5000000000e-003 3.5000000000e-003 8.9376981509e-020 3.8721439229e-020
-1.5000000000e-003 -2.5000000000e-003 3.5000000000e-003 -9.1717960803e-020 -3.9798441311e-020
-5.0000000000e-004 -2.5000000000e-003 3.5000000000e-003 9.1171452912e-020 4.0357815738e-020
5.0000000000e-004 -2.5000000000e-003 3.5000000000e-003 -8.9922507123e-020 -3.8161783690e-020
-2.5000000000e-003 -1.5000000000e-003 3.5000000000e-003 9.0017632893e-020 3.8911241636e-020
-1.5000000000e-003 -1.5000000000e-003 3.5000000000e-003 -9.2372435151e-020 -3.9998505928e-020
-5.0000000000e-004 -1.5000000000e-003 3.5000000000e-003 9.1826114668e-020 4.0557731721e-020
5.0000000000e-004 -1.5000000000e-003 3.5000000000e-003 -9.0562912938e-020 -3.8351615178e-020
-2.5000000000e-003 -5.0000000000e-004 3.5000000000e-003 9.0017445485e-020 3.8911209325e-020
-1.5000000000e-003 -5.0000000000e-004 3.5000000000e-003 -9.2372305904e-020 -3.9998441305e-020
-5.0000000000e-004 -5.0000000000e-004 3.5000000000e-003 9.1826256840e-020 4.0557844812e-020
5.0000000000e-004 -5.0000000000e-004 3.5000000000e-003 -9.0563074496e-020 -3.8352038462e-020
-2.5000000000e-003 5.0000000000e-004 3.5000000000e-003 8.9377091369e-020 3.8721109649e-020
-1.5000000000e-003 5.0000000000e-004 3.5000000000e-003 -9.1717986653e-020 -3.9798460698e-020
-5.0000000000e-004 5.0000000000e-004 3.5000000000e-003 9.1171782492e-020 4.0357809276e-020
5.0000000000e-004 5.0000000000e-004 3.5000000000e-003 -8.9922468349e-020 -3.8161635056e-020
数据构建为5列。 1,2,3列是x,y,z网格的协调。
4列是复数的实部,5列是复数的虚部。 我使用2列(4,5列)作为标量值来创建绝对值。
因此我尝试像下面那样进行体积渲染。 没有错误,但在vtk窗口中出现了问题 在我看来,UnStructuredGrid中似乎存在问题,vtkDataSetTriangleFilter
import vtk
import numpy as np
readtxt = np.genfromtxt("ExportedFieldData.txt",skip_header=16,comments='%', missing_values='1.#QNAN00000e+000')
re = readtxt[:,3]
re[np.isnan(re)] = 0
im = readtxt[:,4]
im[np.isnan(im)] = 0
p = np.abs(re+1j*im)
print(p[2])
max_p = max(p)
print(max_p)
x = readtxt[:,0]
y = readtxt[:,1]
z = readtxt[:,2]
points = vtk.vtkPoints()
ugrid = vtk.vtkUnstructuredGrid()
pressure = vtk.vtkFloatArray()
pressure.SetNumberOfTuples(len(x))
for i in range(len(x)):
points.InsertNextPoint(x[i], y[i], z[i])
pressure.SetValue(i, p[i])
ugrid.SetPoints(points)
ugrid.GetPointData().SetScalars(pressure)
trifilter = vtk.vtkDataSetTriangleFilter()
trifilter.SetInputData(ugrid)
volumeMapper = vtk.vtkOpenGLProjectedTetrahedraMapper()
volumeMapper.SetInputConnection(trifilter.GetOutputPort())
opacityTransferFunction = vtk.vtkPiecewiseFunction()
opacityTransferFunction.AddPoint(10000, 0.2)
opacityTransferFunction.AddPoint(200000, 1.0)
colorTransferFunction = vtk.vtkColorTransferFunction()
colorTransferFunction.AddRGBPoint(10000, 0.0, 0.0, 1.0)
colorTransferFunction.AddRGBPoint(200000, 1.0, 0.0, 0.0)
volumeProperty = vtk.vtkVolumeProperty()
volumeProperty.SetColor(colorTransferFunction)
volumeProperty.SetScalarOpacity(opacityTransferFunction)
volumeProperty.SetScalarOpacityUnitDistance(300)
volumeProperty.ShadeOff()
volume = vtk.vtkVolume()
volume.SetMapper(volumeMapper)
volume.SetProperty(volumeProperty)
ren = vtk.vtkRenderer()
ren.AddVolume(volume)
renderer_window = vtk.vtkRenderWindow()
renderer_window.AddRenderer(ren)
style = vtk.vtkInteractorStyleTrackballCamera()
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(renderer_window)
interactor.SetInteractorStyle(style)
interactor.Initialize()
interactor.Start()
print(len(x))
print(readtxt)
print(p)
所以,如果你让我知道这个问题的解决方案,我真的很感激:) 我想做什么,