sketchkit.renderer package

Submodules

sketchkit.renderer.cairo_renderer module

class sketchkit.renderer.cairo_renderer.CairoRenderOptions(canvas_size: tuple[int, int] | None = None, background_color: tuple[float, float, float] = (1.0, 1.0, 1.0), stroke_color: tuple[float, float, float] | None = None, stroke_width: float | None = None, stroke_opacity: float | None = None, random_color: bool = False)[source]

Bases: RenderOptions

background_color: tuple[float, float, float] = (1.0, 1.0, 1.0)
random_color: bool = False
stroke_color: tuple[float, float, float] | None = None
stroke_opacity: float | None = None
stroke_width: float | None = None
class sketchkit.renderer.cairo_renderer.CairoRenderer(render_options: CairoRenderOptions | None = None)[source]

Bases: Renderer

_abc_impl = <_abc._abc_data object>
_render(sketch: Sketch, render_options: CairoRenderOptions) Image[source]

Renders the given sketch using Cairo’s graphics system with the provided render options.

Parameters:
  • sketch (Sketch) – The sketch to be rendered.

  • render_options (CairoRenderOptions) – The options controlling the rendering behavior.

Returns:

The rendered sketch as a 3-channel NumPy array.

Return type:

np.ndarray

clear_ctx()[source]
new_ctx(render_options: CairoRenderOptions)[source]
sketchkit.renderer.cairo_renderer.bezier_point(p0, p1, p2, p3, t)[source]
sketchkit.renderer.cairo_renderer.bezier_tangent(p0, p1, p2, p3, t)[source]
sketchkit.renderer.cairo_renderer.lerp(a, b, t)[source]
sketchkit.renderer.cairo_renderer.polyline_lengths(pts)[source]

sketchkit.renderer.ciallo_renderer module

class sketchkit.renderer.ciallo_renderer.CialloRenderOptions(canvas_size: tuple[int, int] | None = None, background_color: tuple[float, float, float, float] = (1.0, 1.0, 1.0, 1.0), stroke_thickness: float = 12.0, stroke_color: tuple[float, float, float, float] = (0.0, 0.0, 0.0, 1.0), brush_type: str = 'textured', brush_texture_path: str = './assets/stamp2.png', spacing: float | None = 1.0, rotation_randomness: float = 0.0, noise_factor: float = 0.0, rng_seed: int = 42)[source]

Bases: RenderOptions

background_color: tuple[float, float, float, float] = (1.0, 1.0, 1.0, 1.0)
brush_texture_path: str = './assets/stamp2.png'
brush_type: str = 'textured'
noise_factor: float = 0.0
rng_seed: int = 42
rotation_randomness: float = 0.0
spacing: float | None = 1.0
stroke_color: tuple[float, float, float, float] = (0.0, 0.0, 0.0, 1.0)
stroke_thickness: float = 12.0
class sketchkit.renderer.ciallo_renderer.CialloRenderer(render_options: CialloRenderOptions | None = None)[source]

Bases: Renderer

_abc_impl = <_abc._abc_data object>
_render(sketch: Sketch, render_options: CialloRenderOptions) Image[source]

Renders the given sketch with the provided CialloRenderOptions.

new_ctx(render_options: CialloRenderOptions)[source]
sketchkit.renderer.ciallo_renderer._sample_cubic_bezier(points: ndarray, num_samples: int) ndarray[source]

Vectorized sampling of a cubic Bezier curve.

sketchkit.renderer.ciallo_renderer.build_stamp_instance_data(polylines: List[ndarray], spacing: float, base_thickness: float, rotation_randomness: float, noise_factor: float, seed: int) ndarray[source]

Builds instance buffer for glDrawArraysInstanced with randomness parameters.

sketchkit.renderer.ciallo_renderer.build_vanilla_sdf_geometry(polylines: List[ndarray], base_thickness: float) ndarray[source]
sketchkit.renderer.ciallo_renderer.sample_points_by_distance(polyline: ndarray, spacing: float, spacing_jitter: float = 0.0, rng: Generator = None) ndarray[source]

Resamples a polyline [x, y, p] to have points spaced by ‘spacing’ (with optional jitter). Returns: (N, 4) -> [x, y, pressure, angle]

sketchkit.renderer.ciallo_renderer.sketch_to_polylines(sketch: Sketch, samples_per_curve: int = 20) List[ndarray][source]

Converts a sketch into a list of polylines (N, 3) [x, y, pressure].

sketchkit.renderer.npr_renderer module

class sketchkit.renderer.npr_renderer.NPRRenderOptions(canvas_size: tuple[int, int] = (512, 512), method: str = 'SuggestiveContour', threshold: float = 0.005)[source]

Bases: object

canvas_size: tuple[int, int] = (512, 512)
method: str = 'SuggestiveContour'
threshold: float = 0.005
class sketchkit.renderer.npr_renderer.NPRRenderer(obj_path: str, render_options: NPRRenderOptions | None = None)[source]

Bases: object

_render(cameras: List[Camera], render_options: NPRRenderOptions | dict | None = None)[source]

实现抽象方法,将3D草图渲染为2D图像

Parameters:
  • sketch – 3D草图对象

  • camera – 相机参数

  • output_folder – 输出文件夹

  • render_options – 渲染选项

Returns:

渲染后的图像列表

Return type:

List[Image.Image]

normalize_obj(input_path: str, output_path: str)[source]
render_appearant_ridges(out_path: str, transform: ndarray, size: tuple[int, int] = (512, 512), ar_thresh: float = 0.1)[source]
render_ridges_and_valleys(out_path: str, transform: ndarray, size: tuple[int, int] = (512, 512), rv_thresh: float = 0.1)[source]
render_suggestive_countour(out_path: str, transform: ndarray, size: tuple[int, int] = (512, 512), sug_thresh: float = 0.005)[source]

Render a sketch composed of Bézier curves using a given texture.

Parameters:
  • out_path – str Path to save the output image.

  • transform – np.ndarray Transform matrix.

  • sug_thresh – float, optional Suggestive threshold. Default is 0.005.

sketchkit.renderer.renderer module

class sketchkit.renderer.renderer.RenderOptions(canvas_size: tuple[int, int] | None = None)[source]

Bases: object

canvas_size: tuple[int, int] | None = None
class sketchkit.renderer.renderer.Renderer[source]

Bases: ABC

_abc_impl = <_abc._abc_data object>
abstractmethod _render(*args, **kwargs) Image[source]
render(sketch: Sketch, render_options: RenderOptions | dict | None = None) Image[source]
render_options = RenderOptions(canvas_size=None)

Module contents