【问题标题】:Vedo: Is there a way to add a camera to scenes and see images from perspective?Vedo:有没有办法在场景中添加相机并从透视图中查看图像?
【发布时间】:2021-10-25 18:26:51
【问题描述】:

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

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

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

【问题讨论】:

  • 看起来你可以在调用show() 命令时提供camera dict。
  • 那太棒了。我是 Vedo 的初学者,你有没有机会给我看一些示例代码? :)
  • 抱歉,我什至都不是初学者——只是在精美的文档中查找了它(在查看了一些示例脚本之后)。
  • “添加摄像头”是什么意思?添加整个场景的额外独立视图,或者只是修改您已经创建的视图的视图? (正如 martineau 建议的那样,您可以为此传递相机字典,在查看器中按 C 以获取模板代码)。如果您需要更多帮助,请随时在 github 存储库上打开一个问题。
  • @mmusy 我的意思是在视频游戏编程环境中,将相机对象添加到指定位置、指定方向和 FOV 等,然后查看该相机对象的 (2D) 图像看到。有可能吗?

标签: python camera vedo


【解决方案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()

查看相关示例here。 查看vtkCamera 对象方法here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 2021-05-18
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    相关资源
    最近更新 更多