Jump to content

Search the Community

Showing results for tags 'hdk'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Lounge/General chat
    • Education
    • Jobs
  • Houdini
    • General Houdini Questions
    • Effects
    • Modeling
    • Animation & Rigging
    • Lighting & Rendering
    • Compositing
    • Games
    • Tools (HDA's etc.)
  • 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 71 results

  1. So I'm still building some microsolver nodes for water simulation. I noticed that all the microsolver I made including the Gas Add from the HDK sample all have a grey input point on the left. All built-in in gas node do not. Seems like this doesn't effect the execution result but I'm still curious how do I make a node that looks exactly like the built-in ones. And also, enable bypass on these nodes doesn't seem to work. Do I need to manually skip in solveGasSubclass()?
  2. I'm learning HDK and fluid sim by swapping out microsolver nodes in Houdini's built in FLIP solver. I've successfully changed the GasExternalForce node to my simple gravity node. It works okay but there's a small problem that bugs me a lot. So here's the implementation in the built in solver: There's a gravity node in the Auto DOP network (looks like the order doesn't really matter. I tried putting the gravity node before the flipsover and nothing changed.) And then in the flipsolver there's a GasExternalForces microsolver that apply forces on the particles. I deleted the gravity node and changed the GasExternalForces node to my implementation: bool SIM_HZExternalForce::solveGasSubclass(SIM_Engine &engine, SIM_Object *obj, SIM_Time time, SIM_Time timestep) { SIM_Geometry* geo = (SIM_Geometry*)obj->getGeometry(); if (!geo) { return false; } GU_DetailHandle gdh = geo->getOwnGeometry(); const GU_Detail* gdp_in = gdh.readLock(); // Must unlock later GU_Detail* gdp_out = gdh.writeLock(); GA_RWAttributeRef p_ref_vel = gdp_out->findPointAttribute("v"); GA_RWHandleT<UT_Vector3F> p_vel(p_ref_vel.getAttribute()); if (p_vel.isInvalid()) { return false; } for (GA_Iterator it(gdp_out->getPointRange()); !it.atEnd(); it.advance()){ int pid = it.getOffset(); UT_Vector3F vel = p_vel.get(pid); vel[1] -= timestep * 9.80665f; p_vel.set(pid, vel); } gdh.unlock(gdp_out); gdh.unlock(gdp_in); // Successful cook return true; } The problem is, the velocities in the first frame are all zero in the official implementation: But in my implementation, the velocities got changed in the first frame: I really want to know where this discrepancy comes from. Any suggestions? I've uploaded the source code and scene file if anyone is interested. GravityTest.zip
  3. I'm trying to work on a VDB SOP but I'm having problems compiling. I'm windows with Houdini 16.5 and I'm getting "unresolved externals". Along with the usual inclusions I have: #include <GU/GU_PrimVDB.h> #include <openvdb/openvdb.h> #include <openvdb/Grid.h> I'm compiling with cmake which looks like this cmake_minimum_required( VERSION 3.6 ) project( HDK_VolumeDeform ) list( APPEND CMAKE_PREFIX_PATH "$ENV{HFS}/toolkit/cmake" ) find_package( Houdini REQUIRED ) set( library_name SOP_VolumeDeform ) add_library( ${library_name} SHARED SOP_Volume_Deform.C SOP_Volume_Deform.h ) target_link_libraries( ${library_name} Houdini) SET(COMPILE_FLAGS "-TP -std=c++11 -DOPENVDB_3_ABI_COMPATIBLE") add_definitions(${COMPILE_FLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS}") target_include_directories( ${library_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ) houdini_configure_target( ${library_name} ) Strangely enough, the program does compile if I don't try use iterators, though I'm sure there is a lot that would break it. I've also tried with Hcustom, but running with that yields the same problems. Does anyone have any suggestions? Thank you very much!
  4. I need to have context for some calculations inside newContextData method of COP2_Node class. Is it safe to call getContext from inside this method?
  5. I need to know the size of the COP2 node for some input node. I can get a sequence info (TIL_Sequence) by calling getSequenceInfo member function of COP2_Node class. But it has only resolution info (getRes function), which is a visible size of the image, not an actual size.
  6. Hi guys, I need to make a login GUI in Houdini so that users can input their usename and password to log into our internal server to download assets for editing. The username control is easy but the password one is hard in that it needs to mask the input, e.g. with ‘*’. Is there any way to make this happen? Thanks for any inputs! I'm working on Houdini 16.5 and our plugin needs to know the login status, so it's better that the suggested way can communicate the status between C++ code. Thanks, Quan
  7. Hi everyone. I encountered a few problems compiling HDK assets for Houdini 17 using cmake. Houdini seems unable to detect the assets even though they build just fine without error. I use the community edition of visual studio 2015 update 3, and as far as I can tell, this is the correct version for Houdini 17 ?? When I try a simple SOP_Star example with Hcustom it does not work either as I get the error: Failed to run C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\Hostx86\x64\cl with error 2: The system cannot find the file specified. This path does not seems to exist but when I use cmake it targets this dir: This path exists in Visual studio 2017 but not in 2015. However, when I try with cmake, it finds the compiler here: CProgram Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe And creates the solution just fine. When I build the solution however, it does not show up in Houdini... I have been using a similar procedure to compile assets with cmake for earlier versions of Houdini with no issues. Reading thourgh the HDK docs for comiling with cmake, they suggest parsing the argument "Visual Studio 14 2017 Win64" Does this version even exist ? I have not been able to locate it... I have tried to compile with VS 2017 as well without luck. So do anyone know what the problem might be ?
  8. We pull out service information about the processes and sign next to the node. The plugin is compiled for Linux, Windows. Houdini HDK 17.0 Plugin Link: https://drive.google.com/open?id=1KKri5K-m41ZRr4XukwqTYHmeGGz_e6f_
  9. Hi, I`m trying to create a SOP node, that basically does the same thing as the copytopoints SOP in Houdini but with a Box deformation added to it. Now I was able to copy the detail from the second Input into the gdp, but I find myself unable to access the newly added geo to actually offset it to the corresponding point in the first input. I want to add that I am a noobie when it comes to HDK (as you can probably see) and any help is much appreciated and thanks in advance. OP_ERROR SOP_copyPTs::cookMySop(OP_Context &context) { OP_AutoLockInputs inputs(this); if (inputs.lock(context) >= UT_ERROR_ABORT) return error(); const GU_Detail *firstGDP = inputGeo(0, context); const GU_Detail *secondGDP = inputGeo(1, context); UT_AutoInterrupt progress("still copying..."); duplicateSource(0, context); GA_RWHandleV3 Phandle(gdp->findAttribute(GA_ATTRIB_POINT, "P")); GA_Offset firstPToff; GEO_CopyMethod copymethod = GEO_COPY_ADD; GA_FOR_ALL_PTOFF(firstGDP, firstPToff) { if (progress.wasInterrupted()) break; gdp->copy(*secondGDP, copymethod, true, false, GA_DATA_ID_CLONE); UT_Vector3 Pvalue = Phandle.get(firstPToff); } Phandle.bumpDataId(); return error(); } i got it to work! (propably a pretty bad way to do it but it works) (orientation is working as well now but its not in the code down below) I am still very interested how experienced users would have written it. :S GA_FOR_ALL_PTOFF(firstGDP, gridPoints) { if (progress.wasInterrupted()) break; GU_Detail *newgdp = new GU_Detail(); GA_RWHandleV3 newPhandle(newgdp->findAttribute(GA_ATTRIB_POINT, "P")); newgdp->copy(*secondGDP, copymethod, true, false, GA_DATA_ID_CLONE); GA_Offset spherePoint; UT_Vector3 pointPos = Phandle.get(gridPoints); GA_FOR_ALL_PTOFF(newgdp, spherePoint) { UT_Vector3 spherePos = newPhandle.get(spherePoint); UT_Vector3 addedPos = spherePos + pointPos; newPhandle.set(spherePoint, addedPos); } gdp->copy(*newgdp, copymethod, true, false, GA_DATA_ID_CLONE); }
  10. I am asking because of this text in documentation (https://www.sidefx.com/docs/hdk/_h_d_k__intro__compiling.html#HDK_Intro_Compiling_CustomAllocators):
  11. I was working on some custom json nodes. I wanted to export some data using json format, so I did that like as follow in cookMySop: UT_JSONValueMap *rootMap = new UT_JSONValueMap; UT_JSONValue *floatV = new UT_JSONValue(35.0); rootMap->append("Value1", floatV); rootValue->setMap(rootMap);//rootValue is an object of UT_JSONValue rootValue->saveToFile("G:\\test.json"); after that, I wanted to remove temp exporting data: rootValue->setNull(); delete rootMap; rootMap = nullptr; delete floatV; floatV = nullptr; however, using "delete" caused an error. without "delete" everything works fine, but I am afraid there can be some memory leakage. is there something wrong?
  12. I'm looking for documentation or an example of creating a SOP with the HDK that can be used in a compiled "for each" loop, as described here: https://www.sidefx.com/tutorials/houdini-16-masterclass-compiled-sops/ Thanks!
  13. Hi everyone Is it possible to store a sparse_matrix data structure across multiple time steps without reforming it at every time step ? I am writing a custom dop solver, so I would like to store it as subdata but I am not quite sure how to do it so any help would be greatly appreciated. I have not really been able to find any examples of this in the documentation ...
  14. Hello, I started learning hdk. I need to find a nearest point, what the best way to do this? I have an example code in attachments. But it doesn't work as expected. Thanks sandDunes.cpp sandDunes.h
  15. I can follow the code written in Tutorial and can be compiled. Parameter can be created. However, there is no way to create an attribute. mycircle.h #include <SOP\SOP_Circle.h> #include <OP/OP_Parameters.h> class SOP_MyCircle : public SOP_Circle { public: SOP_MyCircle(OP_Network *net, const char *, OP_Operator *op); static OP_Node *MyConstructor(OP_Network *net, const char *name, OP_Operator *op); static OP_TemplatePair *buildTemplatePair(); protected: OP_ERROR cookMySop(OP_Context &context); private: fpreal COLORX(fpreal t) { return evalFloat("color", 0, 0); } fpreal COLORY(fpreal t) { return evalFloat("color", 1, 0); } fpreal COLORZ(fpreal t) { return evalFloat("color", 2, 0); } }; mycircle.cpp #include <UT/UT_DSOVersion.h> #include <OP/OP_OperatorTable.h> #include <OP/OP_Operator.h> #include <OP/OP_Context.h> #include <OP/OP_Network.h> #include <SOP/SOP_Node.h> #include "mycircle.h" #include <stdio.h> static PRM_Name colorName("color", "Color"); static PRM_Default colorDefaults[] = { PRM_Default(1), //r PRM_Default(0), //g PRM_Default(2) //b }; static PRM_Template newParmsTemplates[] = { PRM_Template(PRM_RGB, 3, &colorName, colorDefaults), PRM_Template() }; OP_Node *SOP_MyCircle::MyConstructor(OP_Network *net, const char *name, OP_Operator *op) { return new SOP_MyCircle(net, name, op); } SOP_MyCircle::SOP_MyCircle(OP_Network *net, const char *name, OP_Operator *op):SOP_Circle(net, name, op) { } OP_TemplatePair *SOP_MyCircle::buildTemplatePair() { OP_TemplatePair *old, *my; my = new OP_TemplatePair(newParmsTemplates, 0); old = new OP_TemplatePair(SOP_Circle::myTemplateList, my); return old; } OP_ERROR SOP_MyCircle::cookMySop(OP_Context &context) { SOP_Circle::cookMySop(context); fpreal now = context.getTime(); fpreal clr_r = COLORX(now); fpreal clr_g = COLORY(now); fpreal clr_b = COLORZ(now); GA_Attribute *cd_attr = gdp->addFloatTuple(GA_ATTRIB_PRIMITIVE,"Cd",3); GA_RWHandleV3 h(cd_attr); GA_Offset off = 0; h.set(off, UT_Vector3(clr_r, clr_g, clr_b)); return error(); } void newSopOperator(OP_OperatorTable *table) { table->addOperator( new OP_Operator("myCircle", "myCircle", SOP_MyCircle::myConstructor, SOP_MyCircle::buildTemplatePair(), 0, 0) ); } mycircle.cpp
  16. Hi, Im here because I need some lights. Currently I created a simple Vex code to simulate gravity on a set of points using a solver node. https://youtu.be/1w-swIRCvjA It was very fun and easy to do it in VEX, but what I want to do is learn HDK so I don´t have idea how to do it in C++. I've researched a lot and founded writing DOPs could be an option, unfortunately the documentation about writing a simple DOP is not so clear. BW I googled to see if there is a simple example but it looks all the available codes are very old. I don´t know if some one may point me in the correct direction to do a simple solver and if writing a custom DOP is the correct way of do it. Thank you.
  17. If I have a face primitive, how do I find the faces which share an edge with the face? I don't seem to be able to find a function in GEO_HedgeInterface which will do this. And GU_Detail::buildRingZeroPrimitives appears to return all faces which share a point with the face in question, which is not what I need. In VEX, I've done this in a attribute wrangle which runs over primitives by calling primhedge(), which gives me a half-edge in the face, which I can then use to circulate around the face and query for edge neighbours. Any help immensely appreciated! ~Kevin
  18. Hi, I'm new to both houdini and HDK. Curretnly I'm trying to import some raw image into the houdini. There are no headers in those raw images and each pixel is a 4 byte floating point value. I've tried both plugin way just like what IMG_SAMPLE does and FBio table way but both of them failed. Neither the structure of plugin nor the structure of image loading program used in FBio table was well explained or companied with a good sample. I'm kind stucked, so can someone please help me with it in ways like explaining it in a little bit more detail or informing me any already existing plugin or tools I can use. Thx a lot! Cheers!
  19. Hi! I'm new to HDK and starting with some samples. I managed to make several samples such as SOP_Star.C work but failed to compile IMG sample which is a plugin used to add new file format support to houdini. I'm useing VC14 and Houdini 15.5.717 I'm compiling with nmake, Makefile and command line tool of Visual studio 2015. And whenever I try to compile IMG sample with command "nmake Makefile.nmake", it tells me " 'sesitag' is not recognized as an internal or external command, operable program or batch file. NMAKE: fatal error U1077: 'sesitag' : return code '0x1' " Any idea how to solve this out?
  20. 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!
  21. 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
  22. 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
  23. 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
  24. Mixed Mode Debugging

    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?
  25. 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
×