搭建 blender python api 的外部开发环境

以下都是为了不直接在 blender 的 script ide 里写脚本而做,直接在 blender 里写的话就没什么参考意义了。

首先是2个blender的设置选项,建议开启,会比较方便。

开发选项启用后,你在一些菜单上右键的话,会多出来 在线Python参考,复制Python命令 这种按钮出来。

Python工具提示启用后,则很多操作会把它对应的 Python api 直接显示给你。

都是可以加快我们开发速度的功能。

然后是 IDE 的选择,这个比较自由,vscode, PyCharm 看你高兴。

python 环境管理,建议使用 Miniconda,可以看我之前的文章。

首先,blender 的 python api 包叫 bpy,这个玩意很特殊,它要求你的python版本在 3.7 ~ 3.8 之间,也是没谁了,太奇葩了,所以我们需要用 conda 创建一个 python 3.7 的环境,专门用来给 blender 用。

一开始我是尝试直接用 pip 安装 bpy 的,结果遇到了 

LookupError: unknown encoding: future_fstrings

这种错误,百度一番发现可以用下面这个方式解决。

python -m pip install --upgrade pip wheel future-fstrings

结果后来发现,我和 bpy 这个包死磕就是在浪费时间,因为怎么折腾,它在 IDE 里都是报错的状态,这就很叫人头痛了。

然后我就发现根本不用装 bpy 这个包,有一个包叫 fake-bpy-module ,安装和你安装的 blender 相匹配版本的包,在 ide 中代码提示就不会报错了。这个包就是专门用来解决你在外部 ide 中开发 blender python api 用的,所以记住,千万不要跟 bpy 这个包死磕。

其实到这一步,已经够我们开发 blender 脚本的了,如果要执行的话,打开 blender,切到 Scripting 里,打开我们编写的 .py 文件,然后点运行就可以了。

但这样我们还需要打开 blender ,但有时我们是不想打开 blender 的。

还有一个办法是通过 subprocess 包在后台来执行脚本。

import subprocess


def run_blender_script(blender_path, internal_script_path, blend_file_path):
    try:
        # 在Blender外部运行,打开指定文件并执行脚本
        subprocess.run([blender_path, blend_file_path, '-b', '-P', internal_script_path], check=True)
    except subprocess.CalledProcessError as ex:
        print(f"Error running Blender: {ex}")


if __name__ == '__main__':
    blender_path = 'blender.exe的安装位置,不要加.exe后缀'
    blender_file_path = '创建1个单独的 .blend 文件,做为我们的工作场景'
    internal_script_path = '我们编写的要在 blender 中执行的脚本'

    run_blender_script(blender_path, internal_script_path, blender_file_path)

顺便说个题外话,如果想从 blender 中导出 unity 适用的 .fbx 文件,这几个选项很重要。

首先是场景属性中,确保单位是公制的1米(和unity的一样)。

变换里,z向前,y向上,还有应用变换一定要勾上,不勾不会改的。

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

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

相关文章

adobe软件提示This non-genuine Adobe app will be disabled soon【软件版本】

因为电脑上级路由器装了小飞机,导致本机电脑ps等adobe的系列软件出现了 This non-genuine Adobe app will be disabled soon,烦人的狠,之前有写过一篇通过更改host的教程,现在已经失效了,今天为大家分享一个用软件来屏…

深度学习:Pytorch安装的torch与torchvision的cuda版本冲突问题与解决历程记录

今天不小心将conda环境中的一个pytorch环境中的torch包给搞混了,将其更新了一下,发生了一些问题: 当时运行了一下这个代码: pip install torchvision --upgrade 导致了环境中包的混乱: 只能说欲哭无泪,当…

.NET Core WebAPI中封装Swagger配置

一、创建相关文件 创建一个Utility/SwaggerExt文件夹&#xff0c;添加一个类 二、在Program中找到Swagger相关配置信息 三、添加方法&#xff0c;在Program中调用 在SwaggerExt类中添加方法&#xff0c;将相关配置添写入 /// <summary> /// swagger配置 /// </sum…

Docker 第十四章 : Docker 三剑客之 Machine

第十四章 : Docker 三剑客之 Machine 本章知识点: Docker Machine 是 Docker 三剑客之一,它是一个工具,允许用户在本地或远程机器上创建 Docker 主机。它简化了 Docker 环境的设置,特别是在不同的操作系统和云平台上。通过 Docker Machine,用户可以轻松地在虚拟机或物理…

计算机网络——多媒体网络

前些天发现了一个巨牛的人工智能学习网站 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; 跳转到网站 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络学习过程中的学习笔记与心得&#xff0c;在参考相关教材&#xff0c;网络搜素…

c语言中的模拟多态性

