Hi, I'm working with fast point instancing and .ass files, and I'd like to have my instances render with deformation blur. Here's my process:
1) Export an .ass file to be instanced with the deform keys parameter in the Arnold ROP checked on, and set to 5. Shutter position is "center on frame" and the shutter length is 0.5. Pretty standard stuff.
2) Make a geo object and inside create some points and append an attribute wrangle that sets the s@instancefile attribute to point at the .ass that I wrote to disk in step 1.
3) On geo obj, install the instancing parameters and set to "fast point instancing"
4) Make a new Arnold ROP to render the geo object with.
5) Set the same motion blur settings on the ROP as when exporting the .ass file earlier.
6) Press render.
If I do this, Houdini segfaults immediately every time. I've found that if I render to the IPR Render View and disable motion blur to begin with, the enable it once the IPR render has begun, I get the motion blur I'd expect, so Arnold is able to correctly read the motion samples from the .ass file and produce correct blur, but something is tripping it up if I don't "cheat" by starting the render without blur enabled. Unfortunately, this workaround won't allow me to do actual production renders. If I attempt to render to Mplay or to export .ass files for farm rendering I get the same segfault.
Here's the output I'm seeing in the terminal:
00:00:00 785MB | [htoa.session] Camera: /obj/cam1 00:00:00 786MB | [htoa.object.rop] Generating ROP /obj/ropnet1/arnold1 00:00:00 786MB | [htoa.object.camera] Generating camera /obj/cam1 00:00:00 786MB | [htoa.object.geometry] Generating /obj/instancer 00:00:00 786MB | [virtual htoa::geo::Object::ShaderMap htoa::geo::Object::build] translate as: geo 00:00:00 786MB ERROR | signal caught: SIGSEGV -- Invalid memory reference **** * Arnold 6.0.4.0 [3fad32b9] linux clang-9.0.1 oiio-2.2.1 osl-1.11.6 vdb-4.0.0 clm-1.1.1.118 rlm-12.4.2 optix-6.6.0 2020/07/31 08:04:58 * CRASHED in void GA_PageArray<void, 3l, true, false>::getRange<UT_FixedVector<float, 3l, false> > at 00:00:00 * signal caught: SIGSEGV -- Invalid memory reference (address not mapped to object) * * backtrace: * 0 0x00007fa79bd7781d [libai.so ] AiADPDialogStrings * 1 0x00007fa83a49762f [libpthread.so.0 ] _L_unlock_13 [funlockfile.c : ?] >> 2 0x00007fa84382b56a [libHoudiniGEO.so ] void GA_PageArray<void, 3l, true, false>::getRange<UT_FixedVector<float, 3l, false> >(GA_Range const&, UT_FixedVector<float, 3l, false>*) [ : ?] * 3 0x00007fa84382b56a [libHoudiniGEO.so ] [ : ?] * 4 0x00007fa7d45a6e71 [libhtoa_geo.so ] htoa::arnold::Node::getAttributeDataFloat(float*, GA_Range const&, char const*, int, int) * 5 0x00007fa7d45a7f86 [libhtoa_geo.so ] htoa::arnold::Node::gatherPointPositions(AtArray*, unsigned char) * 6 0x00007fa7d459c9d5 [libhtoa_geo.so ] htoa::arnold::Instancer::gather(unsigned char) * 7 0x00007fa7d45cfae3 [libhtoa_geo.so ] htoa::geo::Translator::gather(unsigned char) * 8 0x00007fa7d45662d2 [libhtoa_geo.so ] htoa::geo::Object::build() * 9 0x00007fa74edd3263 [_htoa_pygeo.so ] htoa::geo::PygeoObject::generate() [ : ?] * 10 0x00007fa74eddad52 [_htoa_pygeo.so ] [pygeo_wrap.cpp: ?] * 11 0x00007fa8360efe9c [libpython2.7.so.1.0] PyEval_EvalFrameEx [ceval.c :4372] * 12 0x00007fa8360ef814 [libpython2.7.so.1.0] PyEval_EvalFrameEx [ceval.c :4457] * 13 0x00007fa8360f355b [libpython2.7.so.1.0] PyEval_EvalCodeEx [ceval.c :3604] * 14 0x00007fa8360ef6f5 [libpython2.7.so.1.0] PyEval_EvalFrameEx [ceval.c :4467] * 15 0x00007fa8360f355b [libpython2.7.so.1.0] PyEval_EvalCodeEx [ceval.c :3604] * 16 0x00007fa8360ef6f5 [libpython2.7.so.1.0] PyEval_EvalFrameEx [ceval.c :4467] * 17 0x00007fa8360f355b [libpython2.7.so.1.0] PyEval_EvalCodeEx [ceval.c :3604] * 18 0x00007fa8360ef6f5 [libpython2.7.so.1.0] PyEval_EvalFrameEx [ceval.c :4467] * 19 0x00007fa8360ef814 [libpython2.7.so.1.0] PyEval_EvalFrameEx [ceval.c :4457] * 20 0x00007fa8360ef814 [libpython2.7.so.1.0] PyEval_EvalFrameEx [ceval.c :4457] * 21 0x00007fa8360f355b [libpython2.7.so.1.0] PyEval_EvalCodeEx [ceval.c :3604] * 22 0x00007fa8360f3658 [libpython2.7.so.1.0] PyEval_EvalCode [ceval.c : 669] * 23 0x00007fa83f3b6672 [libHoudiniUT.so ] PY_CompiledCode::evaluateUsingDicts(PY_Result::Type, void*, void*, PY_Result&) * 24 0x00007fa83f3c83fd [libHoudiniUT.so ] PYrunPythonStatementsFromFile(char const*, PY_EvaluationContext*) * 25 0x00007fa83f3c8adc [libHoudiniUT.so ] PYrunPythonStatementsFromFile(int, char**, PY_EvaluationContext*, bool) * 26 0x00007fa857b3a682 [libHoudiniOP4.so ] ROP_SohoOp::runScript(char const*, ROP_SohoOutput*) * 27 0x00007fa857b3a94f [libHoudiniOP4.so ] ROP_SohoOp::spoolScript(char const*, ROP_SohoOutput*) * 28 0x00007fa857b3b683 [libHoudiniOP4.so ] ROP_SohoOp::callSoho(double, char const*, ROP_SohoOutputMode, ROP_SohoErrorMode, char const*, char const*, bool, ROP_SohoCompression, UT_Interrupt*) * 29 0x00007fa857b3c226 [libHoudiniOP4.so ] ROP_SohoOp::renderFrame(double, UT_Interrupt*) * 30 0x00007fa857af011e [libHoudiniOP4.so ] ROP_Node::executeSingle(double, ROP_Verbose*, SOHO_IPRList*, ROP_SohoOutput*, bool) * 31 0x00007fa857af9553 [libHoudiniOP4.so ] ROP_RenderItem::render(ROP_Verbose*, int, int) * 32 0x00007fa857b023b2 [libHoudiniOP4.so ] ROP_RenderManager::renderOrder(ROP_RenderList const&, ROP_Verbose*) * 33 0x00007fa857b034a1 [libHoudiniOP4.so ] ROP_RenderManager::render(ROP_Node*, double, double, double, bool, bool, bool, bool, bool, ROP_Verbose*) * 34 0x00007fa857aed3c8 [libHoudiniOP4.so ] ROP_Node::executeFull(double, bool) * 35 0x00007fa86b9b8755 [libHoudiniAPPS3.so ] DM_ViewData::performRender(UI_Value&, int) * 36 0x00007fa869927104 [libHoudiniUI.so ] UI_Queue::processNextEvent() * 37 0x00007fa8699272fb [libHoudiniUI.so ] UI_Queue::drain() * 38 0x00007fa869927bff [libHoudiniUI.so ] UI_Queue::eventLoop() * 39 0x00007fa869685d25 [libHoudiniUI.so ] main * 40 0x00007fa82d0c6554 [libc.so.6 ] __libc_start_main * 41 0x0000000000402d84 [houdinifx-bin ] * * loaded modules: * 0x00007fa79ae34000 libai.so * 0x00007fa83a488000 libpthread.so.0 * 0x00007fa843295000 libHoudiniGEO.so * 0x00007fa7d4517000 libhtoa_geo.so * 0x00007fa74edcb000 _htoa_pygeo.so * 0x00007fa835fe3000 libpython2.7.so.1.0 * 0x00007fa83e7e0000 libHoudiniUT.so * 0x00007fa85774f000 libHoudiniOP4.so * 0x00007fa86b0bb000 libHoudiniAPPS3.so * 0x00007fa86943f000 libHoudiniUI.so * 0x00007fa82d0a4000 libc.so.6 * 0x0000000000400000 houdinifx-bin * * memory: VM 14591 MB, RSS 787 MB, 3 page faults **** 76806: Fatal error: Segmentation fault (sent by pid 76806)
Does anyone else have experience with this issue? Any workarounds or suggestions most welcome!
Niall
Do you crash when you export the ass file, or when you kick the ass file?
I'm putting together a test scene now...
Ok, I see it crashes on export too