사용자 노드 작성

Dynamo에서는 사용자 노드를 작성하는 여러 가지 다른 방법을 제공합니다. 사용자 노드를 처음부터 새로 만들거나, 기존 그래프에서 만들거나, C#에서 명시적으로 만들 수 있습니다. 이 섹션에서는 기존 그래프에서 Dynamo UI의 사용자 노드를 만드는 방법을 다룹니다. 이 방법은 작업공간을 정리하고, 노드 시퀀스를 패키징하여 다른 위치에서 재사용할 수 있도록 하는 데 적합합니다.

UV 매핑을 위한 사용자 노드

아래 이미지에서는 UV 좌표를 사용하여 한 표면에서 다른 표면으로 점을 매핑합니다. 이 개념을 사용하여 XY 평면의 곡선을 참조하는 패널형 표면을 작성해 보겠습니다. 여기서는 패널화를 위한 쿼드 패널을 작성할 것입니다. 그러나 동일한 논리를 사용하여 UV 매핑을 통해 다양한 패널을 작성할 수 있습니다. 이렇게 하면 그래프 또는 다른 Dynamo 워크플로우에서 비슷한 프로세스를 보다 쉽게 반복할 수 있으므로 이는 사용자 노드 개발에 매우 유용한 방법입니다.

기존 그래프에서 사용자 노드 작성

이 연습의 예시 파일을 다운로드하고 압축을 풉니다(마우스 오른쪽 버튼을 클릭하고 "다른 이름으로 링크 저장..." 선택). 전체 예시 파일 리스트는 부록에서 확인할 수 있습니다. UV-CustomNode.zip

먼저 사용자 노드에 중첩할 그래프를 작성해 보겠습니다. 이 예에서는 UV 좌표를 사용하여 기준 표면에서 대상 표면으로 다각형을 매핑하는 그래프를 작성합니다. 이 UV 매핑 프로세스는 자주 사용하는 방법이므로 사용자 노드에 적합합니다. 표면 및 UV 공간에 대한 자세한 내용은 섹션 5.5를 참고하십시오. 전체 그래프는 위에서 다운로드한 .zip 파일에 포함된 UVmapping_Custom-Node.dyn입니다.

연습

  1. Code Block: code block을 사용하여 +45부터 -45 사이의 10개 숫자 범위를 작성합니다.
  2. Point.ByCoordinates: Code Block의 출력을 'x' 및 'y' 입력에 연결하고 레이싱을 상호 참조로 설정합니다. 이제 점 그리드가 표시됩니다.
  3. Plane.ByOriginNormal: 'Point' 출력을 'origin' 입력에 연결하여 각 점에서 평면을 작성합니다. 기본 법선 벡터인 (0,0,1)이 사용됩니다.
  4. Rectangle.ByWidthLength: 이전 단계의 평면을 ‘plane’ 입력에 연결하고 값이 10인 Code Block을 사용하여 폭과 길이를 지정합니다.

이제 직사각형 그리드가 표시됩니다. UV 좌표를 사용하여 이러한 직사각형을 대상 표면에 매핑해 보겠습니다.

연습

  1. Polygon.Points: 이전 단계의 직사각형 출력을 ‘polygon’ 입력에 연결하여 각 직사각형의 코너 점을 추출합니다. 이러한 점은 대상 표면에 매핑할 점입니다.
  2. Rectangle.ByWidthLength: 값이 100인 Code Block을 사용하여 직사각형의 폭과 길이를 지정합니다. 이는 기준 표면의 경계가 됩니다.
  3. Surface.ByPatch: 이전 단계의 직사각형을 ‘closedCurve’ 입력에 연결하여 기준 표면을 작성합니다.
  4. Surface.UVParameterAtPoint: Polygon.Points 노드의 ‘Point’ 출력과 Surface.ByPatch 노드의 ‘Surface’ 출력을 연결하여 각 점에서 UV 매개변수를 반환합니다.

기준 표면과 UV 좌표 세트가 있으므로 대상 표면을 가져와 표면 사이의 점을 매핑할 수 있습니다.

