trimesh.visual.color module¶
color.py¶
Hold and deal with visual information about meshes.
There are lots of ways to encode visual information, and the goal of this architecture is to make it possible to define one, and then transparently get the others. The two general categories are:
colors, defined for a face, vertex, or material
textures, defined as an image and UV coordinates for each vertex
This module only implements diffuse colors at the moment.
Goals¶
If nothing is defined sane defaults should be returned
If a user alters or sets a value, that is considered user data and should be saved and treated as such.
Only one ‘mode’ of visual (vertex or face) is allowed at a time and setting or altering a value should automatically change the mode.
- class trimesh.visual.color.ColorVisuals(mesh=None, face_colors=None, vertex_colors=None)¶
Bases:
Visuals
Store color information about a mesh.
- __init__(mesh=None, face_colors=None, vertex_colors=None)¶
Store color information about a mesh.
- Parameters:
mesh (Trimesh) – Object that these visual properties are associated with
colors (face) – Colors per-face
vertex_colors ((n,3|4) or (3,) or (4,) uint8) – Colors per-vertex
- concatenate(other, *args)¶
Concatenate two or more ColorVisuals objects into a single object.
- Parameters:
other (ColorVisuals) – Object to append
*args (ColorVisuals objects)
- Returns:
result – Containing information from current object and others in the order it was passed.
- Return type:
- copy()¶
Return a copy of the current ColorVisuals object.
- Returns:
copied – Contains the same information as self
- Return type:
- property defined¶
Are any colors defined for the current mesh.
- Returns:
defined – Are colors defined or not.
- Return type:
bool
- property face_colors¶
Colors defined for each face of a mesh.
If no colors are defined, defaults are returned.
- Returns:
colors – RGBA color for each face
- Return type:
(len(mesh.faces), 4) uint8
- face_subset(face_index)¶
Given a mask of face indices, return a sliced version.
- Parameters:
face_index ((n,) int, mask for faces) – (n,) bool, mask for faces
- Returns:
visual
- Return type:
ColorVisuals object containing a subset of faces.
- property kind¶
What color mode has been set.
- Returns:
mode – One of (‘face’, ‘vertex’, None)
- Return type:
str or None
- property main_color¶
What is the most commonly occurring color.
- Returns:
color
- Return type:
(4,) uint8, most common color
- to_texture()¶
Convert the current ColorVisuals object to a texture with a SimpleMaterial defined.
- Returns:
visual – Copy of the current visuals as a texture.
- Return type:
- property transparency¶
Does the current object contain any transparency.
- Returns:
transparency
- Return type:
bool, does the current visual contain transparency
- update_faces(mask)¶
Apply a mask to remove or duplicate face properties
- update_vertices(mask)¶
Apply a mask to remove or duplicate vertex properties.
- property vertex_colors¶
Return the colors for each vertex of a mesh
- Returns:
colors
- Return type:
(len(mesh.vertices), 4) uint8, color for each vertex
- class trimesh.visual.color.VertexColor(colors=None, obj=None)¶
Bases:
Visuals
Create a simple visual object to hold just vertex colors for objects such as PointClouds.
- __init__(colors=None, obj=None)¶
Create a vertex color visual
- concatenate(other)¶
Concatenate this visual object with another VertexVisuals.
- Parameters:
other (VertexColors or ColorVisuals) – Other object to concatenate
- Returns:
concate – Object with both colors
- Return type:
- copy()¶
Return a copy of the current visuals
- property kind¶
- update_faces(mask)¶
- update_vertices(mask)¶
- property vertex_colors¶
- trimesh.visual.color.color_to_uv(vertex_colors)¶
Pack vertex colors into UV coordinates and a simple image material
- Parameters:
vertex_colors ((n, 4) float) – Array of vertex colors.
- Returns:
material (SimpleMaterial) – Material containing color information.
uv ((n, 2) float) – Normalized UV coordinates
- trimesh.visual.color.colors_to_materials(colors, count=None)¶
Convert a list of colors into a list of unique materials and material indexes.
- Parameters:
colors ((n, 3) or (n, 4) float) – RGB or RGBA colors
count (int) – Number of entities to apply color to
- Returns:
diffuse ((m, 4) int) – Colors
index ((count,) int) – Index of each color
- trimesh.visual.color.face_to_vertex_color(mesh, face_colors, dtype=<class 'numpy.uint8'>)¶
Convert face colors into vertex colors.
- Parameters:
mesh (trimesh.Trimesh object)
face_colors ((n, (3,4)) int, face colors)
dtype (data type of output)
- Returns:
vertex_colors
- Return type:
(m,4) dtype, colors for each vertex
- trimesh.visual.color.hex_to_rgba(color)¶
Turn a string hex color to a (4,) RGBA color.
- Parameters:
color (str, hex color)
- Returns:
rgba
- Return type:
(4,) np.uint8, RGBA color
- trimesh.visual.color.interpolate(values, color_map=None, dtype=<class 'numpy.uint8'>)¶
Given a 1D list of values, return interpolated colors for the range.
- Parameters:
values ((n, ) float) – Values to be interpolated over
color_map (None, or str) – Key to a colormap contained in: matplotlib.pyplot.colormaps() e.g: ‘viridis’
- Returns:
interpolated – Interpolated RGBA colors
- Return type:
(n, 4) dtype
- trimesh.visual.color.linear_color_map(values, color_range=None)¶
Linearly interpolate between two colors.
If colors are not specified the function will interpolate between 0.0 values as red and 1.0 as green.
- Parameters:
values ((n, ) float) – Values to interpolate
color_range (None, or (2, 4) uint8) – What colors should extrema be set to
- Returns:
colors – RGBA colors for interpolated values
- Return type:
(n, 4) uint8
- trimesh.visual.color.random_color(dtype=<class 'numpy.uint8'>)¶
Return a random RGB color using datatype specified.
- Parameters:
dtype (numpy dtype of result)
- Returns:
color
- Return type:
(4,) dtype, random color that looks OK
- trimesh.visual.color.to_float(colors: Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) ndarray[Any, dtype[float64]] ¶
Convert integer colors to 0.0-1.0 floating point colors
- Parameters:
colors ((n, d) int) – Integer colors
- Returns:
as_float – Float colors 0.0 - 1.0
- Return type:
(n, d) float
- trimesh.visual.color.to_rgba(colors, dtype=<class 'numpy.uint8'>) ndarray[Any, dtype[_ScalarType_co]] ¶
Convert a single or multiple RGB colors to RGBA colors.
- Parameters:
colors ((n, 3) or (n, 4) array) – RGB or RGBA colors or None
- Returns:
colors – (4,) single RGBA color
- Return type:
(n, 4) list of RGBA colors
- trimesh.visual.color.uv_to_color(uv, image)¶
Get the color in a texture image.
- Parameters:
uv ((n, 2) float) – UV coordinates on texture image
image (PIL.Image) – Texture image
- Returns:
colors – RGBA color at each of the UV coordinates
- Return type:
(n, 4) uint4
- trimesh.visual.color.uv_to_interpolated_color(uv, image)¶
Get the color from texture image using bilinear sampling.
- Parameters:
uv ((n, 2) float) – UV coordinates on texture image
image (PIL.Image) – Texture image
- Returns:
colors – RGBA color at each of the UV coordinates.
- Return type:
(n, 4) uint8
- trimesh.visual.color.vertex_to_face_color(vertex_colors, faces)¶
Convert a list of vertex colors to face colors.
- Parameters:
vertex_colors ((n,(3,4)), colors)
faces ((m,3) int, face indexes)
- Returns:
face_colors
- Return type:
(m,4) colors