Paraview crash with Omniverse connector for volume rendering

Hi,

I am trying the ParaView Omniverse connector to generate scene that use the volume rendering. Each time when I try to switch to the volume representation, my ParaView crash and close automatically. Everything works normally if I am not using the Omniverse connector view. I just make a test using the wavelet example and below is the error message shown when my ParaView crash.

> Coding Error: in _SetValueImpl at line 6043 of /buildAgent/work/ca6c508eae419cf8/USD/pxr/usd/usd/stage.cpp -- Type mismatch for </Root/Lights/defaultLight.xformOp:translate>: expected 'GfVec3d', got 'GfVec3f'
> Coding Error: in _SetValueImpl at line 6043 of /buildAgent/work/ca6c508eae419cf8/USD/pxr/usd/usd/stage.cpp -- Type mismatch for </Root/Lights/defaultLight.shaping:cone:angle>: expected 'float', got 'double'
> Runtime Error: in Open at line 867 of /buildAgent/work/ca6c508eae419cf8/USD/pxr/usd/usd/stage.cpp -- Failed to open layer @omniverse://localhost:33480/Users/a6000/paraview/Session_13/geometries/Wavelet1_Volume_0_VolumeGeom_.0.000000.usd@
> Runtime Error: in Open at line 867 of /buildAgent/work/ca6c508eae419cf8/USD/pxr/usd/usd/stage.cpp -- Failed to open layer @omniverse://localhost:33480/Users/a6000/paraview/Session_13/topologies/Wavelet1_Volume_0_VolumeGeom_Topology.usd@
> 
> Loguru caught a signal: SIGSEGV
> Stack trace:
> 51            0x407b2a /home/install_code/ParaView-5.9.1-MPI-Linux-Python3.8-64bit/bin/paraview-real() [0x407b2a]
> 50      0x7fcdc64f6083 __libc_start_main + 243
> 49            0x40778a /home/install_code/ParaView-5.9.1-MPI-Linux-Python3.8-64bit/bin/paraview-real() [0x40778a]
> 48      0x7fcdc398e120 QCoreApplication::exec() + 128
> 47      0x7fcdc398562a QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 298
> 46      0x7fcd90398dfe /home/install_code/ParaView-5.9.1-MPI-Linux-Python3.8-64bit/plugins/platforms/../../lib/libQt5XcbQpa.so.5(+0x5edfe) [0x7fcd90398dfe]
> 45      0x7fcdc39de522 QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 1138
> 44      0x7fcdc39e0279 QTimerInfoList::activateTimers() + 985
> 43      0x7fcdc3986dd8 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 280
> 42      0x7fcdc5948260 QApplication::notify(QObject*, QEvent*) + 704
> 41      0x7fcdc594118c QApplicationPrivate::notify_helper(QObject*, QEvent*) + 156
> 40      0x7fcdc39b5ccb QObject::event(QEvent*) + 123
> 39      0x7fcdc39c1c58 QTimer::timerEvent(QTimerEvent*) + 40
> 38      0x7fcdc39c1927 QTimer::timeout(QTimer::QPrivateSignal) + 39
> 37      0x7fcdc39b51ea QMetaObject::activate(QObject*, int, int, void**) + 1850
> 36      0x7fcdc4a82ec5 /home/install_code/ParaView-5.9.1-MPI-Linux-Python3.8-64bit/bin/../lib/libpqCore-pv5.9.so.1(+0x7bec5) [0x7fcdc4a82ec5]
> 35      0x7fcdc4b54601 pqView::forceRender() + 97
> 34      0x7fcdb9a55813 vtkSMViewProxy::StillRender() + 307
> 33      0x7fcdc2c572e5 vtkPVSessionBase::ExecuteStream(unsigned int, vtkClientServerStream const&, bool) + 53
> 32      0x7fcdc2c582bb vtkPVSessionCore::ExecuteStream(unsigned int, vtkClientServerStream const&, bool) + 59
> 31      0x7fcdc2c58482 vtkPVSessionCore::ExecuteStreamInternal(vtkClientServerStream const&, bool) + 242
> 30      0x7fcdc1b09ddd vtkClientServerInterpreter::ProcessStream(vtkClientServerStream const&) + 29
> 29      0x7fcdc1b09b3e vtkClientServerInterpreter::ProcessOneMessage(vtkClientServerStream const&, int) + 1294
> 28      0x7fcdc1b0940d vtkClientServerInterpreter::ProcessCommandInvoke(vtkClientServerStream const&, int) + 1229
> 27      0x7fcdc1b08da9 vtkClientServerInterpreter::CallCommandFunction(char const*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&) + 345
> 26      0x7fcd40dda944 vtkPVOmniConnectRenderViewCommand(vtkClientServerInterpreter*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&, void*) + 3764
> 25      0x7fcdc1b08da9 vtkClientServerInterpreter::CallCommandFunction(char const*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&) + 345
> 24      0x7fcdba80bbc8 vtkPVRenderViewCommand(vtkClientServerInterpreter*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&, void*) + 8312
> 23      0x7fcdb99b3ce1 vtkPVRenderView::StillRender() + 97
> 22      0x7fcd40bbbe2a vtkPVOmniConnectRenderView::Render(bool, bool) + 650
> 21      0x7fcdb99bfb3a vtkPVRenderView::Render(bool, bool) + 2010
> 20      0x7fcdc0b2cd72 vtkGenericOpenGLRenderWindow::Render() + 194
> 19      0x7fcdc0bbc4e1 vtkOpenGLRenderWindow::Render() + 81
> 18      0x7fcdc0131d8b vtkRenderWindow::Render() + 267
> 17      0x7fcdc01313f5 vtkRenderWindow::DoStereoRender() + 213
> 16      0x7fcdc014361f vtkRendererCollection::Render() + 191
> 15      0x7fcdc013d515 vtkRenderer::Render() + 2533
> 14      0x7fcdc0bc2c7f vtkOpenGLRenderer::DeviceRender() + 143
> 13      0x7fcdc0b03e4f vtkCameraPass::Render(vtkRenderState const*) + 527
> 12      0x7fcdb59ad66f vtkViewNode::Traverse(int) + 127
> 11      0x7fcdb59ad66f vtkViewNode::Traverse(int) + 127
> 10      0x7fcdb59ad6e6 vtkViewNode::Traverse(int) + 246
> 9       0x7fcd409981a8 vtkOmniConnectVolumeMapperNode::Render(bool) + 536
> 8       0x7fcd40997c36 vtkOmniConnectVolumeMapperNode::RenderVolume(vtkOmniConnectActorNodeBase*, vtkVolume*, vtkVolumeMapper*, vtkImageData*, unsigned long, unsigned long) + 1606
> 7       0x7fcd4057e9b8 OmniConnect::UpdateVolume(unsigned long, double, OmniConnectVolumeData&, unsigned long, OmniConnectGenericArray*, unsigned long, OmniConnectGenericArray*, unsigned long) + 200
> 6       0x7fcd4057e2c8 /home/install_code/ParaView-5.9.1-MPI-Linux-Python3.8-64bit/bin/../lib/paraview-5.9/plugins/OmniverseConnector/../../../libOmniConnect-pv5.9.so.1(+0x402c8) [0x7fcd4057e2c8]
> 5       0x7fcd405a943e /home/install_code/ParaView-5.9.1-MPI-Linux-Python3.8-64bit/bin/../lib/paraview-5.9/plugins/OmniverseConnector/../../../libOmniConnect-pv5.9.so.1(+0x6b43e) [0x7fcd405a943e]
> 4       0x7fcd0a848b98 openvdb::v6_1::io::Stream::write(std::vector<std::shared_ptr<openvdb::v6_1::GridBase const>, std::allocator<std::shared_ptr<openvdb::v6_1::GridBase const> > > const&, openvdb::v6_1::MetaMap const&) const + 40
> 3       0x7fcd0a835eac openvdb::v6_1::io::Archive::write(std::ostream&, std::vector<std::shared_ptr<openvdb::v6_1::GridBase const>, std::allocator<std::shared_ptr<openvdb::v6_1::GridBase const> > > const&, bool, openvdb::v6_1::MetaMap const&) const + 108
> 2       0x7fcd0a8336f8 openvdb::v6_1::io::setDataCompression(std::ios_base&, unsigned int) + 72
> 1       0x7fcd0a830a00 openvdb::v6_1::io::StreamMetadata::setCompression(unsigned int) + 0
> 0       0x7fcdc6515090 /lib/x86_64-linux-gnu/libc.so.6(+0x43090) [0x7fcdc6515090]
> (  70.346s) [paraview        ]                       :0     FATL| Signal: SIGSEGV
> error: exception occurred: Segmentation fault

