February 21, 2012

RhinoScript | Black&White gradient

얼마 전 MeshHighlightField 커맨드를 활용하여 타이어 패턴 디자인 이미지의 그라디언트로 부조형상을 만들어 모델링 작업을 최소화하여 3D프린팅이 가능하도록 프로세스 설정하는 교육을 진행하였다. 필요한 형상의 높이 변화에 알맞는 그라디언트 이미지를 조금 쉽게 만들 수 있는 스크립트를 만들어 사용하였는데, x,y좌표 (0,0)에서 (10,10)사이에 하나의 커브를 그려주면 y값 0-10을 밝기 0-255로 변환하여 이미지 그라디언트를 만들어 준다.

다음 스크립트는 GDI bitmap extension인 RhPicture를 사용하기에 설치되어있어야 사용가능하다. http://wiki.mcneel.com/developer/rhinoscriptimageextension 그리고 LineCurveIntersection method를 사용하기에 라이노 V5에서 사용할 수 있다. V4용으로는 일부 수정이 필요하다.

Option explicit
Call Main()
Sub Main()
    Dim strCrv    
    strCrv = Rhino.GetObject("Select a gradient curve", 4, True)
    If isNull(strCrv) Then Exit Sub
    Dim arrFace(0), arrVertices(3)
    Dim i, x, arrLine, arrCX, arrP, lngColor, H, arrC, j
    Dim RhPicture
    Set RhPicture = Rhino.GetPluginObject("RhPicture")
    Call RhPicture.CreateImage(200, 255, vbWhite)
    For i=0 To 255
        x = i / 25.5
        arrLine = array(array(x, 0, 0), array(x, 10, 0))
        arrCX = Rhino.LineCurveIntersection(arrLine, strCrv)
        If isArray(arrCX) Then
            arrP = arrCX(0, 1)
            H = round(arrP(1) * 25.5)
            lngColor = RGB(H, H, H)
            For j=0 To 200
                Call RhPicture.SetPixel(j, 255 - i, lngColor)
            Next
        End If           
    Next
    Call RhPicture.ShowImage("Black&White Gradient")           
    Set RhPicture = Nothing
End Sub


No comments: