欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > blender bpy将顶点颜色转换为UV纹理vertex color to texture

blender bpy将顶点颜色转换为UV纹理vertex color to texture

2024/10/25 6:28:40 来源:https://blog.csdn.net/weixin_42605076/article/details/139640005  浏览:    关键词:blender bpy将顶点颜色转换为UV纹理vertex color to texture

  一、关于环境

安装blender的bpy,不需要额外再安装blender软件。在python控制台中直接输入pip install bpy即可。

二、关于代码

本文所给出代码仅为参考,禁止转载和引用,仅供个人学习。 本文所给出的例子是https://download.csdn.net/download/weixin_42605076/89233917中的obj_000001.ply。

import bpy
import argparse
import sys
import os
for i in range(1):input_ply = "obj_0000%s.ply"%str(i+1).rjust(2, '0')output_obj = "obj_0000%s.obj"%str(i+1).rjust(2, '0')name, _ = os.path.splitext(output_obj)output_png = '{}.png'.format(name)output_mtl = '{}.mtl'.format(name)print('Input PLY: {}'.format(input_ply))print('Output OBJ: {}'.format(output_obj))print('Output PNG: {}'.format(output_png))print('Output MTL: {}'.format(output_mtl))bpy.ops.object.select_all(action='DESELECT')bpy.ops.object.select_by_type(type='MESH')bpy.ops.object.delete(use_global=False)# # https://docs.blender.org/api/current/bpy.data.html# print('Remove default cube mesh')# if "Cube" in bpy.data.meshes:#     mesh = bpy.data.meshes["Cube"]#     bpy.data.meshes.remove(mesh)print('Import PLY')bpy.ops.import_mesh.ply(filepath=input_ply)print('Toggle edit mode')bpy.ops.object.editmode_toggle()print('UV smart project')bpy.ops.uv.smart_project()# https://blender.stackexchange.com/questions/5668/add-nodes-to-material-with-pythonprint('Add shading material')material = bpy.data.materials.new('SomeMaterial')material.use_nodes = Truenodes = material.node_tree.nodesprint('Toggle edit mode')bpy.ops.object.editmode_toggle()print('Add input vertex color')input_node = nodes.new('ShaderNodeVertexColor')bsdf_node = nodes.get('Principled BSDF')print('Link vertex color to bsdf')material.node_tree.links.new(bsdf_node.inputs[0], input_node.outputs[0])print('Add texture image')texture_node = nodes.new('ShaderNodeTexImage')print('Create empty image')image = bpy.data.images.new(name='SomeImage', width=1024, height=1024)print('Assign image to node')texture_node.image = imageprint('Switch to CYCLES render engine')bpy.context.scene.render.engine = 'CYCLES'print('Select active material')bpy.context.active_object.active_material = materialprint('Bake image')bpy.context.view_layer.objects.active = bpy.context.active_objectbpy.ops.object.bake(type='DIFFUSE',pass_filter={'COLOR'}, use_clear=True)print('Save image')image.save_render(output_png)# set map_Kd correctly in mtl fileprint('Set image path')image.filepath = os.path.basename(output_png)print('Connect texture node to bsdf')material.node_tree.links.new(bsdf_node.inputs[0], texture_node.outputs[0])print('Export OBJ')bpy.ops.export_scene.obj(filepath=output_obj)
# ​(原代码的地址在:jiegec/blender-scripts: Some useful Blender scripts (github.com)​,欢迎大家去给原作者点赞)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com