Welcome to od|forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Search the Community: Showing results for tags 'hdk'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • General
    • Lounge/General chat
    • Education
    • Jobs
  • Houdini
    • General Houdini Questions
    • Effects
    • Modeling
    • Animation & Rigging
    • Lighting & Rendering
    • Compositing
    • Games
  • Coders Corner
    • HDK : Houdini Development Kit
    • Scripting
    • Shaders
  • Art and Challenges
    • Finished Work
    • Work in Progress
    • VFX Challenge
    • Effects Challenge Archive
  • Systems and Other Applications
    • Other 3d Packages
    • Operating Systems
    • Hardware
    • Pipeline
  • od|force
    • Feedback, Suggestions, Bugs

Found 52 results

  1. Does anyone know whether or not a fisheye projection is possible to write for the viewport? I'm looking around on behalf of a friend, and I think it might be possible, from perusing the HDK, but can't tell for sure. If anyone knows whether this is possible or impossible, either way, it'd be great to know. Thanks!
  2. Hi all, I'm trying to dabble in a bit of HDK programming, however I can't seem to get off the ground: I have an HDK 15.5.564 installation and Visual Studio 2015 (VC14 Update 3). Upon loading up the command line tools and running 'hcustom -s geoisosurface.C' a window pops up telling me that hcustom.exe has stopped working. I use Visual Studio to debug and see if I can get a better idea of what the error is and it yields the following message: Unhandled exception at 0x00007FFAE44373F3 (ntdll.dll) in hcustom.exe: 0xC0000374: A heap has been corrupted (parameters: 0x00007FFAE448F6B0). Anyone else encounter this problem? Is there a step in the process that I'm missing here? Any help would be appreciated. Cheers!
  3. I'm trying to figure out how to create an OpenVDB volume by writing out the voxels, to make a custom SOP. The OpenVDB Hello World example goes something like this: // Initialize the OpenVDB library. This must be called at least // once per program and may safely be called multiple times. openvdb::initialize(); // Create an empty floating-point grid with background value 0. openvdb::FloatGrid::Ptr grid = openvdb::FloatGrid::create(); // Get an accessor for coordinate-based access to voxels. openvdb::FloatGrid::Accessor accessor = grid->getAccessor(); // Define a coordinate with signed indices. openvdb::Coord xyz(5, 5, 5); // Set the voxel value at (5, 5, 5) to 1. accessor.setValue(xyz, 1.0); But now how would I get this to work in Houdini in my "cookMySop()" function? How do I attach this grid to a GU_PrimVDB (or something) to actually create the OpenVDB primitive in Houdini? Could I get a Houdini-specific "Hello World" example?
  4. Ephere is a small company specializing in hair and fur software. We're looking for an experienced HDK developer and Houdini user to help us with writing and porting some of our tools inside Houdini. This is a remote contract offer and we are looking for a long term collaborator. If you want to participate in a fun project with some exciting and challenging work please contact me at marsel.khadiyev@ephere.com Marsel Khadiyev
  5. Hi guys, here is a new plugin for you: Hreeble https://www.youtube.com/watch?v=2hQzy26cGaw Finally we can build a Star Wars ships with a few mouse clicks! Source code and complied version for Houdini 15.0.347(Windows and OSX) available here: UPDATE: Update a video with some new features. Cheers, Alex.
  6. I am a beginner who studied HDK. I use VC14(visual studio 15), Houdini 15.5. I study many examples in SOP folder and etc... There are two questions. First, GA_PointGroup * mygroup; GEO_Point * ppt; GR_FOR_ALL_GPOINTS_NC(gdp, GEO_Point, pt) { mygroup->add(ppt->getNum()); } This Code should be fixed by reference HDK Documents(Geometry Porting Cookbook) http://www.sidefx.com/docs/hdk/_h_d_k__g_a__porting.html#HDK_GA_PortingCookbook_Simple_Name_Translation /* *Adding To A Group * *GB Code *group->add(prim->getNum()) *==> *GA Code *group->add(*prim); *group->addIndex(prim->getNum()); */ GA_PointGroup * mygroup; GEO_Point * ppt; GR_FOR_ALL_GPOINTS_NC(gdp, GEO_Point, pt) { mygroup->add(*ppt); mygroup->addInex(ppt->getNum()); } I changed like this. But mygroup->add(*ppt); still error... Is There any way? Second, I have one more question about GEO_PointList For the Documents, GB_ElementList GB had arrays of pointers to objects. As these objects no longer exist, code using element arrays should likely be re-written to be more efficient. The GA version of element lists return by value (not by reference). // GB Code GEO_PointList &pnts = gdp->points(); ==> // GA Code GEO_PointList pnts = gdp->points(); But there is no GEO_PointList.. I check it existed 13.0 not 15.0 I traverse 13.0 HDK Documents related GEO_PointList.. It's so difficult to find out the replacements. I search for Major Changes and HDK Forums, Documents. I cannot find. I want use points() function.. OTL
  7. In the SOP_Node.h header there are two helper functions that return an OP_ERROR: cookInputPointGroups() cookInputPrimitiveGroups() I need one for vertex groups and i'm not sure what i need to do to recreate the same behavoir as the other two. What do i need to do to make a cookInputVertexGroups() helper function? Cheers
  8. Has anyone tried getting Mixed Mode debugging with Python Tools for Visual Studios to work? Houdini ships with 2.7.5 but it's compiled with msvc 14, which I must assume means SideFX compiles the binaries with likely significant source modifications. It seems like the only way Mixed Mode debugging between Python and C++ can work is if Houdini ships with the python symbols? Or am, as per usual, wrong?
  9. I have a few PRM_Templates I need to hide and unhide based on the tools ui. I can get the functionality I want using enableParm() and setVisibleState() with evalInt() in cookMySop. BUT that only works once the sop node has been cooked/connected. so if i drop down a newly created node all the PRM_Templates are showing, how do i set them to hidden initially? Also would I need to use updateParmsAndSpareParmsFlags()? Not sure when I would need to call that function Cheers
  10. The most powerful wrangle operator due to the sheer fire power of the HDK. Performance increase can vary from a few times to thousands of times depending on the scenario.
  11. Hi Houdini enthusiasts! , I'm very exciting to say that we are ready to start our course in english! Houdini Tool Development was very successful in Russian language, and we get a lot of requests from our foreign friends to make an english version.So here is a little demo i've recorded to show you what to expect from this amazing course https://www.youtube.com/watch?v=ITa33iMpePY&feature=youtu.be This course will be 4 month long and contains 16 video lectures. One lecture per week. Each lecture - 3-4 hours long. Each Monday, starting from 21 Sep. new lecture video will be uploaded and link will be shared with you. Skype Group will be created where you can ask questions any time on weekdays. Detailed program: here UPDATE: For those of you guys interested only in HDK part of this course, it is possible to apply only on that part. Just contact us via email and you'll be on board right away.
  12. Hi. I got two HOWTO questions: 1) In DA you just specify TAB submenu path and you are ready to go, but I can't find anything similar in HDK when I'm adding operator. I suppose it is somewhere in OP_OperatorTable, but which function does that ? I don't see Tab submenu path function there . 2) In python you can pass use_existing_selection=False to the selector and it will not reuse already selected geometry. I can't find the same functionality in HDK selector. There are probably simple solutions for those two questions. Thanks in advance.
  13. I'm trying to create a custom ROP_Node implementation that works like a subnet. I want the user to be able to dive into the node and add a select set of stock ROP nodes. The node will expose a couple of simple parameters. I've subclassed ROP_Node and overridden isNetwork to return 1. I've also created a custom OP_OperatorFilter to expose only the nodes I want allowed internally in the node. This allows me to create the node in houdini and dive into it, but I'm unable to add any nodes inside. I get permission errors whenever trying to do this. I've tried changing the flag when adding the node to operator table in newDriverOperator(). I've tried OP_FLAG_NETWORK, OP_FLAG_GENERATOR and a combination of & and | those two together. The permission issue doesn't go away. Is creating a subnet-like ROP node possible? I feel like I'm missing a subtle piece of implemenation. I've attached an image of the error I get. Thanks for the help.
  14. Hey guys I have a simple enough problem i wanted to solve in HDK, and i managed to do it, however im sure there has to be a more elegant solution with enough knowledge of HDK classes. I wanted to do a simple sop that compares the same user chosen attribute from two different inputs, and either groups the difference as points group, or deletes points that have the same attrib value across both inputs. Basically i just have the same point cloud on both inputs, the second input has a timeshift node that looks up the previous frame. Its a simple enough exercise, however i have to ask if anyone knows if im reinventing the wheel, if the interface for doing stuff like this is more simple to use, or could give me some hints on how to do it better. Now the problem i came across was how would one define an array to hold values of an attribute of type we dont know in advance? Ive used a hacky solution where i would do the following in cookMySop() //get ptrs to our input geoconst GU_Detail *firstInput = inputGeo(0); const GU_Detail *secondInput = inputGeo(1); //find if attr exist in those geos, lookup is our string that holds the attr name user chose from the UI const GA_Attribute *fattr = firstInput->findAttribute(GA_ATTRIB_POINT, lookup); const GA_Attribute *sattr; //get our total numpts std::cout << "total num of pts (1): " << firstInput->getPointMap().indexSize() << std::endl; // std::cout << (GA_StorageClass)fattr->getStorageClass() << std::endl; //if we have hooked a second input, find attrs and get total numpts if(secondInput) { sattr = secondInput->findAttribute(GA_ATTRIB_POINT, lookup); std::cout << "total num of pts (2): " << secondInput->getPointMap().indexSize() << std::endl; } // If source attribute doesn't exist, error. if (!fattr || !sattr) { addError(SOP_ATTRIBUTE_INVALID, (const char *)lookup); return error(); } //define our arrays UT_ValArray<int32> ptNumListFirst; UT_ValArray<int32> ptNumListSecond; UT_ValArray<int32> ptNumListDiff; //only if our attr is not string shall we compare, have no idea how to figure out string yet if(fattr->getStorageClass() == GA_STORECLASS_INT) { std::cout << "Yes it is a numeric!" << std::endl; //feed our list of attr values in the array FIRST GEO gdp->getPointAttributeAsArray(fattr,gdp->getPointRange(), ptNumListFirst); //if we have connected the second geo if(secondInput) { //feed our list of attr values in the array SECOND GEO secondInput->getPointAttributeAsArray(fattr,secondInput->getPointRange(), ptNumListSecond); //compare our first and second input list and feed the diff in the third input //this is our class method compareUTArrays(ptNumListFirst, ptNumListSecond, ptNumListDiff); } } I actually dont allow the user to pick an attrib from the list thats not int or the node errors out, so basically im forcing the user to choose an int attr. Im sure there is a better way of doing this. Also i tried using the sortedIntersection() method of the UT_ValNumeric array type, however i could never get the difference to be calculated so i had to write my own implementation of the method (compareUTArrays()). Also in the end i use this approach to get the pts in an array that either needed to be grouped or deleted, im not entirely sure if its the "proper" way of doing things: //if we ticked new group, create a new group for pts if(newGrp || deletePts) { //create our new group GA_PointGroup *diffGrp; diffGrp = gdp->newPointGroup(grpName, false); //create a temp group we will delete later if we need to delete points GA_PointGroup *delGrp = gdp->newPointGroup("__tempDelGrp__", false); //get the handle to our int attribute //would prefer if i could somehow make the handle type recognize the attr data type GA_ROHandleI lookup_attr(fattr); int32 value; //iterate thru all points for(GA_Iterator it(gdp->getPointRange()); !it.atEnd(); ++it) { GA_Offset offset = *it; value = lookup_attr.get(offset); std::cout << value << " is value of pts attr" << std::endl; //iterate thru the array and if we have found same attr value add it to the group for(UT_ValArray<int32>::const_iterator itarr = ptNumListDiff.begin(); itarr != ptNumListDiff.end(); ++itarr) { if(value == *itarr) { diffGrp->addOffset(offset); continue; } } } //the diff between the first and second input is found in the diff array //however we need to delete everything thats not the diff, and that is the second inputs members translated into first for(GA_Iterator it(secondInput->getPointRange()); !it.atEnd(); ++it) { GA_Offset offset = *it; delGrp->addOffset(offset); } if(deletePts) { gdp->destroyPointOffsets(GA_Range(*delGrp)); gdp->destroyGroup(delGrp); } } Now i guess i can use the GA_Attribute.getStorageClass and a switch or if statement and initialize my arrays according to the type, but like i said somehow im sure there has to be a more intelligent way of doing this Also im a bit confused about the bumpDataId, what should i do in this case? If i just group my points and dont even modify the geo or attrib values, should i signal houdini to bumpDataId and whats the syntax for doing that? If i delete points however im sure i have to inform houdini that ive modified geo, which class or method should i use to do something like that? I hope all of this makes sense, let me know if it doesnt ill try and elaborate better Any help would be greatly appreciated Thanks Serge
  15. Great news from School Online VFX! We are going to start English group on the program Houdini Tool Development. The first lesson is beginning on September 19th. This program will be useful for technical specialists, engaged in Pipeline construction, instruments creation, technology development, etc. We are waiting for houdini VFX artists, especially FX TD and all Houdini artists, who want to explore Python and improve the quality and productivity of their work. See details and videos: http://onlinevfx.ru/course-and-masters/142-houdini-tool-development-eng
  16. Hi. Follow the white \\ \\_ .-----( ' ). o ( ) _ - \_ => https://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&t=38999 to read the rest. Thanks!
  17. I've found GEO_AdjPolyIterator but it only has breadth-first search. Are there more graph traversal algorithms in the HDK?
  18. Hi, Im writing a COP using the full image filter sample. When I loop thru the image I get 0.0078125 Using a constant white color. If I put the default pic(butterfly) I get the same scale 0 to 0.0078125 Its the same if I cast the value to a float or get the value in plain uchar. Any idea, why? cheers, -A
  19. Hello, guys. While developing some complex operators in HDK I realized that defining lots of parameters becomes a bit tedious and routine task. So I decided to simplify this using C++ templates, and that's what I want to share. All you need is to define these parameters inside newSopOperator() function. Here's how it looks like: void newSopOperator(OP_OperatorTable *table) { PRM_LIST_START(myTemplateList); PRM_FLT(flt, "FLT", 0.01); PRM_INT(integer, "INT", 3); PRM_TOGGLE(toggle, "TOGGLE", ON); PRM_STRING(string, "STRING", "Hello, World!"); PRM_FLT2(flt2, "FLT2", 0.01, 0.02); PRM_FLT3(flt3, "FLT3", 0.01, 0.02, 0.03); PRM_XYZ(xyz, "XYZ", 0.01, 0.02, 0.03); PRM_RGB(rgb, "RGB", 0.3, 0.15, 0.85); PRM_UVW(uvw, "UVW", 1, 0.5, 0); PRM_BUTTON(btn, "Button", callback); PRM_LIST_END(); table->addOperator( new OP_Operator("hdkParmsDemo", "HDK Parms Demo", SOP_HDKParmsDemo::myConstructor, myTemplateList, 0, // Min # of sources 0, // Max # of sources 0) ); } The same easy thing is about reading: // Automatically create variables with parameter names READ_FLT(flt); // double flt; READ_INT(integer); // int integer; READ_TOGGLE(toggle); // bool toggle; READ_STRING(string); // UT_String string; READ_VEC2(flt2); // UT_Vector2 flt2; READ_VEC3(flt3); // UT_Vector3 flt3; Header and sample SOP are attached in the archive. Would appreciate your feedback HDK_Parms.zip
  20. Hi guys! Check out my new houdini plugin - Path Deform. http://www.youtube.com/watch?v=nioQtfJv6T8&feature=youtu.be Source code and binaries for Linux, Windows and OSX will be available soon. UPDATE: Source code Linux / Windows / OSX binaries
  21. So I am trying to build my own sop in HDK and have been figuring out how to add node parameters. While I have discovered how to add and read from a ramp, I can't figure out how to give the ramp a default setting. Whenever I place the node for the first time it only has one point that defaults to zero. How could I set it up so that it looks like a standard initialized ramp, with 2 points that range from 0 - 1? -------------------------------------------------------------------- Okay, so I figured out all I needed to do was set the default to 2. However I am wondering how to hide the ramp's controls by default. Any ideas?
  22. Ok, this was a nice learning project, a lot of things can be improved, but i'm done with it and i'll share the source code, as i promised. Hope this will be useful for learning purpose. Happy New Year! YouTube Source code
  23. Am I blind or are there no attribTransfer or groupTransfer functions in the HDK? Can't seem to find them anywhere in the docs or via search engines.
  24. Hi there I am building a pc2 writer sop to export point cache data from Houdini I have a working python solution but it can be a bit slow (code has been hacked from the various examples on odforce ect) see below: import sys, struct def doCache(): sf = hou.evalParm("startframe") ef = hou.evalParm("endframe") sr = 1 ns = (ef - sf) + 1 geo = hou.pwd().geometry() points = geo.points() np = len(points) pc2File = open(hou.evalParm("file"), "wb") geo = hou.pwd().geometry() # Write header headerFormat='<12siiffi' headerStr = struct.pack(headerFormat, "POINTCACHE2\0", 1, np, sf, sr, ns) pc2File.write(headerStr) # iterate points def writePP(p,f): hou.setFrame(f) curp = p.position() curps = pc2File.write( struct.pack('<fff', float(curp[0]), float(-curp[2]), float(curp[1]) ) ) a = [ writePP(p,f) for f in xrange(sf, sf+ns, sr) for p in geo.points() ] # close file pc2File.flush() pc2File.close() Due to slow speeds I am attempting to implement this using inlinecpp to speed up the execution time. My attempt can be found below, (non-functional at the mo). I am a HDK newb so there are probably lots of very simple mistakes in there. Would anyone with HDK experience be able to give me a few pointers in where I am going wrong? import sys import struct import inlinecpp writePts = inlinecpp.createLibrary( name="cpp_string_library", includes="#include <GU/GU_Detail.h>, #include <FS/FS_Writer.h>, #include <UT/UT_Vector3.h>, #include <HOM/HOM_Module.h>", function_sources=[ """void writePC2(GU_Detail *gdp, const char *filename, const char *pc2, int *numPoints, float *start, float *samplerate, int *numSamples ) { // open the file for writing FS_Writer fs(filename); ostream *file = fs.getStream(); // write header file << pc2; file << int(1); file << numPoints; file << start; file << samplerate; file << numSamples; // iterate through frames through points for ( float i=start; i<end; ++i) { HOM_Module::setFrame( double(i) ) //iterate through the points GA_Offset ptoff; GA_FOR_ALL_PTOFF(gdp, ptoff) { UT_Vector3 pos = gdp->getPos3(ptoff); file << pos.x << pos.y << pos.z; } } // close the file file.close() } """]) def doCache(): sf = hou.evalParm("startframe") ef = hou.evalParm("endframe") sr = 1 ns = (ef - sf) + 1 geo = hou.pwd().geometry() filename = hou.evalParm("file") pc2 = "POINTCACHE2\0" writePts.writePC2(geo, filename, pc2, len(geo.points), sf, sr, ns) Much obliged!!! Sam Swift-Glasman
  25. I created a custom SOP. Sometimes I can cook it successfully, other times it segfaults. It seems to always segfault after the "cookMySop()" function completes (i.e., outside of the code that I wrote???). When it segfaults, it either gives me one of two error logs, or no error log at all. Here are the two error logs. Can anyone make sense of them and direct me in a direction that I can start to look to debug this? Log version 1: Caught signal 11 AP_Interface::coreDumpChaser(UTsignalHandlerArg) <libHoudiniUI.so> AP_Interface::si_CrashHandler::chaser(UTsignalHandlerArg) <libHoudiniUI.so> signalCallback(UTsignalHandlerArg) <libHoudiniUT.so> UT_Signal::UT_ComboSignalHandler::operator()(int, siginfo*, void*) const <libHoudiniUT.so> UT_Signal::processSignal(int, siginfo*, void*) <libHoudiniUT.so> [0xf70e] <libpthread.so.0> UT_StringArray::entries() const <libHoudiniUT.so> GT_AttributeMap::GT_AttributeMap(GT_AttributeMap const&) <libHoudiniGEO.so> GT_AttributeList::addAttribute(char const*, UT_IntrusivePtr<GT_DataArray> const&, bool) const <libHoudiniGEO.so> GT_PrimVolume::getPointPrimitive() <libHoudiniGEO.so> GR_PrimVolume::update(RE_Render*, UT_IntrusivePtr<GT_Primitive> const&, GR_UpdateParms const&) <libHoudiniAPPS3.so> GUI_GeoRender::updatePrimitives(RE_Render*, GR_DisplayOption*, UT_Array<UT_IntrusivePtr<GT_Primitive> >&, GT_RefineParms&, GR_UpdateReason, GR_DecorationOverride, char const*) <libHoudiniAPPS3.so> GUI_GeoRender::update(RE_Render*, GR_DisplayOption*, GUI_SetupResult, GR_DecorationOverride, char const*, bool&) <libHoudiniAPPS3.so> GUI_DetailLook::updateForRender(RE_Render*, GUI_DisplayOption&, RE_LightList*, GR_DecorationOverride, char const*, bool&) <libHoudiniAPPS3.so> DM_VPortAgent3D::setupGeometry(RE_Render*) <libHoudiniAPPS3.so> DM_VPortAgent3D::renderViewport(RE_Render*, int, int, bool, bool) <libHoudiniAPPS3.so> DM_VPortAgent3D::doRender(RE_Render*, int, int) <libHoudiniAPPS3.so> DM_Viewport::doRender(RE_Render*, int, int) <libHoudiniAPPS3.so> UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Viewport::reRender(RE_Render*, bool) <libHoudiniUI.so> UI_Window::renderChildViews(RE_Render*) <libHoudiniUI.so> UI_Window::doRedraw() <libHoudiniUI.so> UI_Queue::doWindowRedraws() <libHoudiniUI.so> UI_Queue::processNextEvent() <libHoudiniUI.so> UI_Queue::drain() <libHoudiniUI.so> UI_Queue::eventLoop() <libHoudiniUI.so> main_part2(int, char const* const*) <libHoudiniUI.so> main <libHoudiniUI.so> [0x1ed1b] <libc.so.6> _start <houdini-bin> Log version 2: Caught signal 11 AP_Interface::coreDumpChaser(UTsignalHandlerArg) <libHoudiniUI.so> AP_Interface::si_CrashHandler::chaser(UTsignalHandlerArg) <libHoudiniUI.so> signalCallback(UTsignalHandlerArg) <libHoudiniUT.so> UT_Signal::UT_ComboSignalHandler::operator()(int, siginfo*, void*) const <libHoudiniUT.so> UT_Signal::processSignal(int, siginfo*, void*) <libHoudiniUT.so> [0xf70e] <libpthread.so.0> RE_TextureFont::getGlyphInfo(unsigned int) <libHoudiniUI.so> RE_TextureFont::getStringWidth(unsigned char const*, unsigned char const*, UT_Unicode::transform const*) <libHoudiniUI.so> SI_DopeSheet::renderFrameIndex(RE_Render*, float, float, int, int, int, int, double) <libHoudiniUI.so> SI_DopeSheet::renderFrameIndicator(RE_Render*, int, int, float, float) <libHoudiniUI.so> SI_DopeSheet::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Window::doRender(RE_Render*, int, int) <libHoudiniUI.so> UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so> UI_Window::doRedraw() <libHoudiniUI.so> UI_Queue::doWindowRedraws() <libHoudiniUI.so> UI_Queue::processNextEvent() <libHoudiniUI.so> UI_Queue::drain() <libHoudiniUI.so> UI_Queue::eventLoop() <libHoudiniUI.so> main_part2(int, char const* const*) <libHoudiniUI.so> main <libHoudiniUI.so> [0x1ed1b] <libc.so.6> _start <houdini-bin>