
    Ti	                     F    d Z ddlZddlmZmZ ddlmZ ddlm	Z	 d Z
d ZdS )	zr
objects.py
--------------

Deal with objects which hold visual properties, like
ColorVisuals and TextureVisuals.
    N   )ColorVisualscolor_to_uv)pack)TextureVisualsc                      t          di | S )aP  
    Create Visuals object from keyword arguments.

    Parameters
    -----------
    face_colors : (n, 3|4) uint8
      Face colors
    vertex_colors : (n, 3|4) uint8
      Vertex colors
    mesh : trimesh.Trimesh
      Mesh object

    Returns
    ----------
    visuals : ColorVisuals
      Visual object created from arguments
     )r   )kwargss    P/DATA/AppData/hermes/venv/lib/python3.11/site-packages/trimesh/visual/objects.pycreate_visualr      s    $ !!&!!!    c                    t          |          dk    rt          j        | |          } nt          j        |           } t	          d | D                       rg }g }| D ]}|j        dk    r|                    |j                   |j        D|                    t          j        t          |j	        j
                  df          dz              r|                    |j                   t          |j                  \  }}|                    |           |                    |           t          ||          \  }}t          ||	          S t          d
 | D             d          }	|	dk    r.t          j        d | D                       }
t#          |
          S |	dk    r.t          j        d | D                       }
t#          |
          S t#                      S )a  
    Concatenate multiple visual objects.

    Parameters
    ----------
    visuals : ColorVisuals or list
      Visuals to concatenate
    *args :  ColorVisuals or list
      More visuals to concatenate

    Returns
    ----------
    concat : Visuals
      If all are color
    r   c              3   ,   K   | ]}|j         d k    V  dS )textureNkind.0vs     r   	<genexpr>zconcatenate.<locals>.<genexpr><   s)      
0
0116Y
0
0
0
0
0
0r   r   N   g      ?vertex_colors)	materialsuvs)materialuvc              3   2   K   | ]}|j         	|j         V  d S )Nr   r   s     r   r   zconcatenate.<locals>.<genexpr>T   s+      ??AAF,>,>,>,>,>??r   facec                     g | ]	}|j         
S r	   face_colorsr   s     r   
<listcomp>zconcatenate.<locals>.<listcomp>V   s    ;;;aAM;;;r   r!   vertexc                     g | ]	}|j         
S r	   r   r   s     r   r#   zconcatenate.<locals>.<listcomp>Y   s    ===AO===r   )lennpappendarrayanyr   r   r   zerosmeshverticesr   r   r   r   nextvstackr   )visualsargsmatsr   r   	color_matcolor_uvnew_matnew_uvr   colorss              r   concatenater8   %   s   " 4yy1}})GT**(7## 
0
0
0
0
000 ; 	% 	%Av""AJ'''4<JJrxQV_)=)=q(ABBSHIIII JJqt$$$$ '2&P&P&P#	8I&&&

8$$$$3777w6:::: ?????FFDv~~;;7;;;<<////			==W===>>&1111>>r   )__doc__numpyr'   colorr   r   r   r   r   r   r   r8   r	   r   r   <module>r<      s         , , , , , , , ,       # # # # # #" " "*7 7 7 7 7r   