PointCloudGenerator

使用PointCloudGenerator节点(NukeXNuke Studio仅),您可以根据由CameraTracker并进一步使用密集点云来创建2D素材的3D网格。密集点云是3D建模和在场景中定位对象的有用起点。

注意:  分析必须在NukeX,但结果可用于Nuke

输入和控制

连接类型

连接名称

功能

输入值

相机

您打算从中生成密集点云的场景的摄像机轨迹。

面具

用作遮罩的可选图像。默认情况下,点云仅限于蒙版的非黑色区域。

首先,遮罩输入在节点的右侧显示为三角形,但是当您拖动它时,它将变成标记为遮罩的箭头。如果看不到遮罩输入,请确保mask控件被禁用或设置为none

资源

从中获取摄像机信息的源素材。

Control (UI)

Knob (Scripting)

Default Value

功能

PointCloudGenerator Tab

display

display

solid

调整点的显示特性。这些设置不会影响场景的渲染输出。这些仅用于3D Viewer中的显示目的。

off -隐藏点。

wireframe -仅显示点的轮廓。

solid -用纯色显示所有点。

solid+wireframe -将点显示为纯色并包括其顶点。

textured -仅显示表面纹理。

textured+wireframe -显示线框和表面纹理。

selectable

selectable

enabled

启用后,您可以在查看器中正常选择。禁用时,无法选择或更改点。

render

render_mode

solid

设置点的渲染方式。此控件独立于display选择,但具有相同的设置。

cast shadow

cast_shadow

enabled

启用后,对象可以投射阴影。

receive shadow

receive_shadow

enabled

启用此选项并将材质着色器添加到对象后,该对象可以接收阴影。

Principal View

principalView

left

设置分析轨道的主要视图,以及Mask输入已应用。相对于此计算辅助摄像机Principal View相机。

仅当您在自己的视图中设置了多个视图时,才会显示此控件Project Settings (通常,如果您正在处理立体项目)。

Ignore Mask

ignore

None

设置遮罩类型以在生成期间排除序列的区域:

None -所有素材都不会被忽略。

Source Alpha -使用源剪辑的Alpha通道定义要忽略的区域。

Source Inverted Alpha -使用源片段的反向Alpha通道定义要忽略的区域。

Mask Luminance -使用的亮度Mask输入以定义要忽略的区域。

Mask Inverted Luminance -使用反向亮度Mask输入以定义要忽略的区域。

Mask Alpha - 使用Mask输入Alpha通道以定义要忽略的区域。

Mask Inverted Alpha -使用倒置Mask输入Alpha通道以定义要忽略的区域。

Set Keyframes

Analyze Sequence

analyzeSequence

N/A

单击以自动分析序列并设置生成点云时要使用的必需关键帧。

注意:  选择了关键帧以提供足够大的相机基线以对点进行三角测量,但是您可以根据需要手动添加和删除关键帧。

Keyframes

keyframes

0

显示用于跟踪输入序列中的点的帧。显示了自动和手动关键帧。

Add

addKeyframe

N/A

单击以在当前帧处设置关键帧。

Delete

deleteKeyframe

N/A

单击以删除当前帧处的关键帧。

Frame Spacing

frameSpacing

15

设置单击时关键帧之间的间隔Add All。例如,默认值每15帧创建一个关键帧。

Add All

addAllKeyframes

N/A

单击以在整个序列中按由指定的时间间隔设置关键帧FrameSpacing控制。例如,对于具有30帧的序列,默认间隔值将创建3个关键帧。

Delete All

deleteKeyframes

N/A

单击以删除序列中的所有关键帧。

Calculated Accuracy

accuracy

0

当使用自动模式时,显示在当前帧计算的深度精度SetKeyframes方法。

精度等级可以帮助您在生成点云时选择帧范围-更高精度的帧会生成更清晰的点云。

Dense Tracking

Point Separation

pointSeparation

2

为密集点云中的点设置间隔值(以像素为单位)。减少间隔以创建更密集的点云,反之亦然。

Track Threshold

matchThreshold

0.5

设置相关阈值,在该阈值处轨迹终止。使用较高的阈值可以提高关键帧之间匹配点的准确性。

