Invalid curves from exported alembic cache
Open, LowPublic

Description

System Information
Linux Mint 18.1
GeForce 1060 GTX

Blender Version
2.78a e8299c8

Short description of error
Exported alembic cache contains curves with invalid vertex counts

Exact steps for others to reproduce the error
I downloaded the rocket/launchpad model from blendswap (http://www.blendswap.com/blends/view/69355), and exported the scene as an alembic cache.

The cache imports into Houdini just fine, but when rendering, it crashed. When I submitted a bug to SideFX, they indicated the curves being generated have invalid vertex counts, and are corrupt.

Thanks!

Details

Type
Bug
Kévin Dietrich (kevindietrich) triaged this task as "Low" priority.

Sounds like more or less the same issue as in T49114. In any case fixing this without proper knowledge of how other software expects curve data to be written will require a bit of trial and error, so setting priority to Low.

@Chris Rydalch (goldleaf), for reference, if there is more information about the crash there, do you have a link to the Houdini bug report? (Or a screenshot if private.)

@Kévin Dietrich (kevindietrich) I'm so sorry, I somehow missed, or simply forgot about, this issue; please forgive me. The SideFX dev indicated the Alembic export from blender was generating curve meshes with incorrect vertex counts.

Here is the crash output from Mantra (not sure how helpful it'll be, but just in case):

330: Fatal error: Segmentation fault (sent by pid 10)
-- TRACEBACK BEGIN --
Traceback from mantra 16.0.497 (Compiled on linux-x86_64-gcc4.8):
stackTrace() <libHoudiniUT.so>
signalCallback(UTsignalHandlerArg) <libHoudiniUT.so>
UT_Signal::UT_ComboSignalHandler::operator()(int, siginfo*, void*) const <libHoudiniUT.so>
UT_Signal::processSignal(int, siginfo*, void*) <libHoudiniUT.so>
__funlockfile <libpthread.so.0>
void UT_PageArray<void, 1l, true, false, 10l, long>::opUnknownType<0, long>(long, long, long) [clone .constprop.414] <libHoudiniGEO.so>
GA_Topology::wireVertexPoint(long, long) <libHoudiniGEO.so>
(anonymous namespace)::gtutil_GEORefine::makeCurveMesh(GT_PrimCurveMesh const&) <libHoudiniGEO.so>
(anonymous namespace)::gtutil_GEORefine::addPrimitive(GT_Primitive const&) <libHoudiniGEO.so>
GT_Util::makeGEO(UT_Array<GU_Detail*>&, GT_Primitive const&, GT_RefineParms const*, int) <libHoudiniGEO.so>
GT_Util::makeGEO(UT_Array<GU_DetailHandle>&, UT_IntrusivePtr<GT_Primitive> const&, GT_RefineParms const*, int) <libHoudiniGEO.so>
(anonymous namespace)::refineToDetail(VRAY_ProcGT*, UT_IntrusivePtr<GT_Primitive> const&, int, (anonymous namespace)::PackInstanceInfo&, bool, bool&) <libHoudiniRAY.so>
VRAY_ProcGT::renderSimpleInstances(UT_StringHolder const&, UT_IntrusivePtr<GT_Primitive> const&, UT_IntrusivePtr<GT_TransformArray> const&, UT_IntrusivePtr<GT_AttributeList> const&, UT_IntrusivePtr<GT_AttributeList> const&, bool) <libHoudiniRAY.so>
VRAY_ProcGT::renderPrim(UT_IntrusivePtr<GT_Primitive> const&) <libHoudiniRAY.so>
VRAY_ProcGT::renderPrim(UT_IntrusivePtr<GT_Primitive> const&) <libHoudiniRAY.so>
VRAY_Instance::refineProcedural() <libHoudiniRAY.so>
VRAY_Instance::refineProcedural() <libHoudiniRAY.so>
VRAY_Scene::beginRender() <libHoudiniRAY.so>
VRAY_Scene::doRender() <libHoudiniRAY.so>
VRAY_Scene::render() <libHoudiniRAY.so>
VRAY_SceneIO::doRender(CMD_Args&) <libHoudiniRAY.so>
CMD_Manager::runCommand(char*) <libHoudiniPRM.so>
CMD_Manager::internalExecute(char const*) <libHoudiniPRM.so>
CMD_Manager::processInput(CMD_Source*, char const*) <libHoudiniPRM.so>
CMD_Manager::internalSendInput(char const*, bool) <libHoudiniPRM.so>
CMD_Manager::sendInputNoLock(char const*, bool) <libHoudiniPRM.so>
VRAY_Scene::load(UT_IStream&) <libHoudiniRAY.so>
std::basic_streambuf<char, std::char_traits<char> >::uflow() <mantra-bin>
__libc_start_main <libc.so.6>
std::basic_streambuf<char, std::char_traits<char> >::uflow() <mantra-bin>
-- TRACEBACK END --
404: Fatal error: Segmentation fault (sent by pid 256)
-- TRACEBACK BEGIN --
Traceback from mantra 16.0.497 (Compiled on linux-x86_64-gcc4.8):
stackTrace() <libHoudiniUT.so>
signalCallback(UTsignalHandlerArg) <libHoudiniUT.so>
UT_Signal::UT_ComboSignalHandler::operator()(int, siginfo*, void*) const <libHoudiniUT.so>
UT_Signal::processSignal(int, siginfo*, void*) <libHoudiniUT.so>
__funlockfile <libpthread.so.0>
void UT_PageArray<void, 1l, true, false, 10l, long>::opUnknownType<0, long>(long, long, long) [clone .constprop.414] <libHoudiniGEO.so>
GA_Topology::wireVertexPoint(long, long) <libHoudiniGEO.so>
(anonymous namespace)::gtutil_GEORefine::makeCurveMesh(GT_PrimCurveMesh const&) <libHoudiniGEO.so>
(anonymous namespace)::gtutil_GEORefine::addPrimitive(GT_Primitive const&) <libHoudiniGEO.so>
GT_Util::makeGEO(UT_Array<GU_Detail*>&, GT_Primitive const&, GT_RefineParms const*, int) <libHoudiniGEO.so>
GT_Util::makeGEO(UT_Array<GU_DetailHandle>&, UT_IntrusivePtr<GT_Primitive> const&, GT_RefineParms const*, int) <libHoudiniGEO.so>
(anonymous namespace)::refineToDetail(VRAY_ProcGT*, UT_IntrusivePtr<GT_Primitive> const&, int, (anonymous namespace)::PackInstanceInfo&, bool, bool&) <libHoudiniRAY.so>
VRAY_ProcGT::renderSimpleInstances(UT_StringHolder const&, UT_IntrusivePtr<GT_Primitive> const&, UT_IntrusivePtr<GT_TransformArray> const&, UT_IntrusivePtr<GT_AttributeList> const&, UT_IntrusivePtr<GT_AttributeList> const&, bool) <libHoudiniRAY.so>
VRAY_ProcGT::renderPrim(UT_IntrusivePtr<GT_Primitive> const&) <libHoudiniRAY.so>
VRAY_ProcGT::renderPrim(UT_IntrusivePtr<GT_Primitive> const&) <libHoudiniRAY.so>
VRAY_Instance::refineProcedural() <libHoudiniRAY.so>
VRAY_Instance::refineProcedural() <libHoudiniRAY.so>
VRAY_Scene::beginRender() <libHoudiniRAY.so>
VRAY_Scene::doRender() <libHoudiniRAY.so>
VRAY_Scene::render() <libHoudiniRAY.so>
VRAY_SceneIO::doRender(CMD_Args&) <libHoudiniRAY.so>
CMD_Manager::runCommand(char*) <libHoudiniPRM.so>
CMD_Manager::internalExecute(char const*) <libHoudiniPRM.so>
CMD_Manager::processInput(CMD_Source*, char const*) <libHoudiniPRM.so>
CMD_Manager::internalSendInput(char const*, bool) <libHoudiniPRM.so>
CMD_Manager::sendInputNoLock(char const*, bool) <libHoudiniPRM.so>
VRAY_Scene::load(UT_IStream&) <libHoudiniRAY.so>
std::basic_streambuf<char, std::char_traits<char> >::uflow() <mantra-bin>
__libc_start_main <libc.so.6>
std::basic_streambuf<char, std::char_traits<char> >::uflow() <mantra-bin>
-- TRACEBACK END --

Thanks!