PyCharm+Blender开发配置指南

最近需要写比较多的 blender 脚本,奈何在 mac 下没有完整的 pip 安装包,导致在 pycharm 下代码补全总是不行,虽然有 copilot 辅助也能基本搞定,但总是难以了解到很多细节。于是全网搜了下,整理出来下面的方法,以作记录。

>> Read More

尝试解析 uasset 文件

最近需要解析 UnrealEngine 中的 uasset 文件,希望从中解析得到一些 meta 信息,如 object name,package path,UE version 等信息。unreal 的 python 接口并不能很准确获取到这些信息,且使用有较多限制,如它需要依赖一个完整的项目环境。最关键的是,当我们拿到一个孤立的 uasset 文件时,我们甚至不知道应该把它放置到项目中的哪个位置。而 UE Editor 中,一旦我们把 uasset 文件错误放置,若有其他 uasset 引用了它,轻则闪退,重则卡死。而即使我们位置摆放对了,它所依赖的 reference 若不存在,那么它的载入也会成为问题,比如它是一个 StaticMesh,那它所依赖的 Material 或 MaterialInstanceConstant 缺失时,会默认赋予它一个灰模材质,这并非我们希望的。

这里的解决办法是直接解析 uasset 文件的二进制内容,尝试从中提取一些需要的信息。

具体实现代码请见:https://github.com/ay27/uasset-parser-py

>> Read More

实现一个数学表达式的解析执行器

最近我们在一个项目中实现了一个小型解释器。这个解释器实现了一种简洁的表达式语言,支持常见的数学函数、向量运算和类 jsonpath 语法。整个实现由 Lexer、Parser 和 Executor 组合而成,共同实现了一个符合 LL(1) 文法的表达式语言。

>> Read More