Pycharm配置USD开发环境

目的是在Pycharm中,通过代码创建或编辑usda文件。

依赖安装

  • Micrrosoft Visual Studio(2022以上版本)
  • CMake
  • Python3
    • PyOpenGL pip3 install PyOpenGL PyOpenGL_accelerate
    • PySide2 or PySide6 pip3 install PySide2

下载源码

Github项目地址 https://github.com/PixarAnimationStudios/OpenUSD

1
git clone https://github.com/PixarAnimationStudios/USD

开始安装

打开终端

一切准备就绪,准备安装。
在此之前我使用了代理,因为安装过程中会从github下载一些依赖。
不添加代理会出现网络问题,导致报错退出。

1
2
3
# 根据自己的代理端口配置
set http_proxy=http://127.0.0.1:1090
set https_proxy=http://127.0.0.1:1090

安装命令,输入

1
2
# cdclone下来的仓库目录
python USD\build_scripts\build_usd.py "C:\USD"

等待安装过程(我的破笔记本大概20分钟,CPU吃满)

编译完成后会看到

最后就是按照它提示的,配置pycharm环境。
配置PYTHONPATH

然后在系统环境变量配置PATH。(有时需要重启计算机才能生效)

image.png

测试代码

在Pycharm中,运行下面代码。

1
2
3
4
5
from pxr import Usd, UsdGeom
stage = Usd.Stage.CreateNew(r'D:\HelloWorld.usda')
xformPrim = UsdGeom.Xform.Define(stage, '/hello')
spherePrim = UsdGeom.Sphere.Define(stage, '/hello/world')
stage.GetRootLayer().Save()

在D盘能看到创建的usda文件,则运行正确。

image.png

进行一些修改操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from pxr import Usd, Vt, UsdGeom  

# 1.打开stage,并为prims定义变量
stage = Usd.Stage.Open(r"D:\HelloWorld.usda")
xform = stage.GetPrimAtPath('/hello')
sphere = stage.GetPrimAtPath('/hello/world')

# 获取xfrom有哪些属性
print(xform.GetPropertyNames())

# 获取sphere有哪些属性
print(sphere.GetPropertyNames())

# 获取sphere的 extent(范围) 属性
# Get() 函数可以添加参数,比如时间
extentAttr = sphere.GetAttribute('extent')
print(extentAttr.Get())

# 设置球的半径为2
radiusAttr = sphere.GetAttribute('radius')
radiusAttr.Set(2)

# 由于物体几何范围大小不会随之自动更新,这里手动给它更新
extentAttr.Set(extentAttr.Get() * 2)

# 修改颜色
sphereSchema = UsdGeom.Sphere(sphere)
color = sphereSchema.GetDisplayColorAttr()
color.Set([(0, 0, 1)])

# 保存编辑
stage.GetRootLayer().Save()

测试usdview

打开终端

1
2
3
4
5
# 为终端添加 PYTHONPATH 环境变量
set PYTHONPATH=C:\USD\lib\python

# 打开usda文件
usdview D:\HelloWorld.usda

image.png

可以使用快捷键i打开Python交互界面(或使用菜单栏Window - Interpreter)。

该解释器包含一个内置的API对象usdviewApi,和一些有用的变量。
比如usdviewApi.prim,代表当前所选的第一个prim。

选择球体,然后执行下面的命令:

1
2
3
4
5
6
>>> usdviewApi.prim
Usd.Prim(</hello/world>)
>>> usdviewApi.prim.GetTypeName()
'Sphere'
>>> usdviewApi.prim.GetAttribute('radius').Get()
1.0

以上就是如何在Pycharm配置usd开发环境的内容,参考官方文档:
https://openusd.org/release/tut_usd_tutorials.html