1

我在 Python 中使用 Vedo 来可视化室内位置的一些 3D 扫描。

在此处输入图像描述

例如,我想在 (0,0,0) 添加一个“相机”,向左看 90 度(或任何地方),然后查看相机的输出。

这可以用 Vedo 完成吗?如果没有,是否有不同的 python 编程框架,我可以在其中打开 .obj 文件并添加相机并以编程方式查看它?

4

1 回答 1

1

您可以在嵌入式渲染器中绘制相同的对象并通过简单的回调函数控制其行为:

from vedo import *

settings.immediateRendering = False  # can be faster for multi-renderers

# (0,0) is the bottom-left corner of the window, (1,1) the top-right
# the order in the list defines the priority when overlapping
custom_shape = [
        dict(bottomleft=(0.00,0.00), topright=(1.00,1.00), bg='wheat', bg2='w' ),# ren0
        dict(bottomleft=(0.01,0.01), topright=(0.15,0.30), bg='blue3', bg2='lb'),# ren1
]

plt = Plotter(shape=custom_shape, size=(1600,800), sharecam=False)

s = ParametricShape(0) # whatever object to be shown
plt.show(s, 'Renderer0', at=0)
plt.show(s, 'Renderer1', at=1)

def update(event):
    cam = plt.renderers[1].GetActiveCamera() # vtkCamera of renderer1
    cam.Azimuth(1) # add one degree in azimuth

plt.addCallback("Interaction", update)

interactive()

在此处输入图像描述

在此处查看相关示例。在此处查看vtkCamera对象方法。

于 2021-10-27T18:07:32.083 回答