Jump to content

yourdaftpunk

Members
  • Content count

    38
  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by yourdaftpunk


  1. Houdini has to decide which function to call. It's looking at these two function signatures:

    float  noise(float)
    vector noise(float)
    

    And it has to pick one. The parameter in both is a float, so that doesn't help distinguish between the two. Houdini next looks at the return values. Do any of those possible return values make sense with the next operation? Your expression is:

    (noise(seed) - 0.5)
    

    And Houdini sees that you subtract a float, thus you must want a float back. Houdini chooses:

    float  noise(float)
    

    That value then gets multiplied by a float, your "speed" parameter, then the float is assigned to the vector distort. When a float is assigned to vector, the behaviour is to set each component to the same value. It's an implicit cast. That's what you noticed. The solution is to explicitly tell Houdini you want a vector back, even though you're about to subtract a float from the result. The full line becomes:

    distort = (vector(noise(seed)) - 0.5) * ch("scale");
    

    This is function casting. It's not a full cast from one variable type to another, so it's fast.

     

    Cheers,

    Shawn

    • Like 2

  2. Thought this was worth reposting here incase you didn't catch um @ sidefx.com.

     

     

    Shading and Shader Building (Kai Stavginski)

     

    https://vimeo.com/142534640

     

    This masterclass provides an overview of new and existing shading features in Houdini 15. This includes an introduction to the new SHOP shaders as well as shading and layering in VOPs. We also take a deeper look at working with BSDFs to build custom shaders.

     

     

    Loops in Sops and Vops (Jeff Lait)

     

    https://vimeo.com/142534639

     

    Houdini 15 has introduced a new way to do loops in VOPs and SOPs. This masterclass provides an overview of the new looping constructs. With the new constructs; effects that used to require significant technical knowledge to achieve with Foreach SOPs can now be readily built.

     

     

    Grain Solver (Jeff Lait)

     

    https://vimeo.com/142534638

     

    Houdini's grain solver uses Position Based Dynamics to simulate sand. This masterclass describes what that means and re-builds the sand solver from microsolvers. It also provides some insight and advice in how to tweak the grain solver's parameters to get the effects you desire.

     

     

    And follow GoProcedural on vimeo if you're not already.

     

    Cheers,

    Shawn

    • Like 3

  3. Anim, I do intend too. I see it as three bugs to report:

     

    1) Arnold's handling of NANs.

    2) Arnold's handling of certain topologies without NANs which seem valid in Houdini (the point delete issue I mentioned).

    3) Houdini's/VDB's issues with certain particle to vdb operations and/or sdf smoothing operations.

     

    For the third bug, if I can find the time I need to:

     

    1) Remove custom otls and slim down the network to the problem area.

    2) Transfer the 1.2GB particle cache frame going into the mesh nodes so they can diagnose the issue.

    3) Write up some additional observations which I think will help.

     

    It's my last week on the job so I would put all this well bellow finishing :) I'm also curious what would happen if I wrote that mesh out as an alembic or obj. Would it be loadable in other apps? Would Houdini gracefully bring it back in?

     

     

    I hope this post helps some future TD banging her head against a monitor. NANs are part of the floating point specification along with INF values and software needs to properly take this into consideration. Much like non-manifold geometry, this stuff will crop up from time to time, or it will come into houdini through the external pipeline. I remember educating compositiors about the issue years ago when they first started moving to Nuke 6 / exr-half and they couldn't understand why some renders had black pixels which couldn't be easily fixed and grossly contaminated neighboring areas when blurred (protip- Houdini has a builtin cop node called illegalPixel with a cute icon for handling this). The solution then was a simple expression much like the vex code above.


  4. A problem I've now had twice in production is NAN valued points in hi-res meshes generated from vdbs. Out of maybe 10 million point meshes per frame across 100 frames I'll get one or two meshes with 200ish bad primitives (prims with garbage points, so far NANs, but I bet infinite values wouldn't play nice either). These meshes look fine and render fine in Houdini and the bgeo's are the same size as the other frames. If you finish in Houdini, you'll never know there is a problem. The bad prims are tiny and just not drawn as they have no position.

     

    However, caching out .ass files results in silently truncated frames. There are no errors when writing out these .ass files from the in house tool. The corrupt frame gets rendered in Maya and no mesh shows up or it throws and error and I get an email about issues with my mesh which, again, look fine in the viewport. Files are about half the size they should be so truncation is clearly happening.

     

    If this sounds like something you're experiencing, consult the spreadsheet and sort your position values by any channel and if you have not-a-number values it'll look like this:

     

    post-926-0-88361200-1439841436_thumb.png
     

    If you're familiar with vex, you may know there is a NAN testing function called isnan() which will work on a float so we can test against each position channel and if any fail the test we have discovered our bad geo. A word of advice though- don't just delete the bad point, delete the bad primitive! For whatever reason, Arnold doesn't always find the geo well formed when culled by points in Houdini. You'll often get a vertex mismatch error during rendering and another email. So the safe solution is to walk over primitives in a wrangle and test the points of the current primitive. If any fail the NAN test, delete the entire prim:

    // PrimitiveWrangle code
    int cull_prim = 0;
    int pt;
    vector pos;
    
    for (int i=0; i<primvertexcount(0, @primnum); i++) {
    
        // convert the prim vertex -> linear vertex -> point number
        pt = vertexpoint(0, vertexindex(0, @primnum, i));
    
        pos = point(0, "P", pt);
        if (isnan(pos.x) || isnan(pos.y) || isnan(pos.z)) {
            cull_prim = 1;
            break;
        }
    }
    
    if (cull_prim)
        removeprim(0, @primnum, 1);
    

    If anyone has a better solution, I'd love to hear it. I'm a bit disappointed by how brittle the Arnold/.ass combination is compared to Houdini's handling of floating point values. Vertex mismatches and NAN errors have wasted too much of my time. On the other-hand, Arnold renders look great! 

     

    Cheers

    Shawn

    • Like 1

  5. Hi Diego,

     

    This has me a bit miffed. That's unbelievably bold to sell a pirated course. And to a small community no less! This ain't Maya, yo!

     

     It is always frustrating to see my workshops being pirated, but its an occupational hazard unfortunately.

     

    Yup, and I almost saw it as a right of passage when my course was first pirated. Was gonna happen, nothing to be done. But these guys have serious chutzpah to resell others' work. Grrrr.


  6. Just a quick heads up, VEX in Houdini is running for a third term and slots are still available. Week 1 starts on July 6th:

     

    http://www.cgsociety.org/training/course/vex-in-houdini

     

    I've been updating materials for Houdini 14 and started covering the useful changes. CVEX is taking over, dummy-nulls are resigned to the history books, and isn't that wrangle parameter script award worthy? Can that get VES statue?

     

    Cheers

    -shawn


  7. Thanks for posting here, the message system is a bit... rough. I've heard word they are updating the entire platform though so look forward to improvements.

     

    Second, you sound like exactly like the audience I had in mind for this course! Sorry about using the visual effects lingo, I'm going to update the landing page at some point. In the broadest sense, TD, or technical director, is someone who doesn't mind programming or tool building to solve a problem. That could be a specialized lighting rig of some sort, a procedural building generator in Houdini or just someone with the scripting know-how to troubleshoot a pipeline. Lots of TDs are self-taught programmers- artists that are highly motivated to learn on their own and love to take a crack at a hard problem. 

     

    Basically, if you've done any sort of programming and you're comfortable with houdini you'll probably do fine. It also helps to have a bit of linear algebra knowledge- understand what a vector is, what it means to normalize a vector, how to add vectors, dot-product and cross product, etc. I'm not currently providing a math cheat sheet but I may in the future if there is a demand. There are already lots of great free videos and resources on the subject. Additionally, if you're up to date on the free sidefx videos, peter quints videos, you're in a really good place! And you'll be able to ask me specific questions when the class starts which is a huge help if you avail yourself of the forums.

     

    And yup, Cinder is the bomb.com and my good friend Justin is over at the Barbarian Group working with Andrew, Robert and all the crazy brilliant Cinder devs. Went to a cinderdome once, they are a fun crew!

     

    -shawn


  8. - is it necessary to have some knowledge on houdini interface etc prior in order to follow correctly your workshop?

     

    I'd say so as this is not a beginners course. If you really want to take it, you have 5 weeks left to get comfortable with the program, but it's challenging because Houdini is deeper than any other 3D package so you need to commit several hours to watching the sidefx videos (which are great btw!) and going through example scenes that come with Houdini as well as tearing apart the networks which the shelf tools build. You have the programming background which is great and that will get you far in Houdini's procedural world.

     

     

    - if you decide to repeat the course next year do you know when would it be most probably? summer as well? (that would be great for me!)

     

    No firm plans, but I'd like to repeat and summers are preferred for me too. This depends on my day job :)

     

     

    - how much workload would this workshop take?

     

    I may have an update on this later as I'm currently just starting to record and design assignments. I'm trying to cover my material with a similar commitment to video length/assignments as the courses by Spencer Lueders (Fluids) and Robby Thomas (Python in Houdini) which I've been auditing as good examples. So if you've taken similar courses that's the reference point. More specifically though, if you have little Houdini experience or little programming experience I expect it to be far more challenging and time consuming- you might be up all night reading docs and hammering away at code.

     

     

    - i dont know if out there in the world there are jobs that allow you to do this mixture of tasks: art related & code. Are there any?

     

    Sounds like you've got the bit nailed that most artists stumble with- programming. Marc and Netvudu's answers are right on point. You'll be desirable to VFX studios if you're straddling both worlds confidently. As for games, I imagine it's the same, but you'd have more mentors as far as coding goes. Hell, you're on your way to being a one man indie game studio if you can program and handle the art assets yourself.

     

     

    Good luck if you decide to join us and do study that Houdini interface hard! Find an excuse to do something in each context and work on moving data from one network to another.


  9. @henrik

     

    I get this question a lot and I might be biased but I think Processing is by far the easiest way to start. It's a very visual, friendly environment and the community rocks (just like Houdini!). It was built at the nexus of art and programming with teaching specifically in mind.

    http://processing.org/

     

    And as far as books go, Nature of Code is great and it's pay-what-you-want:

    http://natureofcode.com/

     

    What you learn there can easily be translated into VEX when you're ready. The difficulty in Houdini is actually understanding the contexts and how everything fits together. You have vops, wrangles, inline vex in vops, vex otls, external vex... All that is on top of SOPs/SHOPs/DOPs/*OPs and at some point the artist's head explodes sending chunks of brain and nodes against the wall :P

     

    So try Processing as a dedicated environment to learn and play. If it ever becomes too slow, transition to libcinder which is the sports car edition:

    http://libcinder.org/

     

     

    Learn this once and you can apply it everywhere. The core programming concepts and the core math behind CG doesn't change. Good luck!

    • Thanks 1

  10. Johnathan, I definitely want to teach it again and improve it with post-course feedback. Two things determine if we'll offer it again:

     

    1) Does the course sell? If it's subscribed to well enough then it'll probably run again. I realize that VEX in Houdini is definitely niche and the demand for dynamics courses like Spencer's will always be higher.

     

    2) How much time do I have to commit? Assuming 1) goes well, I need to not be too busy with the day job and life. I'm going freelance soon so I'll have some measure of control over this.

     

    That said, I hope I get another shot because it's gonna be fun!

    • Like 1

  11. Please teach some vector and matrix math too. This will save me from explaining it to new artists.

     

    I feel your pain! As I'm just starting to record lectures I have the freedom to cover as much additional math content as I want, but at the same time I don't want to overwhelm any students. Most of the papers we're implementing are not too math heavy- minimal linear algebra/trig/calc (basic integration- several students will be doing it without realizing it's from calculus). I hope I get a lot of feedback after the class is over as to what I need to cover more in-depth or, conversely, back off on. I've already spoke with a delightful artist in the class who has a physics background so some will clearly be more than qualified. If I had TA's, he would be nominated to answer all math questions in the class forums.

     

     

    Apart from that, mix in cross product, orient quaternions and building orientation matrices.

     

    Check, check, check. We'll definitely be instancing and orienting tons of boids. For quats, we can at least build them and slerp between them, talk about their advantages over Euler angles.

     

    Potentially mixing in different coordinate systems (spherical, cylindrical) might be nice too.

     

    For sure we'll talk about other coordinate systems. For polar coordinates I've got a great one-wrangle node example of a tron disk (something I would have done in a completely different way pre-13), was thinking about doing something cool with phyllotaxis (sunflower spiral). And for spherical coordinates, scattering points uniformly in a sphere comes up at least once.

     

    Half my networks are full of vops doing custom things, so it is so crucial for new artists to have a solid understanding of vops/vex. I think what you are doing is great.

     

    Mine too these days. Thanks!

     

    The CVEX stuff should be fun.

     

    I'm hoping they extend it to allow us to create more types of geometry- for example, after connecting points as polylines you have to drop down a convert node to go to nurbs. Wouldn't it be great to loose that step? And I'd love to have the ability to create geo at rendertime, connect polylines and polygons, as you do in SOPs CVEX. I love the point replicate procedural, but it just hands you the points to place.

    • Like 2

  12. vex_letters_01_950.jpg

     

    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?   :)

    • Like 5

  13. Updated VEX functions for Houdini 13, there is also now a github repository if anyone wants to contribute snippets or plugins specific to VEX and Houdini:

    https://github.com/WhileRomeBurns/VEX_Syntax

     

    And if you use Package Control with Sublime, you can install the latest version and keep it up to date automatically like so:

     

    Open the Command Palette (Shift-Cmd-P in OS X, Shift-Ctrl-P in Linux/Windows) and select "Package Control: Install Package". Find and install "VEX Syntax" and you're set for life. 
    • Like 4

  14. It gives me an error 'could not find data for blob "hou"'. Any one had this problem before?

    Sounds like you did everything right. I really need to write up a tutorial on Sublime + Houdini.

    The fix for SublimeCodeIntel is an annoying one. In Sublime, go to Preferences>Browse Packages and drill down to this directory:

    \Sublime Text 2\Packages\SublimeCodeIntel\libs\codeintel2

    In there, open manager.py and edit line 447 to be:


    MAX_FILESIZE = 4 * 1024 * 1024
    [/CODE]

    Save and restart Sublime and now when you type hou.[something] SCI will give you suggestions. The error was occurring because SideFX made the hou.py huge- it's over 2MB of code, mostly comments. I've asked for a preference to make it easier to adjust the max file size to scan:

    https://github.com/SublimeCodeIntel/SublimeCodeIntel/issues/350

    And the reason it is set to 1MB is because Open Komodo Edit, the origins of this tool, had a bug with files above a certain size. The default used to be 50MB, so I think it's safe to bump it a few mb :)


  15. Tell sublime to build with hython using your own custom python build system. Create a new build system (Tools > Build System > New Build System). Set "cmd" to point to your current version of Houdini-- notice I'm using build 487:


    {
    "cmd": ["C:/Program Files/Side Effects Software/Houdini 12.5.487/bin/hython.exe", "$file"]
    }
    [/CODE]

    Save as Hython.sublime-build and then in your python script tab where you are importing hou, go to Tools > Build System > Hython. Now when you hit Ctrl-B it should run no problemo.

    You can create different build systems for different houdini/hython versions and switch between them easily.

    If everything is working, you should be able to kick off a cache for a smoke sim scene from sublime with Ctrl-B using:

    [CODE]
    import hou
    import time

    HIP_FILE = 'C:/path/to/scene.hip'
    CACHE_NODE = '/obj/import_smoke/import_smokefields'

    print( 'Sim starting: %s' % time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) )

    # load scene
    hou.hipFile.load(HIP_FILE)
    # press cache button
    hou.node(CACHE_NODE).parm('execute').pressButton()

    print( 'Sim done: %s' % time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) )
    [/CODE]

    • Like 2
    • Thanks 1
×