Jump to content

Search the Community

Showing results for tags 'programming'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Lounge/General chat
    • Education
    • Jobs
    • Marketplace
  • 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 14 results

  1. hello everyone,i'm learning c++ and I'm new to Houdini HDK. I was reading another topic, someone told that you can use example files and manipulate them. so I have some questions for you: as you can see the header code and it's definition namespace HDK_Sample { /// Run a sin() wave through geometry by deforming points /// @see @ref HOM/SOP_HOMWave.C, SOP_HOMWave, SOP_CPPWave class SOP_PointWave : public SOP_Node { public: SOP_PointWave(OP_Network *net, const char *name, OP_Operator *op); virtual ~SOP_PointWave(); static PRM_Template myTemplateList[]; static OP_Node *myConstructor(OP_Network*, const char *, OP_Operator *); /// This method is created so that it can be called by handles. It only /// cooks the input group of this SOP. The geometry in this group is /// the only geometry manipulated by this SOP. virtual OP_ERROR cookInputGroups(OP_Context &context, int alone = 0); protected: /// Method to cook geometry for the SOP virtual OP_ERROR cookMySop(OP_Context &context); private: void getGroups(UT_String &str){ evalString(str, "group", 0, 0); } fpreal AMP(fpreal t) { return evalFloat("amp", 0, t); } fpreal PHASE(fpreal t) { return evalFloat("phase", 0, t); } fpreal PERIOD(fpreal t) { return evalFloat("period", 0, t); } /// This is the group of geometry to be manipulated by this SOP and cooked /// by the method "cookInputGroups". const GA_PointGroup *myGroup; }; using namespace HDK_Sample; void newSopOperator(OP_OperatorTable *table) { table->addOperator(new OP_Operator( "hdk_pointwave", "Point Wave", SOP_PointWave::myConstructor, SOP_PointWave::myTemplateList, 1, 1, 0)); } static PRM_Name names[] = { PRM_Name("amp", "Amplitude"), PRM_Name("phase", "Phase"), PRM_Name("period", "Period"), }; PRM_Template SOP_PointWave::myTemplateList[] = { PRM_Template(PRM_STRING, 1, &PRMgroupName, 0, &SOP_Node::pointGroupMenu, 0, 0, SOP_Node::getGroupSelectButton( GA_GROUP_POINT)), PRM_Template(PRM_FLT_J, 1, &names[0], PRMoneDefaults, 0, &PRMscaleRange), PRM_Template(PRM_FLT_J, 1, &names[1], PRMzeroDefaults), PRM_Template(PRM_FLT_J, 1, &names[2], PRMoneDefaults), PRM_Template(), }; OP_Node * SOP_PointWave::myConstructor(OP_Network *net, const char *name, OP_Operator *op) { return new SOP_PointWave(net, name, op); } SOP_PointWave::SOP_PointWave(OP_Network *net, const char *name, OP_Operator *op) : SOP_Node(net, name, op), myGroup(NULL) { mySopFlags.setManagesDataIDs(true); } SOP_PointWave::~SOP_PointWave() {} OP_ERROR SOP_PointWave::cookInputGroups(OP_Context &context, int alone) { return cookInputPointGroups( context, // This is needed for cooking the group parameter, and cooking the input if alone. myGroup, // The group (or NULL) is written to myGroup if not alone. alone, // This is true iff called outside of cookMySop to update handles. // true means the group will be for the input geometry. // false means the group will be for gdp (the working/output geometry). true, // (default) true means to set the selection to the group if not alone and the highlight flag is on. 0, // (default) Parameter index of the group field -1, // (default) Parameter index of the group type field (-1 since there isn't one) true, // (default) true means that a pointer to an existing group is okay; false means group is always new. false, // (default) false means new groups should be unordered; true means new groups should be ordered. true, // (default) true means that all new groups should be detached, so not owned by the detail; // false means that new point and primitive groups on gdp will be owned by gdp. 0 // (default) Index of the input whose geometry the group will be made for if alone. ); } OP_ERROR SOP_PointWave::cookMySop(OP_Context &context) { OP_AutoLockInputs inputs(this); if (inputs.lock(context) >= UT_ERROR_ABORT) return error(); duplicatePointSource(0, context); fpreal t = context.getTime(); float phase = PHASE(t); float amp = AMP(t); float period = PERIOD(t); if (error() >= UT_ERROR_ABORT) return error(); if (cookInputGroups(context) >= UT_ERROR_ABORT) return error(); GA_Offset ptoff; GA_FOR_ALL_GROUP_PTOFF(gdp, myGroup, ptoff) { UT_Vector3 p = gdp->getPos3(ptoff); p.y() += SYSsin( (p.x() / period + phase) * M_PI * 2 ) * amp; gdp->setPos3(ptoff, p); } if (!myGroup || !myGroup->isEmpty()) gdp->getP()->bumpDataId(); return error(); } my first question is: we have this int header file : SOP_PointWave(OP_Network *net, const char *name, OP_Operator *op); where is it's definition in *.c file? ----------------------------------------------------------------------------------------------------------------------------------------- my second question is: void newSopOperator(OP_OperatorTable *table) { table->addOperator(new OP_Operator( "hdk_pointwave", "Point Wave", SOP_PointWave::myConstructor, SOP_PointWave::myTemplateList, 1, 1, 0)); } why this function is void? I know because it won't return anything, but why it shouldn't? why newSopOperator's parameter is a class (i know a class is custom data type) but why? and what is table in the parameter? ----------------------------------------------------------------- BEST REGARDS
  2. Houdini HDK

    hello, nowadays I'm working on Houdini HDK I created a discord server to help each other this is the discord's link: https://discord.gg/RtNRscp and this is my blog:https://aminkhormaei1.wixsite.com/base i put solutions inside my blog. please share this post, maybe your friends are into developing a plugin for Houdini BEST REGARDS
  3. Is learning Processing a good idea and easily translatable to VEX? There are some excellent resources like Daniel Shiffman, who does a great job of explaining the foundations of programming.
  4. Please be invited for another edition of the Everything Procedural Conference on Wednesday April 24th at Breda University of Applied Sciences. This year we have again an amazing lineup of speakers, including Yossef Benzeghadi (Ubisoft Paris), Anastasia Opara (Embark Studios), Marc Braun (Blue Byte), Thomas Altenburger (Flying Oak) and Simon Verstraete (eXiin). Besides we are introducing on Tuesday April 23rd the Everything Procedural Open Podium, open for everyone interested to show and share their own endeavors regarding procedural content for games. On Thursday April 25th and Friday April 26th we will host a two-day SideFX Houdini Masterclass which will let you explore Procedural Animation and the newly introduced Procedural Dependency Graphs (PDG). The Everything Procedural Conference previously took place in 2016 and 2018 and is gaining strong recognition as a leading conference in the field of procedural content for games. Please share, all invited! http://everythingprocedural.com/ https://twitter.com/everythingproc https://www.facebook.com/everythingprocedural
  5. Hi everyone, After a successful first edition in 2016, the Everything Procedural Conference on procedural content generation for games will return in 2018. We have speakers confirmed from leading AAA game studios, which will be revealed shortly. The conference is not all Houdini related but might be of interest to all. Location is Breda, the Netherlands, Europe. http://everythingprocedural.com/ https://www.facebook.com/everythingprocedural https://twitter.com/everythingproc
  6. Hey, I was told that, that I have to use VEX to use Houdini efficiently, so as I have no expierence at coding at all and I dont know where to start with it, I want to ask you guys if you have any good resources or learning paths. Thanks Nick
  7. Hi, I am an experienced Software Engineer with a good eye for Visual Effects. I have over more than 10 years of experience in developing advanced software systems for simulation and animation companies. In addition, I've invested that last 5 years exploring and educating myself all about Visual Effects. Below is my demo reel. Please check https://www.linkedin.com/in/khaledabdelhay for more details on my technical/artistic skillset.
  8. Hi guys, This has boggled my mind for a while now. I have a OTL that has a tool script attached to it (Type Properties > Tool section), that evokes a PySide interface. The problem is that when I run the tool a few times, every single time a new instance of the interface is being opened, while the old one is still alive. So I'm ending up with lots of open windows of the same tool after a while which is super annoying. How can I prevent this from happening? I want to have only one single instance running at a time, basically close the old window if the tool is run again. Here's a really simple example that we could use as a test case. (Same problem if I run it as a shelf tool) from PySide import QtGui, QtCore class Window(QtGui.QWidget): """Simple Test""" def __init__(self): super(Window, self).__init__() self.setGeometry(50, 50, 500, 300) self.setWindowTitle("test") self.home() def home(self): btn = QtGui.QPushButton("Test Button") a_label = QtGui.QLabel("Test Label") qvbox = QtGui.QVBoxLayout() qvbox.addWidget(btn) qvbox.addWidget(a_label) qvbox.insertStretch(2) self.setLayout(qvbox) def run(self): self.show() main = Window() main.run() Some where I read that using the QEventLoop might help to detect running instances with hou.ui.eventLoopCallbacks(), but after trying some stuff for a few hours, I'm at my wits end. Help here would be much appreciated Thanks!!!
  9. Advanced Houdini Programming Course

    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.
  10. Effects Demo Reel 2015

    Hello Everyone! I just wanted to share my current demo reel! https://vimeo.com/111437682
  11. Link: CGWorkshop-- VEX in Houdini The course starts August 4th and runs for 8 weeks. I'm going to start out covering the basics of VEX, then we'll move on to some really fun projects. It's going be a good mix of visual effects related coding and really fun generative art. Check out the outline on the course website and if you have questions, ask away. I love teaching with Houdini as my blackboard, so I hope that comes across in the lessons. I want this course to kick ass; the world is full of boring programming classes and we don't need another! Happy Houdini'n -Shawn PS: XSI gals and guys, wanna learn VEX? I think I know a way... PS:PS: "Houdini'n" - is that a word yet. Can I say that?
  12. Hi Everyone, I have bumped into a problem, which I can't seem to figure out unfortunately. Basically I like to render things by splitting up the elements of a scene to be rendered by different Mantra nodes with different settings on them. I simply connect up two mantra nodes, and click render on the bottom render node so that these nodes are set in the render control to render in a "frame by frame" order, which triggers the top render node render frame one, then the bottom one render frame one, then the top one render frame two then the bottom one to render frame two, etc. I attach a file with a very simple test scene so you can see what I want to achieve. daisyChained_basicSetup.hip If You click render on the bottom render node, it will create the frames "frame by frame" switching node instead of rendering all frames of the top node then all frames of the bottom one. When I try to recreate the same type of "frame by frame" chained rendering in the command line, It does it "node by node", which means it does all frames of the top node then all frames of the bottom one, although the file is the same. I tried hbatch and launching the bottom rendere, and tried also using hscript, navigating to my bottom render node and using -c execute to "click" on the render button of the bottom render node from the command line, but unfortunately both gave me the same result with rendering one node fully and I ran out of ideas. Other than this, the render from inside houdini finds the location of the $HIP to render to correctly, whereas the command line render puts the files one folder above the $HIP (like ../). Any help/advice is much appreciated! Thanks, George
  13. VEX syntax definition for SublimeText

    Needs some polish, especially in regards to multi-line macros. Additionally, it'd be nice if vex had a header extension that didn't clash with c/c++. I'm manually specifying .h files as vex headers as needed, though the definition picks up vfl's automatically. https://gist.github...._tmlanguage-xml What it looks like with the Monokai Theme: Have Houdini related SublimeText enhancements to share? Snippets or build systems? Lets collaborate! -shawn
  14. Toonbox Entertainment is seeking the following TD positions: Pipeline / Generalist TD Show TD Generalist Programmer VFX TD Pipeline / Generalist TD A Technical Director (TD) provides critical support to a production's artists, team leads and supervisors. A TD will design, develop, implement and maintain new tools and processes for a particular project or department. As well, during production a TD will troubleshoot and resolve technical issues as needed to keep production moving forward. Additionally, a TD may be tasked with shot production work when needed and where the shot work appropriately matches the skill set of the TD. Show TD A Show TD provides critical support to a production's artists, team leads and supervisors. A Show TD will support and help maintain new tools and processes for a particular project. During production, a show TD will troubleshoot and resolve technical issues to keep production moving forward. Additionally, a Show TD may be tasked with shot production work when needed and where the shot work appropriately matches the skill set of the TD. VFX TD The VFX Developer is responsible for creating new, powerful tools or augmenting existing ones with innovative features that allow other studio artists or developers – whether fellow VFX crew, TD staff, technical animators, lighters or anyone else – to execute CG visual effects that support the styles and narratives of the stereoscopic films currently in production. Collaboration with all other crew members during design, development and production duties is critical. The collective goal is to generate exciting visuals using powerful and efficient tools and workflows. Requirements: · Experience working with and building tools for Maya, Houdini or any other production modeling, animation or effects software; also, exposure to Yeti or another fur and hair system is a plus. · Strong programming skills, including proficiency in Python, PyQt, MEL, and Linux shell scripting; C++ or C are a plus. · Production experience in computer animation, visual effects or game development. · Strong R&D experience in artist tool development and toolset integration within existing or new pipelines; a proficiency in mathematics is a definite asset. · Experience with Nuke, Fusion or other compositing software. · Experience with Renderman, 3Delight or other Renderman compliant renderers. · Experience with Tractor, Deadline, Qube or other render farm management software. · Experience with software version control systems like Mercurial, SVN, Git or other similar structures. · Ability to establish priorities, work independently or within a group, and work with minimal supervision. · Exceptional communication skills in dealing with both technical and artistic groups and individuals. · Exceptional trouble-shooting and problem solving skills. Education: · B.S. or M.S. in Computer Science, Engineering (or equivalent) is preferred. Other Desired Skills: · A strong combined technical and creative background with in-depth knowledge of current 2D and 3D computer graphics techniques as they are used in the feature film and media production industries. · A professional history of collaboration on projects with teams of varied sizes and disciplines. · RI filtering experience with Renderman compliant renderers. · UI development experience with PyQt or wxPython.
×