创建支持服务单
关注

Q100358:如何使用Geolib3客户端通过Python查询场景图位置的属性

摘要

本文解释了如何使用Python生成和查询场景图数据,如位置属性。

更多信息

用户可能希望编写用于查询场景图位置上的属性值的Python脚本。为了实现这一目标,必须首先烹饪场景。厨师表示对场景图的评估,这意味着必须评估节点图以计算场景数据。如果未执行此步骤,则属性数据不存在且无法查询。

这可以通过创建Geolib3客户端来实现,该客户端可以请求生成场景数据。 请参阅以下示例 (摘自 http://tomcowland.com/katana/archives/748 ):

# We first need to get a hold of the runtime the UI is using
runtime = FnGeolib.GetRegisteredRuntimeInstance()

# Transactions are used to batch together actions
txn = runtime.createTransaction()

# Make a client, and attach it to an Op in the tree, we get the Op from a reference to a Node.
client = txn.createClient()
op = Nodes3DAPI.GetOp(txn, NodegraphAPI.GetNode('Render'))
txn.setClientOp(client, op)

# Commit the transaction to the runtime, if we don't the client will exist, but won't yet be pointing to an Op
runtime.commit(txn)

然后,您可以使用客户端来烹饪位置并检查其属性值,例如获取 摄像机位置 centerOfInterest 属性:

location = client.cookLocation('/root/world/cam/camera')
attrs = location.getAttrs()
COI = attrs.getChildByName('geometry.centerOfInterest')
print COI.getValue()

有关Geolib3和Runtime的更多信息,请参阅 Katana在线帮助中的Geolib 3核心概念部分 以及上面引用的博客文章。

这篇文章有帮助吗?
/

We're sorry to hear that!

Please tell us why.
5 人中有 4 人觉得有帮助

评论