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

news2024/11/25 2:55:12

  一、关于环境

安装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)​,欢迎大家去给原作者点赞)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态javaweb 建立-准备阶段

一、实验内容: 1.定义一个inputjsp页面接收数据输入的长和宽。 2.创建一个javaBean,包含长、宽和面积三个成员变量,分别有对应的get方法和set方法。 3.定义一个业务模型calculate.java,用来计算矩形的面积。 4.定义一个…

HTTP3版本和实现验证

HTTP3协议基于Google的 QUIC 协议,由互联网工程任务组(IETF)来制定。目录还是草案,已经进行到第33版。 HTTP3 是基于 QUIC 协议的 http。传输层是UDPQUIC,应用层仍是HTTP,即request/respose, request里也仍…

5G消息 x 文旅 | 一站式智慧文旅解决方案

5G消息 x 文旅 | 一站式智慧文旅解决方案 文旅 x 5G 消息将进一步强化资源整合,满足游客服务需求、企业营销需求、政府管理需求,推进文化旅游项目的智慧化、数字化,增强传播力、竞争力和可持续性。5G 消息的“原生入口”、“超强呈现”、“智…

基于机器学习和奇异值分解SVD的电池剩余使用寿命预测(Python)

采用k-最近邻KNN和随机森林算法建立预测模型。 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC # Support Vector Classifier from sklearn.preprocessing import StandardScaler from sklearn.metrics import accu…

LabVIEW开发指针式压力仪表图像识别

系统利用LabVIEW编程实现对指针式压力仪表的读取,通过相机、光源、固定支架等硬件捕捉仪表图像,并通过图像识别技术解析压力值。系统分为两个阶段:第一阶段固定相机更换仪表,第二阶段移动相机识别多个固定仪表。本文介绍硬件选择、…

LeetCode | 21.合并两个有序链表

这道题也是很经典的一道题了,408的算法题中也考过这个思想,因为两个链表已是升序,合并只需要两个指针,分别指向两个表的表头,分别比较两个指针所指向的结点的val,小的就插入到目标链表里面,再后…

【StableDiffusion】Lora 底层原理,低秩适配,Lora 如何与 checkpoint 联合发挥作用

鸣谢UP主:是花子呀 本篇博客参考视频:https://www.bilibili.com/video/BV17i421X7q7/?spm_id_from333.880.my_history.page.click&vd_source38d6ea3466db371e6c07c24eed03219b Lora 是个啥?Lora 的 缩写 Lora:Low Rank Ada…

美式动漫效果PS图层样式

对于追求独特艺术风格和创意的摄影师和设计师来说,一款能够轻松将照片转化为卡通效果的Photoshop模板无疑是一个强大的工具。这款由专业团队精心打造的模板,特别注重于美式动漫风格的呈现,让您的照片瞬间拥有生动且充满魅力的动漫色彩。 模板…

Adobe Photoshop cc快速抠图与精致抠图方法

一、背景 Photoshop cc绝对是最好用的抠图and修图软件,但是即使最简单的抠图,每次用时都忘记怎么做,然后再去B站搜,非常费时,下面记录一下抠图过程,方便查阅。 一、Adobe Photoshop快速抠图 选择——主体…

遥控玩具车电机驱动应用中的双H桥驱动芯片

遥控玩具车的基本工作原理是通过无线电遥控器发送信号,这些信号被玩具车内的接收器接收并解码,从而控制玩具车的运行。根据车身外型的不同,可以分为:普通的私家房车、越野车、货柜车、翻斗车等等。遥控器的操作,如前进…

实验12 路由重分布

实验12 路由重分布 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 在大型网络的组建过程中,隶属不同机构的网络部分往往会根据自身的实际情况来选用路由协议。例如,有些网络规模很小,为了管理简单&…

你好,Jetpack Compose

文章目录 为什么选 Jetpack Compose先决条件新建项目新建虚拟设备运行项目 为什么选 Jetpack Compose Jetpack Compose 是 Android 开发最新的、现代化的 UI 框架开发者几乎只需要使用 Kotlin 一门语言即可完成 App 开发(Java 是基础,有些源码是 Java 写…

SARscape5.6.2干涉叠加处理效率提升

SARscape5.6.2于2022年5月正式发布,包含若干更新和优化。干涉叠加处理模块在处理速度方面持续提升,表现在:PS干涉工作流处理、第一次反演和第二次反演优化,速度提升;SBAS处理干涉图生成和干涉图优化速度提升&#xff0…

《Windows API每日一练》3.3 更好效果的滚动条

本节讲述滚动条的复杂使用方法,以便达到更好的效果。Windows操作系统提供了两套机制,一套机制是使用默认的对象属性进行简单的操作,并提供简单便捷的API接口函数。另一套机制是用户可以自定义对象属性,实现自己想要的效果。本节我…

nodejs——原型链污染

一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象的概念,所以我们要先明确一点: JavaScript中一切引用类型都是对象,对象就是属性的集合。 Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。 也就…

解决:selenium运行时driver初始化失败 DevToolsActivePort file doesn‘t exist的问题

解决:selenium运行时driver初始化失败 DevToolsActivePort file doesn‘t exist的问题 DevToolsActivePort file doesnt exist报错信息:![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b3f8acc1c47d45e3912575896e421567.png)现象&#xff1…

细说MCU修改回调函数调用模式的方法

目录 1、硬件及工程 2、实现方法 (1)修改while(1)中的代码: (2)修改2 (3)修改3 (4)修改4 (5)修改5 3、下载并运行 在本文作者的文章中&a…

启动mysql 3.5时出现 MySql 服务正在启动 . MySql 服务无法启动。

有可能是端口冲突 netstat -ano | findstr :3306运行这段代码出现类似: 可以看到端口 3306 已经被进程 ID 为 6284 的进程占用。为了启动新的 MySQL 服务,我们需要停止这个进程或更改新服务的端口: 1、终止进程 taskkill /PID 6284 /F2、确…

ESP32 IDF ADF 加入音频

需要把mp3制作成音频bin 用ADF自带工具 果用户需要生成自己的 audio-esp.bin,则需要执行 mk_audio_bin.py 脚本(位于 $ADF_PATH/tools/audio_tone/mk_audio_tone.py),并且指定相关文件的路径。 源 MP3 文件在 tone_mp3_folder …

图像到3D模型的革命性转换

在数字艺术、虚拟现实和增强现实等领域,从二维图像生成三维模型一直是一个挑战。然而,随着技术的不断进步,我们迎来了一种全新的解决方案,它能够从单张正交RGB图像中快速、高效地生成具有极高保真纹理和精细几何细节的3D网格模型。 1、定位与意义: 该解决方案是一种前沿…