CoolFace
Apppublic

LTT/PRM

sourceHugging Faceupdated 1y agoView on Hugging Face
24likes
material.cpython-310.pyc69 linesDownload Raw Back to __pycache__
1o

2�Dg� �@szddlZddlZddlZddlmZddlmZGdd�dejj	�Z3e��ddd	��Ze��d4d��Z
dd
�Zdd�ZdS)�N)�util�)�texturecsDeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d5�Zdd�Z�Z	S)
�Materialcs@tt|���t�|_|��D]}|j�|�||||<qdS�N)�superr�__init__�set�mat_keys�keys�add)�selfZmat_dict�key��	__class__��4/hpc2hdd/home/jlin695/code/PRM/src/utils/material.pyrs�zMaterial.__init__cC�6t||�Sr)�hasattr�r
rrrr�__contains__�7zMaterial.__contains__cCrr)�getattrrrrr�__getitem__ rzMaterial.__getitem__cCs|j�|�t|||�dSr)r8r�setattr)r
r�valrrr�__setitem__#szMaterial.__setitem__cCs|j�|�t||�dSr)r9�remove�delattrrrrr�__delitem__'szMaterial.__delitem__cCs|jSr)r10)r
rrrr+sz
Material.keys)11�__name__�12__module__�__qualname__rrrrrr�
__classcell__rrrrrsrTcCs.ddl}tj�|�}t|d��}|��}Wd�n1swYg}|D]u}|�d|���}|d��}	|dd�}13d|	vrOt	d|14di�}||g7}q'|r�d|	vrat15jdt16jd	d17�|d<q'd|	vrst18jgd
�t19jd	d20�|d<q'd|	vs�d|	vs�d|	vs�d|	vr�|21d||	<q't22jt
dd�|23D��t24jd	d25�||	<q'|D]u}d|vr�d|d<d|vr�t�tj�||d��|d<n	t�|d�|d<d|vr�tjtj�||d�dd�|d<n	t�|d�|d<d|vr�tjtj�||d�dd�dd�|d<t�|d�|d<|�r|d��D]}
d|
d<�qq�|S) Nr�rz +|	+|26+rZnewmtl�nameZmap_dg�?�cuda)�dtype�device�dZmap_ke)�r*r*ZKe�bsdfZmap_kdZmap_ks�bumpcss�|]}t|�VqdSr)�float)�.0r)rrr�	<genexpr>Ms�zload_mtl.<locals>.<genexpr>�pbr�kd�)�channels�kscSs|ddS)N�rr��xrrr�<lambda>_szload_mtl.<locals>.<lambda>)�	lambda_fnr3�normalr*).r)�re�os�path�dirname�open�	readlines�split�strip�lowerr�torch�tensor�float32�tupler�load_texture2D�join�	Texture2D�srgb_to_rgb�getMips)�fn�clear_ksr;Zmtl_path�f�lines�	materials�line�27split_line�prefix�data�material�mat�miprrr�load_mtl1sN28� $�"&�rYcCsLtj�|�}t|d���}|�d�|durn|�d|d�d|��vr9|�d�t�tj�|d�t�	|d��d|��vrQ|�d	�t�tj�|d29�|d�d|��vrm|�d�tjtj�|d
�|ddd�d�n&|�d�|�d�|�d�|�d�|�d�|�d�Wd�dSWd�dS1s�wYdS)N�wznewmtl defaultMat30z31bsdf   %s32r+r1zmap_Kd texture_kd.png33ztexture_kd.pngr4zmap_Ks texture_ks.png34ztexture_ks.pngr:zbump texture_n.png35z
texture_n.pngcSst�|�ddS)Nrg�?)r�safe_normalizer6rrrr8zszsave_mtl.<locals>.<lambda>)r9z	Kd 1 1 136z	Ks 0 0 037z	Ka 0 0 038z	Tf 1 1 139zNi 140zNs 041)42r<r=r>r?�writerr�save_texture2DrI�rgb_to_srgb)rMrV�folderrOrrr�save_mtlks04344 4546"�4748495051��"r`c	CsZ|�dddd�}tjj�|d|d|jdd|d|jdfd�}|�dddd���S)Nrr2rr5�	replicate)�permuterD�nn�52functional�pad�shape�53contiguous)r7�full_resrrr�_upscale_replicate�s6ricCsxt|�dksJ�|D]}|d|ddksJd��d|vd|dvus(Jd��q54td|ddd��}gd�}d}|D]'}|D]"}||vrOt�||���nt�d	d	g�}	|dur`t�||	�n|	}q@q<d55t�t�|t�d	t|�g����t	�}56|D]O}||dvr�g}|D]-}||vr�t57�||jt
|��}|jddkr�|dd�dd�dd�dd�f}|�|�q�tjt
|�d58d
�}
t|
|59�}
t�|
�||<q||60d|d|61d	|d	g}i}g}tt|��D]P}||}td�D]E}|||}||v�ri||<|||v�r+|�|||d|d	||d	|dg�t|�d	|||<||||||<q�q�|||fS)Nrr+z3All materials must have the same BSDF (uber shader)r:z=All materials must have either normal map enabled or disabled�
uber_material)r%r+)r1r4r:rr5�����r2)�dim)�lenr�np�array�getRes�maximum�ceil�log2�astype�intr�scale_img_nhwcrUrGrf�appendrD�catrirrJ�range)rQ�	texcoords�tfaces�mfacesrWrjZtexturesZmax_res�texZtex_resrhZ
tex_data_listZ62scaled_texZtex_data�s_coeffZ63new_tvertsZnew_tverts_data�fiZmatIdx�vi�tirrr�merge_materials�sZ64�(�, 65�66� 672�68	r�)T)r<�numpyrnrD�src.models.geometry.rep_3dr�rrc�Moduler�no_gradrYr`rir�rrrr�<module>s	969