Forgot your password?   Click here   •   No account yet?   Please Register    •   Or login using  
EN Login
SideFX Homepage
  • Products
    • What's New in 19.5
      • Overview
      • Solaris
      • Karma
      • Character FX
      • Pyro FX
      • FLIP Fluids
    • Houdini
      • Overview
      • FX Features
      • CORE Features
      • Solaris
      • Houdini Indie
    • Houdini Engine
      • Overview
      • Engine Plug-Ins
      • Batch
    • PDG
      • Overview
      • FAQ
    • Compare
    • SideFX Labs
    • Partners
  • Industries
    • Film & TV
    • Game Development
    • Motion Graphics
    • Virtual Reality
  • Community
    • Forum
    • News Feed
    • Project Profiles
    • Gallery
    • Contests & Jams
    • Houdini HIVE Events
    • Event Calendar
    • User Groups
    • HEX Interview Show
  • Learn
    • Getting Started
    • My Learning
    • Learning Paths
    • Tutorials
    • Tech Demos
    • Talks & Webinars
    • Schools & Training
    • Education Programs
      • Overview
      • Students
      • Instructors
      • Administrators
  • Support
    • Customer Support
    • Help Desk | FAQ
    • System Requirements
    • Documentation
    • Changelog / Journal
    • Report a Bug/RFE
  • Get
    • Buy
    • Download
    • Content Library
    • Contact Info
 
Advanced Search
Forums Search
Found 256 posts.

Search results Show results as topic list.

Houdini Indie and Apprentice » expand vex array from [A,B,C] to [A,A,A,B,B,C,C] ?

User Avatar
friedasparagus
402 posts
Offline
 Feb. 13, 2019 13:18:27
Hi Andr,

