# Anata HAIR ###### tags: `anata` {%hackmd @xr/dark %} ---- ## Female Hair | Category | Posters | Todo | Finished | Combined | |:-------- |:------- | ----- | -------- | -------- | | [🔥 HAIR](https://github.com/M3-org/anata/blob/main/files/female/HAIR/README.md) | [![](https://anata.dev/img/female/thumb/mini_HAIR.jpg)](https://anata.dev/img/female/poster/poster_HAIR.jpg) | [![](https://anata.dev/img/female/thumb/mini-todo_HAIR.jpg)](https://anata.dev/img/female/todo/todo_HAIR.jpg) | [![](https://anata.dev/img/female/thumb/mini-glbs_HAIR.jpg)](https://anata.dev/img/female/glbs/glbs_HAIR.jpg) | [![](https://anata.dev/img/female/thumb/mini-comb_HAIR.jpg)](https://anata.dev/img/female/comb/comb_HAIR.jpg) | | Websites | [Poster](https://github.com/M3-org/anata/blob/main/files/female/HAIR/README.md) | [Todo](https://anata.dev/vrm/files/female/HAIR/todo.html) | [Finished](https://anata.dev/vrm/files/female/HAIR/glbs.html) | [Combined](https://anata.dev/vrm/files/female/HAIR/combined.html) | ---- ## Male Hair | Category | Posters | Todo | Finished | Combined | |:-------- |:------- | ----- | -------- | -------- | | [🔥 HAIR](https://github.com/M3-org/anata/blob/main/files/male/HAIR/README.md) | [![](https://anata.dev/img/male/thumb/mini_HAIR.jpg)](https://anata.dev/img/male/poster/poster_HAIR.jpg) | [![](https://anata.dev/img/male/thumb/mini-todo_HAIR.jpg)](https://anata.dev/img/male/todo/todo_HAIR.jpg) | [![](https://anata.dev/img/male/thumb/mini-glbs_HAIR.jpg)](https://anata.dev/img/male/glbs/glbs_HAIR.jpg) | [![](https://anata.dev/img/male/thumb/mini-comb_HAIR.jpg)](https://anata.dev/img/male/comb/comb_HAIR.jpg) | | Websites | [Poster](https://github.com/M3-org/anata/blob/main/files/male/HAIR/README.md) | [Todo](https://anata.dev/vrm/files/male/HAIR/todo.html) | [Finished](https://anata.dev/vrm/files/male/HAIR/glbs.html) | [Combined](https://anata.dev/vrm/files/male/HAIR/combined.html) | ---- ## Shared Hair | Category | Posters | Todo | Finished | Combined | |:-------- |:------- | ----- | -------- | -------- | | [🔥 HAIR](https://github.com/M3-org/anata/blob/main/files/shared/HAIR/README.md) | [![](https://anata.dev/img/shared/thumb/mini_HAIR.jpg)](https://anata.dev/img/shared/poster/poster_HAIR.jpg) | [![](https://anata.dev/img/shared/thumb/mini-todo_HAIR.jpg)](https://anata.dev/img/shared/todo/todo_HAIR.jpg) | [![](https://anata.dev/img/shared/thumb/mini-glbs_HAIR.jpg)](https://anata.dev/img/shared/glbs/glbs_HAIR.jpg) | [![](https://anata.dev/img/shared/thumb/mini-comb_HAIR.jpg)](https://anata.dev/img/shared/comb/comb_HAIR.jpg) | | Websites | [Poster](https://github.com/M3-org/anata/blob/main/files/shared/HAIR/README.md) | [Todo](https://anata.dev/vrm/files/shared/HAIR/todo.html) | [Finished](https://anata.dev/vrm/files/shared/HAIR/glbs.html) | [Combined](https://anata.dev/vrm/files/shared/HAIR/combined.html) | --- 📂 Download layers: 🔗 Github: https://github.com/M3-org/anata/issues/8 🟣 Dework: https://app.dework.xyz/webaverse/anata-81736?taskId=965a126f-8827-425d-95af-140f726cd7ea ⛵ Opensea: https://opensea.io/collection/the-anata-nft?search[sortAscending]=true&search[sortBy]=UNIT_PRICE&search[stringTraits][0][name]=Hair&search[stringTraits][0][values][0]=Mid%20Brown --- ## Notes ```python! import bpy ## Make every material in scene principled bsdf ## Blend file only had image texture node per material # Get the active scene scene = bpy.context.scene # Iterate through all visible objects in the scene for obj in bpy.context.visible_objects: # Set the object as the active object bpy.context.view_layer.objects.active = obj # Check if the object has a material if obj.material_slots: # Iterate through all material slots of the object for slot in obj.material_slots: # Get the material of the slot material = slot.material # Check if the material has a node tree if material.use_nodes: # Get the material's node tree tree = material.node_tree # Create a list to store the Image Texture nodes image_nodes = [] # Iterate through all nodes in the node tree for node in tree.nodes: # Check if the node is an Image Texture node if node.type == 'TEX_IMAGE': # Append the Image Texture node to the list image_nodes.append(node) # Create a Principled BSDF node principled_node = tree.nodes.new('ShaderNodeBsdfPrincipled') # Connect each Image Texture node to the Base Color input of the Principled BSDF node for image_node in image_nodes: # Get the output socket of the Image Texture node output_socket = image_node.outputs['Color'] # Connect the Image Texture node to the Base Color input of the Principled BSDF node tree.links.new(output_socket, principled_node.inputs['Base Color']) # Create a Material Output node output_node = tree.nodes.new('ShaderNodeOutputMaterial') # Connect the BSDF output of the Principled BSDF node to the Surface input of the Material Output node tree.links.new(principled_node.outputs['BSDF'], output_node.inputs['Surface']) ``` --- ![](https://i.imgur.com/JIzKHOV.jpg) ![](https://i.imgur.com/ar14qtx.jpg) ![](https://i.imgur.com/31y2bYy.png) ![](https://i.imgur.com/bXEGvM9.png)