Al3XXX

push

May 11th, 2021 (edited)
895
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.97 KB | None | 0 0
  1. (
  2.     obj = $
  3.     val = 10
  4.    
  5.     faces = polyop.getFaceSelection obj
  6.     vertices = #()
  7.     normals = #()
  8.     angles = #()
  9.    
  10.     fn GetVectorsAngle v1 v2 =
  11.     (
  12.         acos(dot (normalize v1) (normalize v2))
  13.     )
  14.    
  15.     fn GetProportionalityFactor a = (
  16.         1/(cos a)
  17.     )
  18.    
  19.     for face in faces do(  
  20.         polyVerts = polyop.getFaceVerts obj face
  21.         normal = polyop.getFaceNormal obj face
  22.         for v in polyVerts do (
  23.             foundResult = findItem vertices v
  24.            
  25.             if foundResult == 0 then(
  26.                 append vertices v
  27.                 append normals normal
  28.                 append angles 0        
  29.             ) else (
  30.                 oldNormal = normals[foundResult]
  31.                 ang = GetVectorsAngle oldNormal normal
  32.                 newNormal = normalize (oldNormal + normal)
  33.                
  34.                 normals[foundResult] = newNormal                   
  35.                 angles[foundResult] = ang/2
  36.             )  
  37.         )
  38.     )
  39.        
  40.     for i = 1 to vertices.count do(
  41.         curVert = vertices[i]
  42.         curNormal = normals[i]
  43.         k = GetProportionalityFactor angles[i]
  44.        
  45.         offset = curNormal*val*k
  46.         polyop.moveVert obj curVert offset
  47.     )      
  48. )
Add Comment
Please, Sign In to add comment