연습

  1. File Path: 가져올 표면의 파일 경로를 선택합니다. 파일 유형은 .SAT여야 합니다. "찾아보기.." 버튼을 클릭하고 위에서 다운로드한 .zip 파일의 UVmapping_srf.sat 파일로 이동합니다.
  2. Geometry.ImportFromSAT: 파일 경로를 연결하여 표면을 가져옵니다. 가져온 표면이 형상 미리보기에 표시됩니다.
  3. UV: UV 매개변수 출력을 UV.UUV.V 노드에 연결합니다.
  4. Surface.PointAtParameter: 가져온 표면과 u 및 v 좌표를 연결합니다. 이제 대상 표면에 3D 점 그리드가 표시됩니다.

마지막 단계는 3D 점을 사용하여 직사각형 표면 패치를 구성하는 것입니다.

연습

  1. PolyCurve.ByPoints: 표면의 점을 연결하여 점을 통해 polycurve를 구성합니다.
  2. Boolean: 부울을 작업공간에 추가하고 'connectLastToFirst' 입력에 연결한 다음, True로 전환하여 polycurve를 닫습니다. 이제 표면에 매핑된 직사각형이 표시됩니다.
  3. Surface.ByPatch: polycurve를 ‘closedCurve’ 입력에 연결하여 표면 패치를 구성합니다.

이제 노드의 입력 및 출력으로 사용할 항목을 생각하며 사용자 노드에 중첩할 노드를 선택해 보겠습니다. 직사각형뿐만 아니라 다각형을 매핑할 수 있도록 사용자 노드를 가능한 한 유연하게 매핑해고자 합니다.

연습

위의 노드(Polygon.Points로 시작)를 선택하고 작업공간을 마우스 오른쪽 버튼으로 클릭한 다음, '선택 항목의 노드'를 선택합니다.

연습

사용자 노드 특성 대화상자에서 사용자 노드에 이름, 설명 및 카테고리를 지정합니다.

연습

사용자 노드에 따라 작업공간이 상당히 정리되었습니다. 입력과 출력의 이름이 원래 노드에 따라 지정되었습니다. 보다 알아보기 쉬운 이름을 갖도록 사용자 노드를 편집해 보겠습니다.

연습

사용자 노드를 두 번 클릭하여 편집합니다. 그러면 노드의 내부를 나타내는 노란색 배경의 작업공간이 열립니다.

  1. Input: 입력 이름을 baseSurfacetargetSurface로 변경합니다.
  2. Output: 매핑된 다각형에 출력을 추가합니다. 사용자 노드를 저장하고 홈 작업공간으로 돌아갑니다.

연습

MapPolygonsToSurface 노드에 방금 변경한 사항이 반영됩니다.

사용자 해설에서 추가하여 사용자 노드의 견고성을 늘릴 수도 있습니다. 해설은 입력 및 출력 유형에서 힌트를 제공하거나 노드의 기능을 설명하는 데 도움이 될 수 있습니다. 사용자 노드의 입력 또는 출력 위에 마우스를 놓으면 해설이 나타납니다.

사용자 해설

사용자 노드를 두 번 클릭하여 편집합니다. 그러면 노란색 배경 작업공간이 다시 열립니다.

  1. Input Code Block 편집을 시작합니다. 해설을 시작하려면 "//" 다음에 해설 문자를 입력합니다. 노드를 명확히 하는 데 도움이 될 수 있는 모든 항목을 입력합니다. 여기서는 targetSurface에 대해 설명합니다.
  2. 또한 입력 유형을 값과 같게 설정하여 inputSurface의 기본값을 설정해 보겠습니다. 여기서는 기본값을 원래 Surface.ByPatch 세트로 설정합니다.

사용자 해설

해설을 출력에 적용할 수도 있습니다. Output Code Block에서 문자 편집을 시작합니다. 해설을 시작하려면 "//" 다음에 해설 문자를 입력합니다. 여기서는 보다 자세한 세부 설명을 추가하여 PolygonssurfacePatches 출력을 명확히 해 보겠습니다.

사용자 해설 >

  1. 사용자 노드 입력 위에 커서를 놓으면 해설이 표시됩니다.
  2. inputSurface에 기본값을 설정한 상태로, 표면 입력 없이 정의를 실행할 수도 있습니다.