브러시
브러시는 어떤 엔진이 그리는지가 아니라 무엇인지와 어떻게 동작하는지를 말하는 facet으로 구성됩니다.
id, name, kind 및 tip.shape만 필수이며, 다른 모든 필드는 facet이 선택하는 엔진의 기본값을 사용합니다.
따라서 브러시는 그 자체를 정의하는 요소만 저장합니다. 라이브러리는 내장 프리셋(읽기 전용)과 사용자의 브러시를 보관하며, 페인트하는 모든 편집기가 공유합니다.
| Facet (필드) | 설명 |
|---|---|
| 종류 | mark는 재료를 바르고; tool은 이미 칠해진 페인트에 작용합니다. |
| 매체 및 변형 | 자국: 바르는 것(paint, ink, dry, spray)과 종류(oil, watercolor, gouache, pencil, charcoal, airbrush, marker, highlighter…). 브러시를 찾기 위한 설명용입니다; 변형이 watercolor, gouache 또는 oil인 젖은 브러시는 해당 매체로 칠합니다. |
| 도구 | 도구: eraser, blender, smudge, 젖은 페인트 위에서는 water, dryer, blow, blot, wet-blend, wet-drag. |
| 팁 | shape (round, flat, chisel은 roundness와 angle로 설정되는 타원이고; bristle은 털 뭉치가 있으며; stamp는 stamps의 모양을 취합니다: 편집기 스탬프 editor:star, find_stickers의 모든 스티커 참조, 또는 list_brush_sources의 이미지 소스 source:<id>), 크기(px), 경도(이미지 팁은 1 미만에서 가장자리로 갈수록 희미해짐), 간격, 불투명도, 흐름, 혼합 모드, grain: 각 dab 내부의 텍스처 (source: rough, canvas, sanded와 같은 패턴 또는 source:<id>; mode texturised는 캔버스에 고정, moving은 팁과 함께 굴러감; scale, depth, contrast, invert). |
| 자국 | continuous dabs (기본값; 스탬프 팁에서는 모든 dab이 첫 번째 스탬프 모양이며 페인트 색상으로 칠해짐), scatter (분무: 팁 전체에 분산, density, size), particles (가닥, 스프링, 리본, 스파크; 스탬프의 텍스처 점) 또는 objects (각 자국이 자체 색상을 가진 편집 가능한 스티커). |
| 다이나믹 | 펜 감도: 크기와 불투명도에 대한 압력, 스무딩, 기울기, 속도, 지터 (sizeJitter, 회전용 angleJitter, opacityJitter, scatter), 회전, count (간격 단계당 dabs, 각각 지터 있음) 및 flip (무작위로 dab을 반전: x, y, xy). |
| 동작 | surface dry, wet (wet 설정) 또는 thick (thick 임파스토 설정); 종이 grain; exchange (픽업 및 혼합; reservoir는 믹서 브러시를 만듦); 도구 strength. |
| 빛 | 브러시가 발하는 빛 (amount), 권장 레이어 spill 및 glow. |
| 모션 | 페인트 후 애니메이션 (라이브 이펙트 페인트, 입자 waveSpeed). |
| 색상 | default 색상, 최대 16개의 palette, own (항상 자체 색상). 각각은 16진수 또는 rgba() 색상, 밝음/어두움 쌍 { light, dark }, 그래디언트 또는 이펙트 페인트입니다. 그래디언트 기본값은 항상 칠해집니다. 단색 또는 밝음/어두움 기본값은 브러시가 선택될 때 편집기의 색상이 됩니다(사용자가 잠그지 않은 경우), 색상 구성표에 따라 해석됩니다. 캔버스 획과 벡터 브러시 획도 색상이 지정되지 않은 경우 이를 사용합니다. 캔버스와 벡터는 동일한 잠금(canvas.setColorLocked, vector.setColorLocked)을 가지며, 밝음/어두움 기본값에서 가져온 캔버스 색상은 페인트 편집기처럼 구성표를 따릅니다; 이미 만들어진 벡터 획은 자체 색상을 유지합니다. |
매체가 facet에 매핑되는 방식: 연필 또는 숯은 높은 grain과 기울기를 가진 dry입니다; 잉크는 크기에 압력이 적용되는 단단한 둥근 팁입니다(펜은 속도에 따라 가늘어짐); 수채화와 젖은 유화는 surface: 'wet' 위의 paint입니다; 임파스토는 surface: 'thick'입니다; 에어브러시는 부드럽고 낮은 흐름의 spray입니다; 스프레이 캔은 marks scatter가 있는 spray입니다; 볼펜, 젤 펜 또는 파인라이너는 작고 단단한 팁을 가진 ink입니다(파인라이너는 크기에 압력이 없음); 크레용과 초크는 높은 grain을 가진 dry입니다; 하이라이터는 ink / highlighter이며, 곱하기 모드의 끌 팁, 약간의 빛, spill 반경 0, 기본적으로 형광 노란색입니다; 스탬프 브러시는 연속 자국이 있는 stamp 팁입니다; 입자 및 스티커 브러시는 stamp 팁의 marks particle 또는 objects입니다. 이미지 브러시(스캔한 숯 자국, 나뭇잎, 드라이 브러시 텍스처)는 스탬프가 이미지 소스인 stamp 팁이며, 일반적으로 tip.grain, angleJitter, flip 및 약간의 scatter가 있어 반복이 드러나지 않습니다.
이미지 소스는 팁과 그레인이 만들어지는 이미지이며, 바이트(회색 마스크, 최대 512px)와 라이선스와 함께 라이브러리에 보관됩니다. add_brush_source는 PNG에서 하나를 만듭니다: 자국은 투명도, 어두운 부분(종이 스캔) 또는 밝은 부분(흰색 바탕에 검은색)에서 읽힙니다. 라이브러리 파일(export_brushes)과 저장된 그림은 브러시가 이름을 지정하는 소스를 전달하므로 어디서나 동일하게 칠하고 재생됩니다.
호스트 프로필
각 호스트는 이 중 일부를 렌더링합니다. check_brush는 호스트가 거부하는 것(오류)과 호스트가 없이 칠하는 것(경고)을 각각 수정 사항과 함께 알려줍니다. 목록 및 쓰기는 현재 호스트를 사용합니다.
| 호스트 | 렌더링 |
|---|---|
페인트 편집기 (paint) | 모든 것, 이미지 팁과 팁 그레인 포함. |
이미지 편집기 (image) | 둥글고, 납작하고, 끌 팁의 마른 dabs, 믹서 브러시 및 지우개; 젖거나 두꺼운 표면, 입자, 객체, 스탬프 또는 이미지 팁, 빛 또는 모션 없음; 팁 그레인과 count 없이 칠함. set_brush_preset으로 선택하십시오. |
캔버스 (canvas) | 경로를 따라 마른 dab 브러시 (도구, 젖음, 두꺼움, 입자, 객체, 스탬프 또는 이미지 팁, 또는 빛 없음); 속도, 팁 그레인 및 count는 무시됩니다. canvas.drawFreehand brush로 그립니다. |
벡터 획 (vector) | 캔버스와 동일하며, 추가로 젖은 페인트(수채화, 구아슈, 젖은 유화: 획 자체 영역에서 시뮬레이션된 후 건조됨), 믹서 브러시, 번짐 및 블렌더 도구(획 아래 모양에 작용); 밝은 브러시는 일반 색상으로 칠합니다. 젖은 도구(물, 헤어드라이어, 불기, 젖은 블렌드, 젖은 드래그, 블롯), 두꺼운 페인트, 입자, 객체 및 지우개는 거부됩니다. vector.addBrushstroke brushId로 그립니다. |
모든 호스트는 자체 프로필이 허용하는 프리셋과 허용하는 라이브러리의 저장된 브러시를 나열하며, 각 호스트는 이러한 도구를 자체 프로필로 등록하므로 list_brush_presets는 해당 호스트의 브러시를 표시합니다. 사람들은 모든 호스트에서 동일한 브러시 편집기로 브러시를 편집하며, 동일한 범위로 적용됩니다: 호스트가 사용하는 컨트롤만 표시하고(캔버스에 속도 없음, 이미지 편집기에 그레인 없음), 다른 호스트를 위해 브러시가 가진 것은 저장 시 유지됩니다. 도구는 동일한 규칙을 따릅니다(함정 참조). 캔버스 또는 벡터 획에서 사용되는 저장된 브러시는 획에 복사되므로 문서는 라이브러리가 없는 곳에서 렌더링됩니다. 나중에 라이브러리에서 브러시를 변경해도 이미 그려진 획은 변경되지 않습니다.
작업 방법
- 가장 가까운 브러시를 찾습니다.
list_brush_presets를medium,variety,kind또는text와 함께 사용합니다. 이 호스트가 렌더링할 수 있는 것만 나열합니다(all: true는 나머지를renderable과 함께 나열). - 읽습니다.
describe_brush로 전체 사양, 해석되는 엔진 및 검사를 확인합니다. - 브러시를 만듭니다.
create_brush를 새id,name, 가장 가까운 프리셋을 기반으로 한basedOn, 그리고 변경할 facet만 사용합니다(객체는 병합되고, 목록은 대체됨).problems(값이 제한되거나 삭제됨) 및warnings를 읽습니다. 호스트가 렌더링할 수 없는 브러시는 거부되며 아무것도 저장되지 않습니다. - 살펴봅니다.
preview_brush는 호스트에 렌더러가 있을 때 사용합니다. 그렇지 않으면 편집기에서 테스트 획을 그립니다(set_brush로 새 id를 설정한 다음paint_stroke). - 조정합니다.
update_brush로 변경할 facet을 전달하거나unset으로 전체 facet을 삭제합니다. 변경된 리프 경로changed를 반환합니다. 내장 프리셋은 변경할 수 없습니다: 먼저duplicate_brush를 사용하세요. - 이미지에서.
add_brush_source로 PNG를 추가하고(auto가 잘못된 부분을 선택할 때는channel사용, 원본licence유지), 그런 다음 이미지 팁의 경우create_brush를tip: { shape: "stamp", stamps: ["source:<id>"] }로, 또는 그레인의 경우tip.grain.source로 사용합니다.list_brush_sources는 소스를 나열하고 각각을 사용하는 브러시를 보여줍니다. - 팩 가져오기.
import_brush_pack으로 파일(base64),fileName및 함께 제공된licence를 사용합니다.brushes(이 호스트의renderable포함),unsupported(매핑되지 않은 항목) 및licence를 읽은 다음, 몇 개를preview_brush로 미리 보고update_brush로 조정합니다. - 공유합니다.
export_brushes는 라이브러리 파일을 씁니다;import_brushes는 파일을 추가합니다(버전 1 파일은 페인트 편집기의 이전 브러시에서 마이그레이션됨). 브러시를 다른 편집기에 전달하기 전에host로check_brush를 사용합니다.
모범 사례
- 가장 가까운 프리셋에서 시작하여 두세 개의 facet을 변경하십시오. 처음부터 만든 브러시는 엔진 기본값을 얻어 매체에 적합하지 않은 경우가 많습니다.
- 브러시가 사용될 종이와 색상에서 테스트하십시오: 그레인 반응과 글레이즈는 매끄러운 종이와 거친 종이에서 다르게 보입니다.
- 밝은 브러시에는 어두운 종이를 사용하고, 하이라이터에는
light.spill반경을 0으로 주어 빛이 획에 머물도록 하십시오. variety를 사실대로 유지하십시오(사람들이 브러시를 찾는 방법입니다) 작업에tags를 추가하십시오(lettering,foliage).- 매체에 일반적인 색상이 있는 경우(파란 볼펜, 노란 하이라이터)에만 브러시에
colour.default를 지정하십시오: 브러시를 선택하면 사용자의 색상으로 설정됩니다. 올바른 색상이 배경에 따라 달라지는 경우(어두운 보드의 흰색 분필, 종이의 흑연) 밝음/어두움 쌍을 사용하고, 다른 일반적인 색상에는palette를 사용하십시오. 어두운 잉크도 쌍이 필요합니다(진한 파랑/밝은 파랑, 거의 검정/거의 흰색): 단일 어두운 기본값은 어두운 구성표 편집기에서 사라집니다. 각 면을 대상 배경과 비교하여 확인하십시오(최소 3:1). 항상 자체 색상으로 칠해야 하는 브러시(무지개 마커)에만colour.own을 사용하십시오. - 미리보기 및 썸네일은 그려지는 대상에 대해 자체 색상을 선택합니다(브러시가 읽을 때 기본값이 있으면 그것을, 그렇지 않으면 매체에 대한 색상을 사용). 미리보기를 표시하기 위해 브러시에 기본값을 부여하지 마십시오: 브러시를 선택하면 해당 기본값이 사용자의 색상이 됩니다.
- 스탬프 팁은 페인트 색상으로 스티커 모양을 그립니다. 스티커의 자체 색상을 유지하려면 대신
marksobjects를 사용하십시오. - 이미지 팁: 이미지를 자국으로 자르고 투명하거나 단색 배경을 제공하여 dab이 상자가 아닌 자국이 되도록 하십시오. 연속 자국의 경우 간격 0.2–0.4, 별도 인쇄의 경우 1 이상;
angleJitter,flip및scatter를 추가하여 동일한 이미지가 눈에 띄게 반복되지 않도록 하십시오. - 그레인:
texturised그레인(기본값)은 획이 드러내는 텍스처입니다(예: 종이).moving그레인은 팁에 속하며 팁과 함께 굴러갑니다(스펀지, 롤러). 깊이 0.4–0.7은 텍스처로 읽힙니다. 1은 피크만 남깁니다. 도구의 텍스처에는tip.grain을 사용하고 종이의 텍스처에는behaviour.grain을 사용하십시오.
함정
- 호스트가 거부하는 facet.
create_brush가 거부하고update_brush는 추가하는 변경을 facet 및 수정 사항과 함께 거부합니다.check_brush는degraded(해당 facet이 제거된 브러시)를 반환하여 시작점을 제공합니다. - 전부 칠할 수 없는 호스트에서 브러시 조정.
update_brush는 브러시가 다른 호스트를 위해 이미 가지고 있는 것을 유지하고(캔버스에서 변경된 페인트 브러시의 빛)kept에 나열하며, 제거되지 않습니다. 이 호스트 전용 복사본을 만들려면check_brush의degraded브러시에서create_brush를 사용하십시오. - ID. 내장 ID는 재사용하거나 변경할 수 없습니다. 사용 중인 ID는 거부됩니다(대신 업데이트).
- 스탬프. 모든 자국은
find_stickers의 모든 스티커 참조 또는 편집기 스탬프(editor:star…)를 사용할 수 있습니다. 호스트의 스티커 라이브러리가 로드할 수 없는 참조는 가장 가까운 참조와 함께 거부됩니다. 페인트 편집기만 스탬프 팁 및 산란 자국을 렌더링합니다. 캔버스, 벡터 및 이미지 편집기는 거부합니다(check_brush가 알려줌). - 이미지 소스. 라이브러리에 없는
source:<id>는 가장 가까운 ID와 함께 거부됩니다. 먼저 추가하십시오. 소스의 이미지를 바꾸는 것(overwrite)은 해당 소스를 명명하는 모든 브러시를 변경하지만 이미 그려진 획은 변경하지 않습니다. 객체 자국은 스티커만 사용하므로 이미지 소스는 삭제됩니다(problems에서 알려줌). 브러시 팩은 종종 개인 사용 전용 라이선스가 있습니다: 소스와 함께licence텍스트를 유지하십시오. - 브러시 팩. 팁(및 Procreate 그레인)만 가져옵니다: 다이나믹, 연필 곡선, 패턴, 듀얼 브러시 및 젖은 설정은
unsupported에 나열되므로 가져온 브러시는 기본 느낌으로 칠해집니다. 조정하십시오. 가져온 이미지 팁은 스탬프 팁이므로 캔버스, 벡터 및 이미지 편집기가 칠할 수 없습니다(renderablefalse). 팩은 종종 개인 사용 전용입니다:licence를 전달하고 유지하십시오. 확인하지 않고 가져온 브러시의 라이브러리 파일을 재배포하지 마십시오. - 범위를 벗어난 값은 스키마에서 거부됩니다(
tip.size는 1..2500px). 저장된 브러시는 가져올 때 제한되며problems에 보고됩니다. - 페인트 편집기는 이 라이브러리에서 칠합니다.
set_brush는 여기서 ID로 브러시를 선택하고 facet을 저장하지 않고 적용합니다.create_brush/update_brush는 하나를 저장합니다. 페인트 호스트는 자체 미리보기(createPaintBrushLibraryToolProvider)로 이러한 도구를 등록하므로 페인트 편집기에는 자체 목록, 저장, 내보내기, 가져오기 또는 썸네일 도구가 없습니다.
워크플로 스킬
pixerate-brushes-design: 설명("부드러운 분홍색 하이라이터", "캔버스용 분필")에서 저장되고 확인된 브러시까지.
도구 참조
| 도구 | 사용법 |
|---|---|
list_brush_presets | 이 호스트가 렌더링하는 브러시를 찾습니다: kind, medium, variety, tool, tag, text, source (all, builtin, user), all, offset, limit. brushes (id, name, builtin, kind, medium, variety 또는 tool, category, engine, tip, size, marks, surface, light) 및 total을 반환합니다. 먼저 호출하십시오. |
describe_brush | id로 하나의 브러시: 전체 facet brush (colour: default, palette, own 포함), builtin, engine, category 및 이 호스트에 대한 check (스탬프 스티커 포함). 알 수 없는 ID는 가장 가까운 것과 함께 거부됩니다. |
create_brush | 새 브러시 저장: id, name, 선택적 basedOn, facet, colour 포함 (편집기의 현재 브러시를 유지하려면 get_brush가 반환한 brush를 전달). 이 호스트(및 스티커 라이브러리, 스탬프 팁의 경우)에 대해 정규화되고 검사됩니다. 거부된 브러시는 아무것도 저장하지 않습니다. id, brush, engine, problems, warnings를 반환합니다. |
update_brush | id별로 기존 브러시 업데이트. 업데이트할 facet 또는 unset으로 삭제할 전체 facet을 전달합니다. 내장 프리셋은 변경할 수 없습니다. changed (변경된 리프 경로), brush, engine, problems, warnings를 반환합니다. |
duplicate_brush | sourceId와 새 id 및 name으로 브러시를 복사합니다. brush, engine, problems, warnings를 반환합니다. |
remove_brush | id별로 사용자 브러시를 삭제합니다. 내장 브러시는 삭제할 수 없습니다. |
check_brush | id로 브러시를 특정 또는 현재 호스트에 대해 검사합니다: errors (렌더링할 수 없는 facet, 각각 수정 사항 포함), warnings (렌더링되지 않는 facet), degraded (오류가 있는 facet이 제거된 브러시), renderable (이 호스트가 렌더링할 수 있는지 여부). 스탬프도 스티커 라이브러리에 대해 확인됩니다. |
list_brush_sources | 이미지 소스 나열: 각각 id, name, description, size, colourCount, licence 및 사용하는 브러시 수. |
add_brush_source | 이미지 소스를 추가합니다: source (base64 PNG), name, description, channel (auto, transparent, dark, light), licence. id를 반환합니다. |
remove_brush_source | 소스를 제거합니다. 사용 중인 소스는 거부됩니다 (대신 overwrite 사용). |
preview_brush | 호스트가 렌더러를 가지고 있을 때 id별로 브러시의 미리보기를 생성합니다. |
export_brushes | ids를 .brushlib 또는 .brushset 파일(base64), format (브러시당 하나의 file 또는 패키지 bundle), 선택적 name, version으로 내보냅니다. |
import_brushes | 라이브러리 파일을 가져옵니다: data (base64), fileName, licence. brushes (렌더링 가능 포함), unsupported, problems, warnings를 반환합니다. |
import_brush_pack | .abr 또는 .brush / .brushset 팩을 가져옵니다: data (base64), fileName, licence. brushes (렌더링 가능 포함), unsupported, licence를 반환합니다. |
add_brush_to_library | 가져온 브러시를 라이브러리에 저장합니다: brush (id, name, facets, colour 포함). id, brush, engine, problems, warnings를 반환합니다. |