Track Points

track

N/A

单击以显示帧范围对话框,以确定哪些帧用于计算点云。使用标准Nuke标记,例如1-19、40-60、65-100。

还可以使用不同的帧范围选择将点分阶段添加到点云。采用CalculatedAccuracy确定最精确的生成帧。

Clear Points

clearPoints

N/A

单击以清除所有跟踪的点。

Post Filtering

Display rejected points

displayRejectedPoints

enabled

启用后,落在AngleDensityThresholds在3D查看器中突出显示。

禁用后,所有拒绝的点将从查看器中删除。

Angle Threshold

minTriAngle

1

设置用于对3D点进行三角剖分的最小角度的阈值(以度为单位)。具有大三角剖分的点更准确。将阈值设置为0可对所有点进行三角剖分。增加阈值以保留更准确的点。

根据经验,低于5度的任何物体都可能是错误的。

Density Threshold

densityThreshold

0

设置点的最小密度的阈值。将阈值设置为0以输出所有点,并增加阈值以突出显示孤立的点。

Delete Rejected Points

deleteRejected

N/A

单击以永久删除被AngleDensityThresholds

小费:  要清理点云,请尝试启用Output points per frameDisplay rejected points。然后,您可以调整Filtering阈值和不同帧处的删除点。

Output

Point Size

pointSize

2

设置3D查看器中显示的点的大小(以像素为单位)。

Output points per frame

outputPerFrame

disabled

启用后,查看器中仅显示在当前帧处生成的点。

禁用时,将显示所有跟踪帧中的点。

Groups Tab

Display groups in overlay

displayGroups

enabled

启用后,组颜色将在3D查看器中显示为叠加。

Output visible groups only

outputGroups

disabled

启用后,只有指定为组中一部分的点Groups标签显示在3D查看器中。

您可以使用以下方式标记点云Groups帮助可视化场景的不同部分。

Create Group

createGroup

N/A

单击以将当前顶点选择添加到新组。您也可以使用查看器右键单击菜单来创建,删除和修改组。

Delete Selected Group

deleteGroup

N/A

单击以删除所有选定的组,然后在点云中取消选择该组。

要删除点,请使用Vertex selection模式在3D查看器中,然后按delete键。

Groups

groups

groups

None

列出点云中的所有组,并允许您设置namecolorvisibility每组。

要创建组,请启用Vertexselection 3D查看器中的“模式”。然后,您可以选择点并使用右键单击菜单来创建新组或将所选点添加到现有组。

Bake Selected Groups

bakeGroups

N/A

单击以将选定的组烘焙到单独的烘焙点云。

Bake Selected Groups to Mesh

bakeMesh

N/A

单击以使用“泊松曲面重建”将选定的组转换为网格。

网格的创建基于SGP 2006论文,Michael Kazhdan,Matthew Bolitho和Hugues Hoppe撰写的Poisson Surface Reconstruction。原始的源代码和论文可以在下面找到http://www.cs.jhu.edu/~misha/Code/PoissonRecon/

Samples

samplesPerNode

1

使用浮点值指定用于计算网格点的最小采样点数。

对于无噪声的点云,可以使用1.0-5.0范围内的较低值。对于更多的噪声样本,在15.0-20.0范围内的较高值可以提供更平滑的网格。

Python Tab (These controls are for Python callbacks and can be used to have Python functions automatically called when various events happen in Nuke.)

before render

beforeRender

none

这些函数在开始执行execute()之前运行。如果它们引发异常,则渲染异常终止。

before each frame

beforeFrameRender

none

这些功能在开始渲染每个单独的帧之前运行。如果它们引发异常,则渲染异常终止。

after each frame

afterFrameRender

none

这些功能在每个帧完成渲染后运行。如果渲染异常终止,则不会调用它们。如果它们引发异常,则渲染异常终止。

after render

afterRender

none

这些功能在所有帧的渲染完成后运行。如果它们抛出错误,则渲染中止。

render progress renderProgress none 这些功能在渲染过程中运行以确定进度或失败。

分步指南

创建密集点云

影片教学