USDのポイントインスタンサ
ipynbFile usd_pointinstancer__USDのポイントインスタンサ.ipynb
In [10]:
| from pxr import Usd,UsdGeom
|
In [7]:
| stage = Usd.Stage.Open("./instance_sample.usda")
|
In [13]:
| prim = stage.GetPrimAtPath("/addpointinstancer1")
# インスタンサを取得
pointInstancer = UsdGeom.PointInstancer(prim)
# ポイント情報を取得
positions = pointInstancer.GetPositionsAttr().Get()
protoIndices = pointInstancer.GetProtoIndicesAttr().Get()
# Prototype(PointInstancerで配置するオブジェクト)のSdfPathを取得
protoPaths = pointInstancer.GetPrototypesRel().GetTargets()
|
In [41]:
1
2
3
4
5
6
7
8
9
10
11
12
13 | import json
# PointInstancerの情報を、任意の JSON のフォーマットに変換する
data = {
"prototype":[{"fullPath":str(x),'name':str(x).split("/")[-1]} for x in protoPaths],
"instance":[]
}
for pos,index in zip(positions,protoIndices):
data["instance"].append({"pos":list(pos),"index":index})
with open("sample.json",'w') as f:
json.dump(data,f,indent=2)
|