Jump to content

konstantin magnus

  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


konstantin magnus last won the day on March 7

konstantin magnus had the most liked content!

Community Reputation

518 Excellent

About konstantin magnus

Contact Methods

  • Website URL

Personal Information

  • Name
    Konstantin Magnus
  • Location
    Stuttgart, Germany

Recent Profile Visitors

7,122 profile views
  1. gradient r&d

    Here is a tutorial on creating a circular gradient in COP VOPs (see first post):
  2. Rotating uv tile

    I see. Here is a quick concept of a material shader which rotates a user-defined number of tiles across a UV map. It includes noise to cover up the seams a little. uv_tiles_noise.hipnc
  3. Rotating uv tile

    Hi Michel, yes sure. I think we have already discussed this under the keyword "texture bombing".
  4. find center point

    Hi Doanh, the attribute promote SOP can calculate the average of an (position) attribute. And a VEX solution would be to expandpointgroup(): int pts[] = expandpointgroup(0, 'group2'); vector pos_avg = vector(0.0); foreach(int pt; pts){ pos_avg += point(0, 'P', pt); } pos_avg /= len(pts); addpoint(0, pos_avg); find centerPoint_KM.hipnc
  5. Rotating uv tile

    Or if you want overlapping UVs, using maximum space and everything in one vertex wrangle: string grp = itoa(i@primnum); vector bb_prim = relbbox(0, grp, v@P).xzy; vector bb_center = bb_prim - {0.5, 0.5, 0.0}; float amount_n = rand(i@primnum); float amount_pi = fit01(amount_n, -M_PI, M_PI); v@uv = bb_center; matrix m = ident(); rotate(m, amount_pi, {0,0,1}); v@uv *= m; float diag = sqrt(0.5); v@uv = fit(v@uv, -diag, diag, 0.0, 1.0); Here are some screenshots showing what each paragraph is doing: rotate_UV_tiles_overlap.hipnc
  6. Rotating uv tile

    Hi David, you can do this in: SOPs using primitive's node rotate and attribute copy. VOPs feeding random values to UV position's rotate. VEX feeding random values to the rotate function. int seed = chi('seed'); vector pivot = primuv(0, 'uv', i@primnum, 0.5); float amount_n = rand(i@primnum, seed); float amount_pi = fit01(amount_n, -M_PI, M_PI); matrix3 m = ident(); rotate(m, amount_pi, {0,0,1}); v@uv = (v@uv - pivot) * m + pivot; rotate_UV_tiles.hipnc
  7. Non-standard Spiral Staircase

    Extrude a closed curve inwards, facet the polygons and translate them upwards based on their primitive number. stairs.hipnc
  8. VEXpression Presets

    To select the end points of a polyline simply count the connected neighbours: neighbourcount(0,@ptnum)==1
  9. Delete faces occluded by shadow?

    Find out which primitives are visible: https://forums.odforce.net/topic/44518-solid-flat-colors-and-no-aa/?tab=comments#comment-209549
  10. Rotate clumps?

    I dialed in the numbers so it resembles hair a little more. twist_around_curves_HAIR.hipnc
  11. Rotate clumps?

    Hi José, you can twist curves around other curves by rotating lots of copied cone lines using noise on a rotate VOP. Then transfer those twisted curves to the position and orientation along other curves based on transformation matrices from the orient along curves-node. float u = 1.0 - vector(relbbox(0, v@P)).z; int copy = prim(0, 'copynum', i@primnum); matrix trans = primuv(1, 'transform', copy, u); v@P.z = 0.0; v@P *= trans; twist_around_curves.hipnc
  12. Automatically remove interior from double-sided geometry

    Hi Marcus, I don't think there will be an easy and reliable solution to this. Anyways, could you possibly provide a few example files?
  13. Discretize 2d shapes

    Here is another variant using the winding number SOP. discretize_winding.hipnc
  14. Create Polyline for each group

    Hi David, the add node allows connecting points by groups (use an asterisk for multiple ones, eg. groupname_*) or attributes (which is advisable). connecting.hipnc
  15. Trimmed Nurbs To Clean Polys via Skin or otherwise

    Hi Archo, you can create CAD-like shapes by transferring NURBS surface positions to parameterized polygon meshes through curve ramps. vector uvw = vertex(0, 'uv', i@vtxnum); float deform_top = chramp('shape_top', uvw.x); float deform_btm = chramp('shape_bottom', uvw.x); uvw.y = fit01(uvw.y, deform_top, deform_btm); v@P = primuv(1, 'P', 0, uvw); shape_transfer.hipnc