Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Everything posted by George

  1. Siggraph 2006

    Thanks for the pictures! Looks like you guys had an awesome time. I sure missed you folks. Maybe next year, huh? George.
  2. That's a good one Jason, I logged it, thanks. Simon is right, the "Shortest Path" algorithm in PolySplit won't really give you the shortest path on an arbitrary mesh. It is a little more complicated than just ray casting (see attached contrived file, for an example of how it can traverse bridges -- only the two end edges were selected). But it is greedy and will try to only move in the direction that gets it closer to its target. I also can't climb walls that are at 90 degrees. Quad strip on the other hand is nice because it doesn't care at all about your geometry, it cuts based on the topology. Take care, George. polysplit_bridge.hip.gz
  3. Evalling One Level At A Time

    Not to mention how double quotes can seemingly be randomly stripped out, or spaces truncated. Dealing with strings in hscript in general is a pain. In fact I think there's already a bug to that effect: "Strings in hscript are a pain" George.
  4. Evalling One Level At A Time

    Yeah, I'm usually guilty of wanting to unify everything The things to consider is that a node is not a parm... so you can't generally interchange them. Your example of opfullpathfrom though is a case where they can be interchanged and I tihnk it should probably be fixed for that. I'll submit a Bug Take care, George.
  5. Evalling One Level At A Time

    Hmmm... as a workaround from opfullpathfrom not supporting parms could you do this in your script: set old_cwd = `oppwd()` opcf $rop # get the value you want with `chsraw($newfield)` opcf $old_cwd Still not elegant though... I hear ya. George.
  6. Evalling One Level At A Time

    Hi Jason, I don't think there's currently a generic way to do that elegantly. But it should be fairly easy if you're sure that the expression in mantra1/picture is always of the form `chs("...")`, to use the chsraw to read in the destination reference and then another chsraw to read in the value there... something like this horribly untested chicken scratch: `chsraw(arg(strreplace(chsraw("ropnet1/mantra1/picture"), '"', ' '), 1))` ... but maybe you were looking for a good answer? George.
  7. Visibilty Sop

    Hi Simon, I think this is actually much easier than that. Houdini picks up a special group named "__3d_hidden_primitives__" and doesn't display prims in that group. Look in GU_Types.h for GU_HIDDEN_3D_PRIMS_GROUP define and use that to add primitives to it. I think that's all you need to do to hide primitives. (The 2D visibility one is to hide primitives from the UV viewport). Hope that helps, George.
  8. Color Picker Ui Widget

    Hi Simon, Does something like this work? PRM_Template(PRM_RGB_J, 3, name, default) George.
  9. Looping Through Edges

    Hi Simon, I don't think there are any methods in GEO_PointRefArray that will allow you to remove points, you'd have to setup your own data structure for that (maybe as simple as a UT_BitArray to mark visited points)? The other method I forgot to mention is GEO_Primitive::edgeApply() which maybe helpful also. You can loop through all the primitives and call edgeApply() and keep track of the points -- it might simplify some code. Hope that helps, George.
  10. Looping Through Edges

    Hi Simon, For looping through edges you could try the GQ library. It can build a quad-edge representation of your gdp. It has limitations though. The other thing you could try is a GEO_PointRefArray. The PointRefArray gives you, for each point, the list of primitives using that point. So instead of looping through primitives, you could loop through points and therefore visit each edge only once. Also, have a look at GEO_Closure. There are helper methods in there that make use of a PointRefArray to do edge-related things. Both GQ and PointRef need to scan your entire gdp to get started, so it could be slow to build those structures -- though it is supposed to be a one time cost. Hope that helps. George.
  11. Thekenny

    Congrats Ken! George.
  12. Hi Daniel, The normal mode of operations for SOPs is that someone (the viewer, the renderer ROP, etc...) requests a geometry at a specific time. This time is passed in to the cook method in the context data. So I think you have to manually keep track of the last time you cooked and then call your simulation incrementally until you get to the requested cook time. If you have a good way of caching data, all the better. Hope that helps, George.
  13. Baby Horsfield

    Congratulations Marc!!
  14. Links!! Links!!

    Or maybe on a social bookmarking website like http://del.icio.us/? George.
  15. Rendering Curves With Prman

    Ah! Thanks for reminding me Alex. I made an HDA for this a while back intending to post it to the exchange whenever I got a chance to clean it up. Well I never got around to cleaning it up But it's up there now: http://www.sidefx.com/exchange/download.ph...id=272&type=OTL Take care, George.
  16. I Need Once Per All To Understand The Following...

    Thanks that does make it a bit clearer. As for getting more control over the global extrusion handle, does it work for you if you detach the handle (') and then move the handle to the pivot location and reattach (' again)? That may give you more control. Also, if it sin't too much trouble, would it be possible to post an .obj or .geo of the result you'd like to do in a single polyextrude? Thanks! George.
  17. I Need Once Per All To Understand The Following...

    Actually I think what you're experiencing here is a new bug that may have been introduced with the new shear parameters. I'll submit an RFE for adding more symmetry options, but if you'd like to add a specific case, please send it on into support and they can attach it to the RFE. Hmm.. I'm not sure. But the bigger problem, I think, is that the local frame will still be computed from the main face and the resulting rotated frame might still be completely wrong for your other faces...? Hmm.. that's surprising. Are you sure doing inset won't solve your problem? Inset is what I use when I want to scale my faces in -- it works much better than scaling because it should give you a nice uniform spacing around the edges... but inset doesn't do non-uniform insetting... if inset doesn't give you what you want, could you describe the kind of scaling you're looking for? Thanks! George.
  18. I Need Once Per All To Understand The Following...

    That's exactly right. That's the problem that was being avoided by having "no symmetry" option use a frame that's dependent on the first polygon. Because you're right, if we just use the first edge, then that edge just might be oriented in the opposite direction (giving you *really* unexpected results) or even orthogonal to the first one. And since the handle is presented on the first polygon, you'd want the rest of them to follow along in a somewhat natural order. Which I guess brings up your next point. The only axes we know we want for sure are the Z's to line up with the respective normals. So we come up with a frame from the first polygon, then we find the rotation from that Z to our face's Z and apply the same rotation to the first face's x and y to use as our x and y. But there you may run into some issues too, where you can have reversed frames where you might not expect them. Also you're still a little off because you're dependent on the potentially whacky frame that was created for the first polygon. (Imagine for example extruding a square and a trapezoid together, and you pick the trapezoid as your first face -- in that case the square is still going to have an "unexpected" space because its x-axis may not be aligned with its edges). Still I think there's more we can do here. Thanks Mario, George.
  19. I Need Once Per All To Understand The Following...

    Alright, let's see if I can try to explain what's going inside PolyExtrude's brain. The first thing to note is the very significant difference between Local and Global transforms. In Local, the face that was selected is used to compute a local transformation. The frame is built using the normal and the first edge of that polygon. So 'X-axis' in local space is really not at all 'X-axis' in global (which is the x-axis you would expect). In local space, X-axis is along the first edge, Z-axis is along the normal and Y is the remaining orthogonal axis. A quick test, just pick a face and change the local TZ parameter -- you'll see it extrudes along its normal. Okay, now we've selected multiple faces though. How is the local matrix computed for each face? That is controlled by the Local Symmetry option. If set to no symmetry, then the frames for the "other" faces are built from their normal, and from one of the axes of the original polygon (who's handle you're moving). The other symmetry options, use the normal of the face, but the other axes are mirrored. The purpose for all of this is to get symmetric behaviour when extruding on two opposite ends of a model (e.g. horns on a character, wings on a plane, etc...). The reason I think you're seeing behaviour you don't expect is because the other faces aren't using their own edges for local x and y axes. If this is the real source of the problem, then I think it should be added as a fourth option to local symmetry, since it seems it would give folks more expected behaviour if they didn't know all that was going on behind the scenes with the symmetry. Note though, that even with this option, depending on how your geometry is modeled, the "first" edge could be very different from one polygon to the other -- (that's why the no symmetry option tries to use a more or less consistent frame). Now as for the Global option, that is the safest to use when you want to scale and rotate many polygons at the same time, because it applies exactly the same transform to all the polygons -- with a very predictable frame. I hope I helped more than confused George.
  20. Development Enviroinment

    I think MSVCDir has to be set to the root of your MSVC install. Do you have $TOOLROOT defined? I think it should be set to the same thing... if not try setting it to just D:/Visual_Studio .NET_2003/Vc7 (without the include). George.
  21. Try: echo ~/houdini8.0/scripts/test.cmd arg | hscript -v xx.hip Does that work? George.
  22. Group Entire Object By Position

    Give this a try too: After you have a Group SOP that has only the partial points that you'd like, pipe in another Group SOP, make a point group, and go the Edges folder. There is a parameter called Edge Depth, crank that up very high (to cover each rock) and in the Point Group underneath, put in the partial points group from above. Hope that helps. George. P.S. In version 7.0 and before you can only put in one point, in later versions you can specify an entire point group. (Thanks to TheUsualAlex for that RFE ).
  23. Yeah! Where do I submit that RFE? George.
  24. How To Trun On Trace Displacement

    Hi ykcosmo, In Houdini versions before 8, the renderman ROP has a "Visibility Trace" parameter that you can put the list of objects for which you want ray tracing. In Houdini 8.0, each object has a set of parameters that control the various rays to which it's visible. There is more detailed info here: http://www.sidefx.com/index.php?option=com...iewtopic&t=5012 Take care, George.
  25. Direct Ogl Drawing

    Hi Daniel, Have a look at the GR directory in the HDK samples. Your classes can derive from GR_RenderHook... maybe that'll cover what you need? Take care, George.