2

作为我的核弹项目的一部分,我想跟踪我的镜头并将 CG 元素添加到其中。为此,我对素材进行了不失真处理并将其写入磁盘以加快处理速度。然而,当我试图重新扭曲书面素材(如附图所示)时,它并没有给我原始素材。我发现Reformat5andReformat7并没有给我相同的边界框尺寸,即使两个节点是相同的。

在此处输入图像描述

我的原始素材大小是 1920*1080。不失真后变成1928*1085。

因此,我放置了一个Reformat4尺寸为 1928*1085 的节点并将其写入磁盘。在左侧,我再次放置重新格式化节点,将未失真的素材调整回 1920*1080,并保留大小为 1928*1085 的边界框,以便执行镜头失真以恢复我的原始素材。

它在左侧工作正常,但如果我在我的书面素材上做同样的事情,边界框尺寸就不一样了。

Reformat7给出大小为 1924*1083 而不是 1928*1085 的边界框。我在这里想念什么?我在网上搜索,但找不到任何解决方案。请对这个问题有所了解。

我的核弹脚本如下:

set cut_paste_input [stack 0]
version 10.0 v3
push $cut_paste_input
LensDistortion {
 serializeKnob ""
 serialiseKnob "22 serialization::archive 9 0 0 0 0 0 0 0 0 0 0 0 0"
 distortion1 -0.007498324849
 distortion2 0.0008674863493
 distortionCenter {-0.002916968195 -0.001372990897}
 invertDistortion true
 cardScale {1.006676197 1.006676197 1}
 a 0.001508030226
 b -0.006750627421
 c -0.002457624534
 analysisStart 1
 analysisStop 329
 name LensDistortion2
 selected true
 xpos -451
 ypos 651
}
Reformat {
 format "1928 1085 0 0 1928 1085 1 undistortedFormat2"
 resize none
 name Reformat4
 selected true
 xpos -451
 ypos 684
}
set N6eafc00 [stack 0]
Reformat {
 resize none
 pbb true
 name Reformat5
 selected true
 xpos -451
 ypos 745
}
LensDistortion {
 serializeKnob ""
 serialiseKnob "22 serialization::archive 9 0 0 0 0 0 0 0 0 0 0 0 0"
 distortion1 -0.007498324849
 distortion2 0.0008674863493
 distortionCenter {-0.002916968195 -0.001372990897}
 cardScale {0.9934444427 0.9934444427 1}
 a -0.0004114751064
 b 0.004895505495
 c 0.002436506096
 analysisStart 1
 analysisStop 329
 name LensDistortion3
 selected true
 xpos -451
 ypos 782
}
push $N6eafc00
Write {
 file F:/Assignments/Nuke/CGComp/footages/undistortedFootage1080p/undistortedFootage1080p.####.exr
 file_type exr
 name Write7
 selected true
 xpos -269
 ypos 684
}
Reformat {
 resize none
 pbb true
 name Reformat7
 selected true
 xpos -269
 ypos 747
}
LensDistortion {
 serializeKnob ""
 serialiseKnob "22 serialization::archive 9 0 0 0 0 0 0 0 0 0 0 0 0"
 distortion1 -0.007498324849
 distortion2 0.0008674863493
 distortionCenter {-0.002916968195 -0.001372990897}
 cardScale {0.9934444427 0.9934444427 1}
 a -0.0004114751064
 b 0.004895505495
 c 0.002436506096
 analysisStart 1
 analysisStop 329
 name LensDistortion5
 selected true
 xpos -269
 ypos 783
}
4

1 回答 1

2

您需要使用CopyBBox节点来解决您的问题。此 Python 命令创建连接CopyBBox节点:

import nuke
nuke.createNode("CopyBBox")

或者您可以使用以下命令创建与其他节点断开连接的节点:

nuke.nodes.CopyBBox()

CopyBBox将边界框从 A 输入复制到 B 流。边界框定义了 Nuke 认为具有有效图像数据的帧区域。边界框越大,Nuke 处理和渲染图像所需的时间就越长。

一些 NUKE 操作,例如 a MergeBlurLensDistortion会导致边界框区域的扩大或缩小,因为 NUKE 不知道额外区域将是黑色还是其他恒定颜色。通常,您可以通过将边界框从输入之一复制到结果图像来解决此问题,从而切断额外区域。

在此处输入图像描述

nuke.nodes.Transform(scale=1.005, filter="Mitchell")

如果您在右边距有“拉伸像素效果”,请scale=1.005在节点中使用参数Transform(就在您的LensDistortion5节点之后)。另外,不要忘记使用过滤算法。

在此处输入图像描述

于 2017-10-07T13:31:43.233 回答