Wooshum Posted July 18, 2016 Share Posted July 18, 2016 Hi All, I am taking small steps at rebuilding and improving upon some of the functionality of ESRI CityEngine within Houdini. One of the most important functions is the ability to apply 'planning setbacks' to property boundaries (see image below). From a modeling point of view this requires the ability to offset the poly from selective edges only and a way of keeping track of what each edge of the poly represents, i.e.: is the edge a street, side or rear frontage? I have been able to work out a method off applying the selective edge offsets using VEX (see attached ZIP that includes HIP and BGEO) but am struggling to find the best method of defining the edge types in a procedural way. Given this problem does anyone have suggestions for the following: Is there a way of being able to track poly edge groups in the event of the point numbers changing (points being added or removed)? Is there a way / work around to be able to procedurally defining edge groups? One of the areas most of this work is pushing me towards is the application of poly straight skeletons which is a bit daunting at the moment! I have found a really good thesis on poly skeletons here though: http://theses.gla.ac.uk/4975/ Thanks for any help you can provide! Cheers! Lot_Setbacks_Problem.zip Quote Link to comment Share on other sites More sharing options...
f1480187 Posted July 18, 2016 Share Posted July 18, 2016 Sounds like a PolyExpand2D job. You need to convert edge groups to vertex selection. drive_offset.hipnc Quote Link to comment Share on other sites More sharing options...
Wooshum Posted July 18, 2016 Author Share Posted July 18, 2016 (edited) @f1480187 thank you for your solution - much more elegant than where I was heading with this! I was playing around with PolyExpand2D earlier on but got sidetracked with a VEX implementation! Quick question regarding PolyExpand2D: In the cases that the 'offsetscale' attribute is 0 how can I ensure that the actual offset is 0? For the offset value I have tried the expression if(ch("localinsidescale") == 0, 0, 1) but this does not seem to work in this instance. Edited July 19, 2016 by Wooshum Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.