색상
Last updated
Last updated
색상은 시각적 프로그램의 출력에서 차이를 렌더링하고, 우수한 시각적 요소를 작성하는 데 유용한 데이터 유형입니다. 추상 데이터와 다양한 숫자를 사용할 경우 무엇이 어느 정도로 달라지는지 확인하기 어려운 경우가 있습니다. 이러한 경우 색상을 적용하면 매우 유용합니다.
Dynamo의 색상은 ARGB 입력을 사용하여 작성됩니다. ARGB는 알파, 빨간색, 초록색 및 파란색 채널에 해당합니다. 알파는 색상의 투명도 를 나타내고, 다른 3개의 색상은 전체 색상 스펙트럼을 생성하기 위한 기본 색상으로 사용됩니다.
ARGB 색상(Color.ByARGB)
A,R,G,B
색상
아래 표의 색상을 사용하면 색상을 정의하는 데 사용되는 특성(알파, 빨간색, 초록색 및 파란색)이 조회됩니다. Color.Components 노드는 다른 출력으로 4개의 색상을 모두 제공하므로 색상의 특성을 조회할 때 선호됩니다.
알파(Color.Alpha)
색상
A
빨간색(Color.Red)
색상
R
초록색(Color.Green)
색상
G
파란색(Color.Blue)
색상
B
구성요소(Color.Components)
색상
A,R,G,B
아래 표의 색상은 HSB 색상 공간에 해당합니다. 색상을 색조, 채도 및 밝기로 나누면 색상을 좀 더 직관적으로 해석할 수 있습니다. 즉, '어떤 색상인가?', '색상이 얼마나 선명한가?', '색상이 얼마나 밝거나 어두운가?'와 같은 질문으로 각각 색조, 채도 및 밝기를 분석할 수 있습니다.
색조(Color.Hue)
색상
색조
채도(Color.Saturation)
색상
채도
밝기(Color.Brightness)
색상
밝기
색상 범위는 연습의 Remap Range 노드와 비슷합니다. 이 노드에서는 숫자 리스트를 다른 영역에 다시 매핑합니다. 그러나 숫자 영역으로 매핑하는 대신, 0에서 1 사이의 입력 숫자를 기준으로 색상 그라데이션 에 매핑합니다.
현재 노드는 잘 작동하지만 처음에는 모든 항목이 다 제대로 작동하지는 않을 수 있습니다. 색상 그라데이션에 익숙해지려면 대화식으로 테스트하는 것이 가장 좋습니다. 간단한 연습을 통해 숫자에 해당하는 출력 색상으로 그라데이션을 설정하는 방법을 살펴보겠습니다.
세 가지 색상 정의: Code Block 노드를 사용하여 적절한 0 및 255 조합을 연결함으로써 빨간색, 초록색 및 파란색 을 정의합니다.
리스트 작성: 세 개의 색상을 하나의 리스트로 병합합니다.
색인 정의: 리스트를 작성하여 각 색상의 그립 위치를 정의합니다(0에서 1 사이). 초록색 값이 0.75인지 확인합니다. 이 경우 색상 범위 슬라이더의 수평 그라데이션을 따라 3/4 위치에 초록색이 배치됩니다.
Code Block: 값(0에서 1 사이)을 입력하여 색상을 변환합니다.
Display.ByGeometry 노드를 사용하면 Dynamo 뷰포트의 형상에 색상을 지정할 수 있습니다. 이 노드는 여러 다른 유형의 형상을 구분하거나, 파라메트릭 개념을 보여 주거나, 시뮬레이션을 위한 해석 범례를 정의하는 데 유용합니다. 입력은 형상과 색상으로, 간단합니다. 위 이미지와 같은 그라데이션을 작성하기 위해 색상 입력이 색상 범위 노드에 연결됩니다.
Display.BySurfaceColors 노드를 사용하면 색상을 사용하여 표면 전반에서 데이터를 매핑할 수 있습니다. 이 기능을 통해 태양, 에너지, 근접성 등과 같은 불연속 해석을 통해 얻은 데이터를 시각화할 수 있게 됩니다. Dynamo의 표면에 색상을 적용하는 것은 다른 CAD 환경의 재료에 텍스처를 적용하는 것과 유사합니다. 아래 간단한 연습에서 이 도구를 사용하는 방법을 살펴보겠습니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
이 연습에서는 형상과 함께 파라메트릭 방식으로 색상을 제어하는 데 중점을 둡니다. 형상은 아래에서 Code Block을 사용하여 정의하는 기본 나선입니다. 이렇게 하면 파라메트릭 함수를 쉽고 빠르게 작성할 수 있습니다. 또한 이 작업에서는 형상이 아닌 색상에 주안점을 두므로 캔버스를 복잡하게 만들지 않고 Code Block을 사용하여 나선을 효율적으로 작성합니다. 좀 더 고급 자료로 넘어가게 되면 이 code block을 더 자주 사용하게 될 것입니다.
Code Block: 위의 공식을 사용하여 두 개의 code block을 정의합니다. 이 방법은 나선을 작성하는 빠른 파라메트릭 방법입니다.
Point.ByCoordinates: code block의 세 가지 출력을 노드의 좌표에 연결합니다.
이제 나선을 작성하는 점의 배열이 표시됩니다. 다음 단계는 나선을 시각화할 수 있도록 점을 통과하는 곡선을 작성하는 것입니다.
PolyCurve.ByPoints: Point.ByCoordinates 출력을 노드의 points 입력에 연결합니다. 나선형 곡선이 생성됩니다.
Curve.PointAtParameter: PolyCurve.ByPoints 출력을 curve 입력에 연결합니다. 이 단계의 목적은 곡선을 따라 미끄러지는 파라메트릭 어트랙터 점을 작성하는 것입니다. 이 곡선은 매개변수의 점을 평가하므로 0에서 1 사이의 param 값을 입력해야 합니다.
Number Slider: 캔버스에 추가한 후 min 값을 0.0 으로 변경하고 max 값을 1.0 으로 변경한 다음, step 값을 .01 로 변경합니다. 슬라이더 출력을 Curve.PointAtParameter에 대한 param 입력에 연결합니다. 이제 슬라이더의 백분율(시작점 0, 끝점 1)로 표시되는 나선 길이를 따라 점이 표시됩니다.
참조점이 작성되었으므로 이제 참조점부터 나선을 정의하는 원래 점까지의 거리를 비교합니다. 이 거리 값에 따라 형상 및 색상이 결정됩니다.
Geometry.DistanceTo: Curve.PointAtParameter 출력을 input 에 연결합니다. Point.ByCoordinates를 형상 입력에 연결합니다.
Watch: 결과 출력에서는 각 나선형 점부터 곡선을 따라 표시되는 참조점까지의 거리 리스트를 표시합니다.
다음 단계는 나선형 점부터 참조점까지의 거리 리스트로 매개변수를 구동하는 것입니다. 이러한 거리 값을 사용하여 곡선을 따라 일련의 구 반지름을 정의합니다. 구형이 적절한 크기로 유지되도록 하려면 거리 값을 다시 매핑 해야 합니다.
Math.RemapRange: Geometry.DistanceTo 출력을 numbers 입력에 연결합니다.
Code Block: 값이 0.01 인 code block을 newMin 입력에 연결하고 값이 1 인 code block을 newMax 입력에 연결합니다.
Watch: Math.RemapRange 출력을 하나의 노드에 연결하고 Geometry.DistanceTo 출력을 다른 노드에 연결합니다. 결과를 비교합니다.
이 단계에서는 거리 리스트를 더 작은 범위로 다시 매핑했습니다. newMin 및 newMax 값은 적합하다고 여기는 대로 편집할 수 있습니다. 값이 다시 매핑되고 영역 전체에서 동일한 분포 비율 이 적용됩니다.
Sphere.ByCenterPointRadius: Math.RemapRange 출력을 radius 입력에 연결하고 원래 Point.ByCoordinates 출력을 centerPoint 입력에 연결합니다.
number slider의 값을 변경하고 구의 크기가 업데이트되는 것을 확인합니다. 이제 파라메트릭 지그가 생성되었습니다.
구의 크기는 곡선을 따라 표시되는 참조점으로 정의된 파라메트릭 배열을 보여 줍니다. 구 반지름에 동일한 개념을 사용하여 해당 색상을 지정해 보겠습니다.
Color Range: 캔버스 위에 추가합니다. value 입력 위에 마우스를 놓으면 요청된 번호가 0에서 1 사이인 것을 알 수 있습니다. 이 영역과 호환되도록 Geometry.DistanceTo 출력의 숫자를 다시 매핑해야 합니다.
Sphere.ByCenterPointRadius: 지금은 이 노드에 대한 미리보기를 사용하지 않도록 설정하겠습니다(마우스 오른쪽 버튼 클릭 > 미리보기).
Math.RemapRange: 이 프로세스는 익숙해졌을 것입니다. Geometry.DistanceTo 출력을 numbers 입력에 연결합니다.
Code Block: 이전 단계와 마찬가지로, newMin 입력에 대해 0 값을 작성하고 newMax 에 대해 1 값을 작성합니다. 이 경우 한 code block에서 두 개의 출력을 정의할 수 있습니다.
Color Range: Math.RemapRange 출력을 value 입력에 연결합니다.
Color.ByARGB: 두 개의 색상을 작성하려면 이 항목을 사용합니다. 이 프로세스가 생소할 수도 있지만 다른 소프트웨어의 RGB 색상과 동일한 것입니다. 여기서는 단순히 시각적 프로그래밍을 사용하여 이 프로세스를 수행합니다.
Code Block: 0 및 255 의 두 값을 작성합니다. 위 이미지에 따라 두 출력을 두 Color.ByARGB 입력에 연결합니다(또는 선호하는 두 가지 색상 작성).
Color Range: colors 입력에서 색상 리스트를 요청합니다. 이전 단계에서 작성한 두 가지 색상으로부터 이 리스트를 작성해야 합니다.
List.Create: 두 색상을 하나의 리스트로 병합합니다. 출력을 Color Range에 대한 colors 입력에 연결합니다.
Display.ByGeometryColor: Sphere.ByCenterPointRadius를 geometry 입력에 연결하고 Color Range 를 color 입력에 연결합니다. 이제 곡선의 영역을 따라 부드러운 그라데이션이 생성되었습니다.
정의에서 Number Slider 값을 이전과 다르게 변경하면 색상 및 크기가 업데이트됩니다. 이 경우 색상 및 반지름 크기가 직접 연계됩니다. 이제 두 매개변수 사이에 시각적 링크가 표시됩니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
먼저 Display.BySurfaceColors 노드의 입력으로 사용할 표면을 작성(또는 참조)해야 합니다. 이 예에서는 사인 및 코사인 곡선 사이에서 로프트를 시도합니다.
이 노드 그룹은 Z축을 따라 점을 작성한 다음, 사인 및 코사인 함수를 기준으로 재배치합니다. 그런 다음, 두 점 리스트를 사용하여 NURBS 곡선을 생성합니다.
Surface.ByLoft: NURBS 곡선 리스트 사이에 보간된 표면을 생성합니다.
File Path: 픽셀 데이터 다운스트림에 대해 샘플링할 이미지 파일을 선택합니다.
File.FromPath를 사용하여 파일 경로를 파일로 변환한 다음, Image.ReadFromFile에 전달하여 샘플링할 이미지를 출력합니다.
Image.Pixels: 이미지를 입력하고 이미지의 X 및 Y 치수에 따라 사용할 샘플 값을 제공합니다.
Slider: Image.Pixels의 샘플 값을 제공합니다.
Display.BySurfaceColors: 각각 X와 Y를 따라 표면에서 색상 값 배열을 매핑합니다.
해상도가 400x300인 샘플의 출력 표면 미리보기 클로즈업