Jump to content
[[Template core/front/profile/profileHeader is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

Fenolis last won the day on March 4

Fenolis had the most liked content!

Community Reputation

40 Excellent

About Fenolis

  • Rank
    Initiate
  • Birthday 09/10/1994

Personal Information

  • Name
    Jikian
  • Location
    Singapore

Recent Profile Visitors

2,641 profile views
  1. If your band needs to be the same width along the entire length, why treat it as 2 rails? Would it not be easier to find the midpoint of the band and then manipulate up-vector along the length to get your different twists, then Sweep? If you need it to line up at the end, you can precompute the end's up-vector and smooth out the transition towards the end to meet it. Edit: attached naive solve metal_band.hiplc
  2. When are equal values are NOT equal?

    For situations like this, instead of using an A == B comparison, you can instead do: if ( abs( A - B ) < 0.0001 )
  3. 1st grade equations

    Hey, my education system probably differs from yours, what are examples of "1st grade equations"?
  4. Anyone wanna talk on Discord/Teams etc?

    There's the Think Procedural community on Discord, as well as Erwin Heyms' E-Houdini Academy Discord community for sharing work and discussion about the many tutorials he has on Youtube.
  5. @iasm6419 it may be a limitation with PolyExtrude SOP, but you can try another method that is more reliable like Orient Along Curve + Sweep. sweep_carve.hipnc
  6. Procedural Cogged Belt

    You can use the Chain SOP directly with mesh input. jk_belt_chain.hiplc
  7. PolyExpand2D is not like PolyExtrude, they are different nodes. PolyExpand allows you to "widen" a curve shape, like your Boolean edges. You have options with PolyExpand2D also to determine if the output is 2 separate curves (inside/outside), or a skinned surface. You can use 2 PolyExpand2D nodes to create the extended shape in your example, the first to offset the edge/curve, and the second that generates the surface.
  8. You can use the Chain SOP to place your brick models along curves with less overlap issues. Gaps are formed because your model is rigid and low-poly - you can give your brick models more geometry resolution and use Copy + Creep SOP to "bend" them along a NURBs surface, which can be created by extruding your curves upwards and Converting them to NURBs surfaces.
  9. Why not keep the point numbers in another attribute, like i@temp_id = @ptnum;, then after your operation sorting the point numbers back with that attribute?
  10. Random value hold 1 or -1

    For the case with same sub-sequence run length (run in Detail wrangle): int seqLen = 30; int subSeqLen = 2; int offset = 0; i[]@seq; for (int i = 0; i < seqLen; i++){ //this value is constant for the length of the sub sequence int seed = floor(i / subSeqLen); //rand returns 0-1 float //rint returns 0 or 1 //math turns 0/1 to -1/1 int value = (rint(rand(seed + offset)) * 2) - 1; push(@seq, value); } For the case with random run length: int seqLen = 30; int minRunLen = 2; int maxRunLen = 10; int runLenArr[]; int valueArr[]; int seed1 = 123; int seed2 = 456; i[]@seq; //generate a smaller array to hold run lengths //maximum length of this array is seqLen / minRunLen for (int i = 0; i < seqLen / minRunLen; i++){ int value = floor(fit(rand(i + seed1), 0, 1, minRunLen, maxRunLen)); push(runLenArr, value); } //for each value in the run length array for (int j = 0; j < len(runLenArr); j++){ //generate that number of random numbers and add these values to valueArr for (int k = 0; k < runLenArr[j]; k++){ int value = (rint(rand(runLenArr[j] + seed2)) * 2) - 1; push(valueArr, value); } } //finally, copy the desired values into the target array for (int m = 0; m < seqLen; m++){ push(@seq, valueArr[m]); } There may be a better way to do this, but this is the thought process I used.
  11. You can create a base shape using a Grid + PolyExtrude, or a simple Box. Then use Boolean SOP to cut out your shape from it. Note that the Boolean SOP generally works best with geometry that intersects and do not have coplanar faces, so your cutting shape should be thicker than the base shape (or just positioned such that it doesn't line up exactly with one side). Make sure that your cutting shape is also solid geometry, consider using VDB to ensure this but it may be slightly overkill.
  12. More complexity in setups

    If you are solely responsible for the projects you've worked on so far, then areas for improvement would include: - leaving a note beside groups of nodes (you could also netbox them) so that you understand what they do even if you leave the project for a long time - colour-coding nodes so you can see at a glance what purposes nodes serve, without having to click each one - reducing nesting depth of nodes where possible, or use Compile blocks to optimize the performance of loops - using Object Merge to avoid many intersecting network lines, but be warned that over-use can impact performance negatively If you have worked on projects with others, then you can also get feedback from them on what else can be clarified in your networks. For instance, a colleague showed me his node colour-conventions and I found it fairly useful so I implemented it in work I share with him. Also, check out this talk by @mestela
  13. Using string as a filepath problem

    What's wrong? The file path seems to be working for me. You can middle-mouse-click string fields to evaluate an expression's result. This is different from clicking on the parameter name for int and float parameter types. I would suggest using a relative reference like: `details("../attribwrangle1", "file")` for parameters inside a HDA so that absolute paths don't break if the HDA exists in a context it's not expecting. If you mean, "Why isn't my texture showing?", then the answer is that the Grid does not have UVs. Drop down a UV Texture or UV Project node before the material and you should see any image linked from the subnet.
  14. [SOLVED]Procedural LetterForm ?

    This feels like a really terrible way to display code...
  15. HDAs that are part of Unreal Blueprints have their parameters in the Blueprint's Details tab. You need to have the HDA component selected in the hierarchy to display its parameters.
×