May I ask for some help to solve this problem or is it a known bug that is not solved yet? From the error message, I see it mentioned about the data type has a mismatch in floating point precision, is there something I can corrected it?

Hello @_hin ,

thanks for trying the ParaView connector’s volume output capabilities; the original version of the connector had a number of issues that could lead to a crash of the plugin. Would it be possible for you to try the latest version (101.0.0) and report whether your problems still persist?

Cheers,
Kees

Yes, with the updated connector, I can generate the vdb file for the volume rendering.

Now I have a problem in visualize it in omniverse create.
I try to follow the example shown here: NVIDIA Omniverse: Animated VDB Sequence Tutorial (JangaFX Tornado) - YouTube
and also the documentation of the connector: ParaView — Omniverse Connect documentation

Is there something I still missed to re-visualize back in omniverse create?

I am again trying the wavelet data source and I can visualize other representation mode (e.g. isosurface, surface), and only have difficulty in visualizing the vdb file.

Hello @_hin,

the data coming from Janga is not necessarily the same as what is output by the PV connector. For example, the PV connector only outputs whatever quantity is selected for colormapping in PV, as a “density” grid in OVDB, but it doesn’t output any temperature grid. Maybe having such an output mode could be an idea for the future, but at the moment you’d have to manually output your density quantities to one vdb first, copy that to a separate location, and then do the same for whatever quantity you want to use for the temperature.

Can you visualize the headsq.vti example in Create as explained in the second part of the PV Connector volume output documentation? If you can, that would be a good basis to start experimenting with your own density volumes and see how the Jenga tutorial could be applied to it.