
    j	                     D    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y)	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    C/DATA/.local/lib/python3.12/site-packages/trimesh/visual/objects.pycreate_visualr      s    $ !&!!    c                    t        |      dkD  rt        j                  | |      } nt        j                  |       } t	        d | D              rg }g }| D ]  }|j
                  dk(  r|j                  |j                         |j                  G|j                  t        j                  t        |j                  j                        df      dz          |j                  |j                         t        |j                        \  }}|j                  |       |j                  |        t        ||      \  }}t        ||	      S t        d
 | D        d      }	|	dk(  r9t        j                   | D cg c]  }|j"                   c}      }
t%        |
      S |	dk(  r9t        j                   | D cg c]  }|j                   c}      }
t%        |
      S t%               S c c}w c c}w )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(    yw)textureNkind.0vs     r   	<genexpr>zconcatenate.<locals>.<genexpr><   s     
01166Ys   r   N   g      ?)vertex_colors)	materialsuvs)materialuvc              3   N   K   | ]  }|j                   |j                     y w)Nr   r   s     r   r   zconcatenate.<locals>.<genexpr>T   s     ?AAFF,>s   %%face)face_colorsvertex)lennpappendarrayanyr   r   r   zerosmeshverticesr   r   r   r   nextvstackr   r   )visualsargsmatsr   r   	color_matcolor_uvnew_matnew_uvr   colorss              r   concatenater3   %   s   " 4y1}))GT*((7# 
0
00Avv"AJJ'44<JJrxxQVV__)=q(ABSHI JJqtt$ '2&P#	8I&

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