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-python
    print('Add shading material')
    material = bpy.data.materials.new('SomeMaterial')
    material.use_nodes = True
    nodes = material.node_tree.nodes

    print('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 = image

    print('Switch to CYCLES render engine')
    bpy.context.scene.render.engine = 'CYCLES'

    print('Select active material')
    bpy.context.active_object.active_material = material

    print('Bake image')
    bpy.context.view_layer.objects.active = bpy.context.active_object
    bpy.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 file
    print('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)​,欢迎大家去给原作者点赞)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/704440.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS界面设计要点:四大模块解析

UI设计不是艺术设计,这限制了我们从设备和现有技术开始设计。因此,熟悉每个平台的设计规则已经成为每个设计师的第一课,也是每个设计师必要的专业知识。 今天小边给您带来了iOS设计规范,希望帮助您快速熟悉iOS平台设计规范&#…

搜索与图论:染色法判别二分图

搜索与图论&#xff1a;染色法判别二分图 题目描述参考代码 题目描述 输入样例 4 4 1 3 1 4 2 3 2 4输出样例 Yes参考代码 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010, M 200010;int n, m; i…

JAVA小知识16:JAVA常用的API

一、Math 方法名说明public static int abs(int a)获取参数绝对值public static double ceil(double a)向上取整public static double floor(double a)向下取整public static int round(float a)四舍五入public static int max(int a,int b)获取两个int值中的较大值public s…

基于springboot实现车辆管理系统项目【项目源码+论文说明】

基于springboot实现车辆管理系统演示 摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前企业对于车辆信息的管理和控制&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以…

Turbo Console Log自定义配置

写log太麻烦了&#xff1f;可以用下vscode中的Turbo Console Log的插件 因为vscode的其他快捷键可能会和这个插件产生冲突&#xff0c;所以可以从这里设置自定义不重复的快捷键。我这里用的shiftaltG用来生成log 我用的是显示第多少行和路径名 效果&#xff1a; 还有其他的…

Atlas基于云器Lakehouse升级数据平台,实现业务效率与平台稳定性的双重提升

导读 Atlas 是一家富有创新精神的新加坡旅游科技初创公司&#xff0c;由连续创业企业家 Mary 及其团队于 2019 年底成立。公司利用互联网技术高效聚合和分发全球廉价航空公司的特价机票&#xff0c;服务于全球旅游业生态系统。技术部门需要与包括航空公司、在线旅行社&#xf…

深度神经网络——语音识别技术的探索与应用

概述 论文地址&#xff1a;https://arxiv.org/pdf/2402.19443.pdf 使用深度学习的语音识别技术已取得重大进展。这使得语音识别系统更加准确。然而&#xff0c;这项技术非常复杂&#xff0c;很难理解哪些信息用于何处。因此&#xff0c;本文提出了一种识别语音识别系统中哪些信…

pycharm基本使用(常用快捷键)

0.下载 pycharm官网下载 选择合适的版本&#xff0c;本文以2024.1为例 1.简单应用 常用快捷键 ctrlD 复制当前行 ctrlY 删除当前行 ctrlX 剪切当前行&#xff08;可用作删除&#xff0c;更顺手&#xff09; shift↑ 选中多行ctrlshiftF10 运行 shiftF9 调试ctrl/ 注释当前…

土壤墒情监测站

TH-TS400随着全球气候变化的加剧&#xff0c;干旱成为影响农业生产的重要因素之一。在我国广大农田中&#xff0c;干旱现象时有发生&#xff0c;严重制约了农作物的正常生长和产量的稳定。为了有效应对这一问题&#xff0c;土壤墒情监测站应运而生&#xff0c;成为农田土地干旱…

C# WPF入门学习番外篇(二) —— C# WPF使用数据库创建注册登录界面

C# WPF入门学习番外篇&#xff08;二&#xff09; —— C# WPF使用数据库创建注册登录界面 在这篇番外篇博客中&#xff0c;我们将介绍如何在C# WPF应用程序中使用数据库来创建一个简单的注册和登录界面。通过本教程&#xff0c;你将学习到如何在WPF中与数据库进行交互&#xf…

车载网络安全指南 概述(一)

返回总目录->返回总目录<- 目录 前言 参考文档 术语 前言 汽车电子系统网络安全指南给出汽车电子系统网络安全活动框架,以及在此框架下的汽车电子系统网络安全活动、组织管理和支持保障等方面的建议。 汽车电子系统网络安全指南适用于指导整车厂、零部件供应商、软…

Rust基础学习-ModulesPackage

在Rust中&#xff0c;模块有助于将程序分割成逻辑单元&#xff0c;以提高可读性和组织性。一旦程序变得更大&#xff0c;将其拆分为多个文件或命名空间非常重要。 模块有助于构建我们的程序。模块是项目的集合&#xff1a;包括函数、结构体甚至其他模块。 Module 定义模块 在…

手撕设计模式——计划生育之单例模式

1.业务需求 ​ 大家好&#xff0c;我是菠菜啊。80、90后还记得计划生育这个国策吗&#xff1f;估计同龄的小伙伴们&#xff0c;小时候常常被”只生一个好“”少生、优生“等宣传标语洗脑&#xff0c;如今国家已经放开并鼓励生育了。话说回来&#xff0c;现实生活中有计划生育&…

SqlSugar使用DbFirst对象根据数据库表结构创建实体类-C#

本文所述开发环境&#xff1a;.C#、NET8、Visual Studio2022 1. 在项目中安装SqlSugar 在Visual Studio2022中新建一个 C# 的控制台应用程序&#xff0c;框架选择 .Net8。新建后如下图所示&#xff1a; 然后打开NuGet程序包管理器 搜索 SqlSugarCore 并安装 安装后在解决方案…

资源分享—2021版市级制图规范符号库

汇总整理超图平台软件相关的各类资源&#xff08;包括但不限于符号库、地图模板、地理处理模型等&#xff09;&#xff0c;助力项目的高效制图、提高数据生产效率等业务。 本次分享新版国土空间规划【2021版市级制图规范符号库】&#xff0c;提供SuperMap格式符号库下载。 1.市…

数据结构的队列,链表,栈的基础操作

1&#xff1a;队列 #include <stdio.h>#include <stdlib.h>#include "./02队列.h"/** function: 创建一个空的队列* param [ in] * param [out] * return */Sequeue* xinduilie(){Sequeue* sq (Sequeue*)malloc(sizeof(Sequeue)); if(N…

Java 反射机制 -- Java 语言反射的概述、核心类与高级应用

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 010 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…

镜像拉取失败:[ERROR] Failed to pull docker image

问题描述 执行 bash docker/scripts/dev_start.sh 命令提示错误&#xff1a; permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.45/images/create?fromImageregistry.b…

在Lua解释器中注册自定义函数

本文目录 1、引言2、函数注册2.1注册原理 2.2 注册函数 3、实操3.1 编写注册函数3.2编写测试代码 4、结论 文章对应视频教程&#xff1a; 暂无&#xff0c;可以关注我的B站账号等待更新。 点击图片或链接访问我的B站主页~~~ 1、引言 在之前的博客中&#xff0c;已经介绍了如何…

JAVA小知识17:数组,从0基础到掌握

数组&#xff0c;无论在哪种编程语言当中都是最基础&#xff0c;最广泛使用的一种线性表数据结构&#xff0c;这篇文章将从多个角度来从浅入深的讲述数组。 本文讲述了数组的概念&#xff0c;定义&#xff0c;初始化方法以及如何遍历数组&#xff0c;如何赋值&#xff0c;关于数…