在C语言中模拟多态性 多态性是面向对象编程中的一个核心概念&#xff0c;它允许我们通过一个共同的接口来操作不同的数据类型。虽然C语言是一种过程式语言&#xff0c;本身不直接支持面向对象的特性&#xff0c;如继承、封装和多态&#xff0c;但我们可以通过一些技巧来模拟这些…

1036 跟奥巴马一起编程 (15)

美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启动&#xff0c;奥巴马编写了很简单的计算机代码&#xff1a;在屏幕上画一个正方形。现在…

H5 粒子特效引导页源码

H5 粒子特效引导页源码 源码介绍&#xff1a;一款粒子特效引导页源码&#xff0c;带彩色文字和4个按钮。 下载地址&#xff1a; https://www.changyouzuhao.cn/10222.html

Word docx文件重命名为zip文件,解压后直接查看和编辑

一个不知道算不算冷的知识[doge]&#xff1a; docx格式的文件本质上是一个ZIP文件 当把一个.docx文件重命名为.zip文件并解压后&#xff0c;你会发现里面包含了一些XML文件和媒体文件&#xff0c;它们共同构成了Word文档的内容和格式。 例如&#xff0c;word/document.xml文件…

fgets的使用方法详解

fgets的使用 文章目录 fgets的使用前言&#xff08;吹水&#xff0c;不看也罢&#xff09;fgets 的基本语法使用示例fgets() 对输入的处理的特点gets() 与 fgets() 的主要区别 总结 前言&#xff08;吹水&#xff0c;不看也罢&#xff09; 鼠鼠今天在B站上大学的时候&#xff…

【阅读笔记】空域保边降噪《Side Window Filtering》

1、保边滤波背景 保边滤波器的代表包括双边滤波、引导滤波&#xff0c;但是这类滤波器有一个问题&#xff0c;它们均将待处理的像素点放在了方形滤波窗口的中心。但如果待处理的像素位于图像纹理或者边缘&#xff0c;方形滤波核卷积的处理结果会导致这个边缘变模糊。 基于这个…

gorm day9(结)

gorm day9 实体关联gorm会话 实体关联 自动创建、更新 在创建、更新数据时&#xff0c;GORM会通过Upsert自动保存关联及其引用记录。 user : User{Name: "jinzhu",BillingAddress: Address{Address1: "Billing Address - Address 1"},Ship…

代码随想录 Leetcode135. 分发糖果

题目&#xff1a; 代码(首刷看解析 2024年2月15日&#xff09;&#xff1a; class Solution { public:int candy(vector<int>& ratings) {vector<int> left(ratings.size(), 1);vector<int> right(ratings.size(), 1);for (int i 1; i < ratings.si…

html的表格标签

html的表格标签 table标签:表示整个表格tr:表示表格的一行td:表示一个单元格th:表示表头单元格.会居中加粗thead:表格的头部区域 (注意和th区分,范围是比th要大的).tbody:表格得到主体区域. table包含tr , tr包含td或者th. 表格标签有一些属性&#xff0c;可以用于设置大小边…

《剑指 Offer》专项突破版 - 面试题 47 : 二叉树剪枝(C++ 实现)

题目链接&#xff1a;LCR 047. 二叉树剪枝 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 一棵二叉树的所有节点的值要么是 0 要么是 1&#xff0c;请剪除该二叉树中所有节点的值全都是 0 的子树。例如&#xff0c;在剪除下图 (a) 中二叉树中所有节点值都为 0 的…

C++集群聊天服务器 muduo+nginx+redis+mysql数据库连接池 笔记 (下)

C集群聊天服务器 网络模块业务模块CMake构建项目 笔记 &#xff08;上&#xff09;-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135991635?spm1001.2014.3001.5501C集群聊天服务器 数据模块业务模块CMake构建项目 笔记 &#xff08;上&#xff09;-CSDN博…

非常详细!操作系统【IO核心子系统】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;OS从基础到进阶 &#x1f3c6;&#x1f3c6;本文完整PDF源文件请翻阅至文章底部下载。&#x1f3c6;&#x1f3c6; 1 I/O核心子系统——概述1.1 核心子系统要完成的功能1.1.1 假脱机技术1…

Spring Task定时任务

目录 1、介绍 2、cron表达式 2.1、在线生成器 2.2、通配符 3、代码示例 3.1、使用步骤 3.2、 代码开发 3.3、测试 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发…

HTTP基本概念-HTTP缓存技术

大家好我是苏麟 , 今天说说HTTP缓存技术 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP缓存技术 HTTP 缓存有哪些实现方式? 对于一些具有重复性的 HTTP 请求&#xff0c;比如每次请求得到的数据都一样的&#xff0c;我们可以把这对「请求-响…