首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python创建的Katana节点没有正确更新

用Python创建的Katana节点没有正确更新
EN

Stack Overflow用户
提问于 2022-06-13 04:55:33
回答 1查看 108关注 0票数 0

Katana/Python中的此代码在用户选择的任何节点周围创建背景并调整大小:

代码语言:javascript
复制
nodeGraphTab = UI4.App.Tabs.FindTopTab('Node Graph')
nodeGraphTab._NodegraphPanel__fitBackdropNode()

如果要手动创建节点(或多个节点),请选择节点,然后运行该代码,它将创建如下所示:

但是,如果我以编程方式制作一个节点并以编程方式选择它,我的代码只创建背景,但无法调整大小和移动它。这就好像节点的创建需要在某种程度上“烘焙”它才能被认可。

我的代码:

代码语言:javascript
复制
import NodegraphAPI

# Get the root node
rootNode = NodegraphAPI.GetRootNode()

#Create a Node
node = NodegraphAPI.CreateNode("Alembic_In", rootNode)

#Select the node in the viewport
NodegraphAPI.SetNodeSelected(node, True)

nodeGraphTab = UI4.App.Tabs.FindTopTab('Node Graph')
nodeGraphTab._NodegraphPanel__fitBackdropNode()

上面的代码产生了这个错误的结果:

可以在Katana中尝试这段代码并让我知道我做错了什么吗?

我在用Katana 5.0v1

EN

回答 1

Stack Overflow用户

发布于 2022-06-13 11:36:10

我从克里斯蒂安那里得到了关于铸造论坛的答案:

创建节点时,它将保持不成形状态,直到必须第一次绘制它,这仅在事件循环的下一次迭代中发生。NodegraphWidget.fitBackdropNode()方法依赖于节点形状来计算背景节点的范围。如果节点形状不可用,将创建一个微小的背景节点,正如您的片段所演示的那样。

为了确保及时创建节点形状,可以使用Utils.EventModule.ProcessEvents()请求事件处理。区块报价

代码语言:javascript
复制
> import NodegraphAPI
> 
> #Get the root node rootNode = NodegraphAPI.GetRootNode()
> 
> #Create a Node node = NodegraphAPI.CreateNode("Alembic_In", rootNode)
> 
> #Select the node in the viewport NodegraphAPI.SetNodeSelected(node, True)
> 
> Utils.EventModule.ProcessEvents()  # Process events (node_create
> events in particular) to ensure that the node's shape is created
> 
> nodeGraphTab = UI4.App.Tabs.FindTopTab('Node Graph')
> nodeGraphTab.getNodeGraphWidget().fitBackdropNode()

还请注意,可以使用NodegraphWidget.fitBackdropNode()代替_NodegraphPanel__fitBackdropNode() (伪私有方法)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72597913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档