Jump to content

JKeil

Members
  • Content count

    28
  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Everything posted by JKeil

  1. Hey all, I am looping a piece of geometry along a curve, and am controlling the scale of each copy using @pscale --itself being controlled via a ramp Is there any way to increase the functionality of pscale so that I can scale the object separately in the x and y axis? id like to have control over the x and y scaling parameters separately if possible. ive attached a scene file. Thanks! Modeling_Ramps_upl.hipnc
  2. Hello! Im trying to set up a traditional rig on the object level. However, I would like to have the rig ctrls (nulls) be adjustable using info from the target objects sop level. (See attached) In the file, I have a sphere, this is my object I will be animating. I have a top and bottom control on the object level. These are my nulls, and they are set as nurb's circles. How can I set up my rig so that the top null is pinned to the top of the circle and the bottom null is pinned to the bottom of the object even if the sphere changes its scale? So, here was my failed methodology. In the sphere (target object), on the sop level, I moved the spheres pivot point to the top of the object using the YMAX function in a transform sop. I then naively tried to just copy this channel to the top control null's Translate Y channel on the object level and it threw an error--though the null did move to the right spot..... The basic problem it seems is the translate sops use of local parameters to get info. This makes it really difficult to use pivot info in places other than that sop. If the translate sop contained just numerical info, this data would transfer easy enough. Now, if I used a point vop, I could quickly used the bounding box vop to get the max size of the object as an attribute. Can I use THIS to drive the ctrl nulls starting positions? Fishing for ideas here. I apologize if this is a really ignorant question. Feel free to tell inform me of a completely different way to do this stuff. Any help or pointers would be great! Thank you! Rigging_01.hipnc
  3. Hey, Question about the poly extrude-specifically curve from second input (scene file attached). The poly extrude node does not maintain 100 accuracy when you extrude along a curve. Curious as to why that is? The sweep node does, but it doesn't have the ramp controls built into the polyextrude which would be so useful. Are there any ways around this-- besides replicating what is within the polyextrude with one hell of a wrangle. ..... Thanks! extrude_upl_v001.hipnc
  4. Hey all, Any way to pass a vector besides @up and @N through the copy sop unchanged-specifically their cross product (v@cross)? So here is what I have. I am doing some pseudo rigging on points using quaternions. I have four separate lines, each with @up, @N, and v@cross vectors aligned in a specific way (see file). For the sake of stability, and visual convenience, I am using quaternion rotations to animate the point vectors themselves, up stream of the copy sop. If you visualize cross, up and N youll see what I mean. When I get to the copy sop, two things happen. The attached objects are copied and aligned correctly (with N aligning with the up and up as N, respectively). However t the cross product is not coming through unchanged. This is a problem for this rig specifically. The cross products were set up explicitly in the beginning, and Id like them to stay that way without any, well, unnecessary effort Any way to resolve this within the copy sopy sop itself? On my end I am working on work arounds, but it is a bit manual, and redundant. Currently I making an attribute for each of the 4 lines, then after I copy the objects, I am recreating the cross product and then realigning afterwords using conditional statements tied to the attribute in a vop sop. Thing is, id rather not have to do this, especially if my iterations increase significantly, this management system might get out of control. Any suggestions would be helpful! TO clarify, I am familiar with @orient, and I use it for getting quick stable rotations, but right now this is more of a technique thing, and I feel like having three implicit control vectors you can visualize, and pass through the copy sop unchanged would be very helpful. Thanks! 121017_matrix4line_v008_upl.hipnc
  5. Hey, How do I randomize the scale on lines being fed into a for loop? Im used to using copy stamping for this but am trying to us the new methods. Ive attached a file. Im currently trying to drive the pscale attribute with either a wrangle or the new attribute expression sop. I have the loop set up correctly, and the meta data node referred to as iter1 is added as spare inputs for both. I cant put the rest together though. Thanks for the help! Chops_120617.hipnc
  6. Hey all, interesting little math dilemmna here. The problem is refining cross product alignment on a simple 6 primitive box (see attached). Basically here is where I am at. Im doing some work on quaternion based rotation systems. Got a neat rig in place for geometry with well designed uvs-- 6- stacked quaternions for 3 axis--pitch, roll, and yaw, using vectors @N, @up, and v@cross - respectively. I thought I had a really solid system in place, until I test it on.......a box......... The issue is the cross product itself. The cross products are aligning themselves sequentially-- basically wrapping around the box (see scene visualizer: "cross"). I mean it makes sense, but for the purpose of this scene, I need to have all of the cross products pointing 1) towards the y axis, and 2) away from the object itself, and I want to do it procedurally. Any trig solutions solutions to this? 12517_matrix_upld.hipnc
  7. Orientation Matrix Help?

    thanks galagast. That was incredibly intuitive and helpful (thanks for the notes within the file as well).
  8. Hello all, I am trying to get a firm grasp of orientation matrixes: special thanks 1) to tokeru, 2) this site 3) and this page here https://www.sidefx.com/forum/topic/6679/ for helping me get a grasp of how the copy sop works with N, Up, and Orient. Im getting it slowly, but now Ive hit well, a road block lol. I have attached an example file. Basically here is what I have: I have a curve , and am attaching other lines to this curve using a copy sop. These curves have a stamped random noise, a stamped random scale, and most importantly, an orientation attribute that forces them to wrap around the line at the angle I specify. . Thing is I want to do to 2 more things to these lines. I want to be able to control their angle or orientation away from the curve, and I also want to be able to skin geometry along the lines as well, having the geometry skinning hold up if I do any rotations. Here is where it stands now (just head to attached if that makes it easier). The following code is where I get my initial @orient info for the copy stamp. I am using the transform within the copy sop to 'tweak things' (mostly likely the source of the problem). Wrangle 1: @rotter = float(@ptnum)/float(@numpt); //the incrementally increasing angle I will use within my quaternion. In the following vop sop I fit this value between 0 and 360-- then promote the attribute. Wrangle 2 (after vop sop) @angle = radians(@rotter); vector axis = @N; //this defines the main path (y axis?) of my line. I tried both @N --generated using polyframe tangent u, and just an arbitrary up vector (0,1,0)--both had issues matrix3 m = ident(); rotate(m, @angle, axis); //rotating around my specified vector @orient = quaternion(m); //promotion to usable attribute It works great! Sort of. The way this is set up I have limited control over additional rotation, and cant control the axis during skinning. If I set the vector axis to the normal, then with no rotation within the copy sop, the skinning works at first. When I rotate it though, the tubes start to flatten (see attached). Conversely, if I just use an Up vector (0,1,0), the skinning only works when there is not transform, and now the tubes point straight up! Not what I want at all. Ill point out that this transformation in Z within the copy sop is actually perfect for this secondary rotation control, of only the skinning would follow suit. Okay! My thoughts for a solution. I tried to build a new Up and N vector within the loop itself, but this did not seem to help. Not sure if this is a precedence thing or what---after all the rules of the copy sop might not apply to skinning. I then tried to generate a new orient attribute but this didnt work either. I have a hunch that WAY back in time, my original orientation wrangle MIGHT need a bit more info. Any pointers would be great! Thank you water_flower_v005_upl.hipnc
  9. Thanks! Using the inverse of the current point position to transform it back, prior to copy but after the stamped attribute. Perfect. And thanks for showing me a new expression point(surface_node, point_number, attribute, index).
  10. Hey all. Trying to rap my head around a problem. I am copying a line to a curve. I have a simple noise applied to the line to be copied. The issue is the noise is going to be the same for each copy I make. I would like to randomize the noise if possible without changing key parameters like amplitude or roughness. I have attached a file--it is what is within the purple backdrop. Atypically I would do this via stamping: if I was trying to randomize scale i would create a scale attribute in the copy sop and then stamp this back upstream into a transform. Problem is, there are no parameters for noise (as far as I can see) that I can use as sort of fake SEED attribute to actually stamp in the first place. Amplitude, roughness, are a no go, as is 3d Frequency. 3d offset, which might work, shifts the noise off the origin, which creates a problem when it comes to copying the line to the curve in the first place. I would like it to stay snapped to the origin if I can. I was originally trying to use the 3d offset and then a fit range within vops to to snap the initial point (0) back to the origin, but wasn't having much success. I would prefer to avoid the brute force approach of setting initial point values to zero using setpointattrib if possible. Any suggestions on how to get around this? Thanks! stampingnoise_o.hipnc
  11. PtNum Shuffle?

    Thanks for the post, makes perfect sense
  12. Hey All, Simple question here. If you have a line, can you randomize the ptnum using only the existing ptnum values (0-24) and associated P positions? So ptnum 1 (0,4,0) is now ptnum 7 (0,12,0), ptnum 3 is now (0,12,0), replacing ptnum 12, etc. I know you can do this with a Sort Sop (random) but I'd like to do it in a Vex Sop Specifically, and then in a wrangle afterwards--its a tech challenge thing. I feel like this is simple and Im missing something pretty basic. Also, bonus question, what is the difference between ptnum and id in vop globals? They are behaving as if they were the same thing when I am running orders (say random) across points. Thanks!
  13. Drive Attribute with Chops

    Matt it makes perfect sense! Thanks for the excellent and detailed explanation--il be saving this post for later reference. Onward!
  14. Hey all, doing some chops studies here. I would like to use a channel I have created in chops (jitter) to drive the scale parameter within a jitter node. (See attached--red backdrop). I believe I have everything set up correctly, but apparently I cannot just plug in the attribute jitter, or its channel name, to get the desired affect? And this is despite the fact tha I can see the jitter float attribute in the geo spreadsheet behaving the way I want it to. What gives? Looking through some stuff on Tokeru (love that site!), I noticed that when chops are used to drive attributes, it is often to drive ones that exists already, say a channel called zscale being applied to zscale in an extrude later downstream. Is this the way you have to do this? Or maybe I am missing something very simple. Thanks! chop_studies.hipnc
  15. For Loop Versus Copy Sop?

    Thanks Again, appreciate all the help.
  16. Hello all, Im trying to replace the copy sop with the for loop in a project file (see attached). I've been building it while following some training from an older tutorial. Honestly, I am getting pretty frustrated with my inability to understand how to make a For Loop iterate through points over time-it pretty much indicates how little I understand about how Houdini processes data. Any pointers on this? Also, anybody willing to show me a few things for this in an attribute wrangle rather than a for loop would be amazing--Ive been REALLY trying to learn this software, and I feel like every time I start making progress, I hit some seemingly simple pothole of a problem, and inevitably can't get passed it. Like this one, I tried to figure this out myself for a while, now I'm all but giving up (until tomorrow of course! )and asking for help . Sorry for the noob post. Thanks! Ive attached the project file. Procedural_Animation_v003.hipnc
  17. For Loop Versus Copy Sop?

    That is! Thank you very much. Its the second time ive seen a meta import node used within a loop. If you dont mind me asking a couple questions? So you created a meta import node, which is linked to the timeshift sop-utilizing the detail variable iteration. Did you have to create this iteration variable or is it generated by default with the meta data node, along with numeriterations, value and ivalue? Also, your expression, i can see it is subtracting the iteration number from the frame number, how come this now has the ability to force the points to populate over time? Does it have something to do with the spare input0. Regardless Ill try to decode this. Thanks for the help!
  18. Hello all, Im trying to replace the copy sop with the for loop in a project file (see attached). I've been building it while following some training from an older tutorial. Honestly, I am getting pretty frustrated with my inability to understand how to make a For Loop iterate through points over time-it pretty much indicates how little I understand about how Houdini processes data. Any pointers on this? Also, anybody willing to show me a few things for this in an attribute wrangle rather than a for loop would be amazing--Ive been REALLY trying to learn this software, and I feel like every time I start making progress, I hit some seemingly simple pothole of a problem, and inevitably can't get passed it. Like this one, I tried to figure this out myself for a while, now I'm all but giving up (until tomorrow of course! )and asking for help . Sorry for the noob post. Thanks! Ive attached the project file. Procedural_Animation_v003.hipnc
  19. Hey All--revising my earlier question Simple question here. Id like to randomly reorder the points on a line WITHOUT using the sort node. I dont want positions to change (@P) just the ids (ptnums)-- self imposed technical challenge. Example start: ptnum 1 @P {0,1,0}; ptnum 2 @P {0,2,0}; ptnum 3 @P {0,3,0}; ptnum 4 @P {0,4,0}; ptnum 5 @P {0,5,0}; ptnum 6 @P {0,6,0}; Example Desired result ptnum 3 @P {0,1,0}; ptnum 2 @P {0,2,0}; ptnum 1 @P {0,3,0}; ptnum 5 @P {0,4,0}; ptnum 6 @P {0,5,0}; ptnum 4 @P {0,6,0}; I know you can do this with a Sort Sop (random) but I'd like to do it in a Vex Sop Specifically, and then in a wrangle afterwards--its a tech challenge thing. I feel like this is simple and Im missing something pretty basic. This is what it says about the Random method for Sort Random Using the random seed, each point or primitive is assigned a random priority. They are then reordered according to that priority. This has the effect of generating a random ordering of the points or primitives. Helpful info or not in this case? If so, how can I apply this in a Vop Sop, and then later on if possible an Attribute Wrangle. All the random operators within the point vop give arbitrary new positions, so I dont really know how to go about doing this. In python, the solution is a prexisting method for random so that is not helpful here either. import random >>> x = [1,2,3,4,5] >>> random.shuffle(x) >>> x [5, 2, 4, 3, 1] A pointer in the right direction would be appreciated. Thanks Also, bonus question, what is the difference between ptnum and id in vop globals? They are behaving as if they were the same thing when I am running orders (say random) across points within the point Vop. Thanks!
  20. Hey all I am working my way through Ari Danesh's Attribute wrangle tutorial, and I am at the point where he uses a wrangle to generate a costumizable curve, one that uses the golden ratio value to dictate its curvature. I am having a little trouble understanding a specific point in the code (see attached file) Here is the full code f@G = (0.618033989)+ch("pattern_offset"); //the golden ration in radians f@rad = ch("radius"); @rad *= ch("growth"); f@rot = @G * (@ptnum); @P.x += @rad*cos(@rot)*@ptnum*.001; @P.z += @rad * sin (@rot) * @ptnum *.001; @N.x = @P.x; @N.z = @P.z; @N.y = @P.y * ((@Npt- @ptnum)*ch("flatness")*.1); @up = {0,1,0}; @pscale = (@ptnum/(@Npt - 1.0))*2; My issue is with these three steps right here f@rot = @G * (@ptnum); @P.x += @rad*cos(@rot)*@ptnum*.001; @P.z += @rad * sin (@rot) * @ptnum *.001; I am failing to see how multiplying the ptnum by the golden ratio, then using the sin or cos of this value and assigning it to the points position in space, gives you the result you desire. A bit of a technical breakdown of this would help. Initially, I thought that I would have done it differently. I would have tried to use the golden angle (rather than golden ratio) and used it directly to direct the circular movement of my point values in my primary axis and secondary axis, and then controlled the y axis similar to the way he did with channels. However, I realized this would only work if each point move happened sequentially in a solver or an l system. If I applied the cos and sin of 137 to each point at the same time, I would just move the line entirely, not generate curvature. Ugh, I wish I understood this better. Is this method something of a workaround in the first place? Any help explaining Ari's method from a math perspective would be really helpful, along with perhaps alternative solutions to the same problem. Thank you! wrangling_golden ratio_public.hipnc
  21. Hello all, Is there a way to reduce the scale of an object instanced onto points? Each iteration or copy would be slightly smaller than the original, tapering down over time. Im trying to incorporate For Loops into my modeling workflow, and I'm trying to think of a way to add scale and rotation controls. Ideally, id like to control the scale with a ramp within a Point or attribute Vop inside the For Loop, but I might not be thinking about this the right way. I should add that within the polyextrude, there are some really interesting ways to control the shape and taper of extrusions-- not available in other 3d packages for modeling purposes I might add--specifically the spline controls. Id like to be able to use these concepts while working with curves and lines as well if possible. Any thoughts on this? Thanks in advance! modeling practice02.hipnc
  22. Hello all, I am currently trying to work my way through this class https://www.youtube.com/watch?v=WbfGN8yOVys to get a solid understanding of how looping is set up in Houdini and I am getting lost. I was actually trying to rebuild this tutorial https://vimeo.com/132844157 in H16, and realized I didnt have a strong enough grasp of how loops worked to even begin. Atypically I can find my way around by looking into the documentation, but for some reason the documentation on how the if then blocks and for loops work is not as descriptive as some other node descriptions have been. I will say that I understand at least basically the concept of looping, and also have used neighbor count and neighbors nodes in the past, but from 15:00 on (in the first video) it is getting hard to not only replicate his result but understand WHAT he is doing, which is far more important. Does anyone have a bit of time to give a more thorough explanation of the process in the video? I understand that he is (I think) trying to run the original RGB values of the original points across the neighbors, and in process of these needs to utilize the index of the for loop as a way to clamp the distribution of color. But that is about as much as I understand. I dont know what the index of the loop actually is, it starts at 1 and not zero in this case. I DO understand that the neighbor count not only stores the number of neighbors, but a cartesian coordinate for each one, and so is enough in and of itself to allow you to apply color to the neighbors in 3d space, but the math is not adding up on my end, and the variable he adds is not working like he says it should do in my own script--and I know it is because I dont understand the process itself well enough. I hope this is not too vague. I'd really appreciate it if someone could give a more um, beginning oriented explanation of this process? Please! Or at least direct me to some videos that can help me understand it better. -- I dont want to be just pressing buttons. Thank you! pipes.hipnc
  23. Hey all, I posted earlier to get some help on l-systems and was quickly given some advice--- thanks on that. My question here is a bit more general, and it is more about the long term potential of dedicated l system studies within houdini itself. I am about a month into my research, and I understand that l systems can be incredibly powerful, having uses far beyond trying to replicate the flora of nature by way of breaking down growth patterns, or generating fractals of established or new types. Main focus within research for TD work as of now is optimizing a pipeline for plant growth --that is, for the generation of plants coming into flower, for fruits growing on trees, and the like. This is a complicated area, and as far as animation goes l systems core architecture is vital to this--which is why I am working in l systems in the first place. As of now there are many programs designed specifically for generating plant life quickly---plant factory, onyx, and several others. I have concerns about their workability in the long term though, for instance: --lets say the target goal was a photoreal daylily growing to full scale and then coming into bloom--front and center 4k resolution. I feel that the more of this process I can keep in Houdini the better off I will be, considering the subtle nuances that will be required for the animation will be linked so strongly to the mesh propagation procedures. The thing is, it will make my process at times more difficult on the modeling side, largely because designing the structure for the plant itself will be more challenging the more complex the plant and the flower. And for some occasions if I could set something up off of useful presets in another package it would admittedly, be easier (if less satisfying). Any thoughts on this? Again this is general not specific---hoping this can be more about conjectures and ideas than anything else, and perhaps an interesting topic for debate and thoughts at the very least-- an example area of interest within this overall context --- methods for connect an l system for the main stems to another for the roots-------- the list is really endless (in a good way). As an aside, I don't want to get too far into the study of something that may not in the end get us to the results we are looking for down the road anyway. If anyone could point me to any resources or material that would be appreciated as well. Again, if the goal was more iterative large scale propagation precepts --- a combination of onyx and Houdini's amazing environment generation tool sets would be feasible, but we are looking for 'hero assets' and as much work will go into the growth, and final render of that growth as anything else. It has been fascinating journey so far, though there is admittedly no much to show for it as of now. Thank you all By the way---as an artist who as only lately transitioned to Houdini, I can honestly say that there is no 3d package I enjoy using more. Houdini 16 is coming......
×