This was fun There are simpler approaches using a temporary array, but makes a nice challenge trying to do it without (it's possible that it would end up faster too, but how big an array we'd need in order to notice… I'm not sure).

Have a gander and see what you think:
// need to expand the array size by a variable amount, so that its original elements are repeated evenly
// original array [A,B,C], expanded by 4 should return: [A,A,A,B,B,C,C]

i[]@array = {1,2,3,4,5};

int expand_count = chi("expand");
int input_len = len(i[]@array);
int output_len = input_len + expand_count;
// vex may well optimize this for us, but still a good habit to
// resize an array only once if we know the desired array size in advance
// rather than call append() or insert() inside a loop
resize(i[]@array, output_len);

for(int i=input_len; i>0; i--)
{
    // we want to write out the i-th input value to the highest 'unwritten'
    // output index until i doesn't fit in our unwritten range 
    int inner_loop = output_len/i;
    for(int j=0; j<inner_loop; j++)
    {
        // write the i-th input value to the end of the unwritten portion
        // of the output array
        i[]@array[output_len-1] = i[]@array[i-1];
        // reduce the size of the unwritten portion
        output_len--;
    }
}

I haven't had a change to properly untangle what was up with your original code, but my first guess is that you were getting bitten by the data dependencies between ‘count’ and 'i@array' inside the loop.

Cheers!
See full post 

Technical Discussion » Python operator parameter update

User Avatar
friedasparagus
402 posts
Offline
 Feb. 4, 2019 06:23:05
Hi,

It is most likely the object transform caching that is preventing the update - if an obj node's transform hasn't changed, houdini will skip cooking the node (unless you have some other time dependency somewhere, like any old parm with a $F expression for example).

To get around this just disable the ‘Cache Object Transform’ parameter on the node… On stock obj nodes this is in the ‘Misc’ tab, you might have to expose it on your asset (the asset is missing in the file so couldn't check thoroughly), or just set it's default value to 0 if you keep it hidden.

Hope that helps,
Henry
See full post 

Houdini Indie and Apprentice » mesh deforming (urgent rigging problem)

User Avatar
friedasparagus
402 posts
Offline
 Jan. 4, 2019 11:42:29
I *think* that the something is struggling with processing overlapping points in the capture lines that refer to different capture regions. Haven't been able to properly dig in, but placing a Fuse SOP in between the capture lines and the second input on the Solid Embed seems to get things working
See full post 

Houdini Indie and Apprentice » mesh deforming (urgent rigging problem)

User Avatar
friedasparagus
402 posts
Offline
 Jan. 4, 2019 05:44:37
Hi eyestorm,

Do you have a hip file you can share? Much easier to pin it down in context

Cheers!
See full post 

Houdini Indie and Apprentice » Copy SOP/VEX experimenting - Scaling not working like I was expecting

User Avatar
friedasparagus
402 posts
Offline
 Dec. 4, 2018 08:22:14
Hi Rob,

You should find that dividing by (npt-1) inside the chramp() should fix things. So:

float pt = @ptnum;
float npt = @numpt;

f@circleSize = chramp("circleSize", pt/(npt-1)); // change to (npt-1) here!
@pscale = fit01(@circleSize, 0.2, 0.5);

In your file npt == 9, so now when pt == 8 the division spits out 1 rather than 0.88888.

Hope that helps,
Henry
See full post 

Technical Discussion » OBJ level python states

User Avatar
friedasparagus
402 posts
Offline
 Oct. 19, 2018 12:55:54
OOOOO! Fun bags!
See full post 

Work in Progress » Object Wrangle preview

User Avatar
friedasparagus
402 posts
Offline
 Sept. 7, 2018 04:29:34
Hi,

Sorry for the radio silence here, been buried away working at the project which I think has reached a decent point to share another update. So here it is

The roundup of the features finishes around the 8:30 mark, and after that there's a run through of setting up a ‘cone’ constraint to an object using vops, just as a demo of the potential process in case that's of interest.

Cheers!

See full post 

Work in Progress » Object Wrangle preview

User Avatar
friedasparagus
402 posts
Offline
 Aug. 21, 2018 11:52:58
Hello out there,

Here's a little look at a little ongoing project. Stay tuned for updates


Cheers!
See full post 

Houdini Indie and Apprentice » Bone pre_xform python

User Avatar
friedasparagus
402 posts
Offline
 Aug. 8, 2018 11:05:14
Hello,

I think you're probably looking for bone.moveParmRotateIntoPreTransform(). Or you can use bone.setPreTransform(some_Matrix4)
See full post 

Technical Discussion » .ds File Spec

User Avatar
friedasparagus
402 posts
Offline
 June 20, 2018 05:45:38
Ah! Thanks Koen,

I had a feeling there was something like this lurking around. Unfortunately, I believe it's an option only available to those with a full commercial license.

Would still be great to have the spec written out somewhere for reference
See full post 

Technical Discussion » .ds File Spec

User Avatar
friedasparagus
402 posts
Offline
 June 19, 2018 06:34:43
Hi Daryl,

There doesn't appear to be a defacto spec written down anywhere I can find, hopefully there'll be some soon! The best sources for this information at present appear to be the wonderful SOP_WindingNumber project in the $HFS/toolkit/samples/SOP folder.

The DS file starts on line 390 of SOP_WindingNumber.C and includes examples of many parameter types, the other place to look is possibly $HFS/houdini/python2.7libs/generate_proto.py which actually parses the .ds file - the dsparm() function at line 1487 is worth a gander at.

Not the cleanest set of docs on the topic, but make for interesting reading anyway. Hope that's useful

Cheers,
Henry
See full post 

Technical Discussion » Problems with rotation matrix

User Avatar
friedasparagus
402 posts
Offline
 June 1, 2018 07:34:34
Hi Redcroft,

Nothing wrong with the code there, the problem was to do with the timeshift and getting the prev_pos value. With the timeshift set to $F-1, the rot wrangle will only compute the dist travelled over the last timestep, which is why you'll notice the ball straighten up when it changes direction - the dist is very small. You can get you're existing setup to work by changing the timeshift to use the first frame (as I've done in the file), but this of course only gives you the right motion when moving in a straight line through the origin, as the dir will always be computed from there. I stuck a curve based animation in there to see that clearly.

All you need to do is take your existing setup and stick it in a Solver SOP, this way we can continuously update the dir and the distance based upon the previous frame (which I'm guessing was you're instinct ).

I swapped around the prev_pos and cur_pos in the ‘rot’ node within the solver, just to make accumulating the rotation a bit simpler.

Hope that's useful
Cheers!

PS Forgot to mention one of the perks of using the solver sop is that we can increase substeps to improve the accuracy of the rotation, super handy for fast motion!
Edited by friedasparagus - June 1, 2018 07:39:56
See full post 

Houdini Indie and Apprentice » Turning many groups into a single integer attribute

User Avatar
friedasparagus
402 posts
Offline
 May 29, 2018 17:35:19
Hi B,

you can use the ‘Name SOP’ to create a primitive attribute from groups. You can do any iterations you wanted using that attribute in for-loops etc… so you may well be able to stop there.

Or if you really want an integer attribute you can look up the index of that new ‘name’ attribute in the “primitivegroups” detail intrinsic attribute (see the attached file). Bear in mind that the ordering of groups is not very easy to keep track of or control if you need to change any groupings upstream, so your integer attribute may not behave as you might expect, depending what you want to do with it.

Hope that helps,
Henry
See full post 

Houdini Indie and Apprentice » How to get object worldspace xform after constraints/chops

User Avatar
friedasparagus
402 posts
Offline
 May 25, 2018 08:51:12
Hey,

This isn't very clear from the docs, so I wouldn't beat yourself up

The Get World Space CHOP grabs what Houdini calls the ‘preconstraint transform’. The first input in most CHOP constraint setups will be this node pointing to the object being constrained (with the relative path “../..”). This prevents recursion problems.

In your case you'll be wanting to use the node listed as ‘Object (Constraints)’ under the network editor tab menu. This one fetches the final (post-constraint) world transform of the object, or the final relative transform to the node pointed to in the ‘Reference’ parameter (leave this blank for World Transform).

Be wary of recursion problems if you get too involved in intercepting/rebuilding transform hierarchies through constraints… Even though the ‘Get World Space’ chop node grabs the pre-constraint transform of the target object, that pre-constraint transform still contains any post-constraint transforms that are present in its parents. So attempting to set constraints on a parent object based upon a child object's preconstraint transform will still result in ‘infinite recursion’ errors.

It's more than likely you can ignore that last paragraph as it's something that generally only happens when you try something daft (as I have done many, many times)
Edited by friedasparagus - May 25, 2018 08:51:48
See full post 

Technical Discussion » storing @P to @mypos doesn't work

User Avatar
friedasparagus
402 posts
Offline
 May 20, 2018 10:46:46
Hi Olivier,

apart from a small list of reserved attribute names (like @P and @N) you need to tell houdini what type the attribute is. Replacing @mypos with v@mypos should fix things
See full post 

Technical Discussion » boneCapture_pCaptData Row Order confusion

User Avatar
friedasparagus
402 posts
Offline
 May 16, 2018 13:15:37
Ha… quite right, quite right I meant to be more emphatic, as in ‘have I missed something really obvious?’

EDIT: As it turns out, yes I was missing something really obvious - the alignment of the cregion… which is itself a child transform. And as the matrix represents the cregion transform, not the bone, the default z-axis alignment would produce the matrix in the attribute… I'm going to sleep now and hope that I wake up with my brain screwed in
Edited by friedasparagus - May 16, 2018 18:36:57
See full post 

Technical Discussion » boneCapture_pCaptData Row Order confusion

User Avatar
friedasparagus
402 posts
Offline
 May 15, 2018 14:47:08
Hello,

I'm very possibly exposing my own ignorance here, but I haven't been able to wrap my noggin around why the row order in the boneCapture_pCaptData detail attribute as produced by the ‘Capture Attribute Unpack’ is the way it is (x, z then y).

I was attempting to do some manipulation of the capture position transforms in SOPs and of course casting the first 16 floats of the array to a matrix produces a lovely, nonsensical transform.

Any clues most appreciated!

Cheers,
Henry
See full post 

Houdini Lounge » Capture Layer Paint select cregion from mesh

User Avatar
friedasparagus
402 posts
Offline
 May 13, 2018 13:22:38
Hey Jordi,

Heh, this one only started as an idle afternoon show-and-tell Got a little more involved in the end…
When I've got a healthier contingent of polished tools together then I'll certainly look at resurrecting a repository.

Cheers!
See full post 

Houdini Lounge » Capture Layer Paint select cregion from mesh

User Avatar
friedasparagus
402 posts
Offline
 May 11, 2018 07:44:14
Ok, couldn't resist. Here's the updated version…

Fixes include
Undo handling improved - the tool will properly stay in the capture layer paint state either when applying or exiting the dialog
Dialog appear next to the mouse position upon clicking

Improvements (hopefully):
Cleaner UI
Coloured bars to help quickly distinguish the influence of each bone
Clicking outside of a button will close the dialog with no change to the bone selection

Enjoy
See full post 

Houdini Lounge » Capture Layer Paint select cregion from mesh

User Avatar
friedasparagus
402 posts
Offline
 May 9, 2018 15:40:58
Hey Philipp,

CYTE
one little nitpicking caveat: is it possible to spawn the selector window near the mouse cursor and not in the center of the screen?

Haha! Yes, that thought was on my mind too. I'd love to clean up the pyside stuff here and make the ui a little more slick. Hopefully I'll be able to get round to that very shortly.

Glad you find it handy!

Henry
See full post 
  • First
  • 1
  • 2
  • 3
  • 4
  • Last
  • / 13
  • Quick Links
Search links
Show recent posts
Show unanswered posts
PRODUCTS
  • Houdini
  • Houdini Engine
  • PDG
LEARN
  • Learning Paths
  • Tutorials
  • Talks & Webinars
  • Schools & Training
  • Education Programs
SUPPORT
  • Customer Support
  • Help Desk | FAQ
  • Documentation
  • Report a Bug/RFE
  • Sales Inquiry
LEGAL
  • Terms of Use
  • Privacy Policy
  • License Agreement
  • Accessibility
  • Responsible Disclosure Program
COMPANY
  • About SideFX
  • Press
  • T-Shirt Store
  • Careers
  • Internships
  • Contact Us
Copyright © SideFX 2023. All Rights Reserved.

Choose language