【问题标题】:Change dimension of cube using MatrixTransform in vispy在 vispy 中使用 MatrixTransform 更改立方体的维度
【发布时间】:2020-10-30 21:00:50
【问题描述】:
import numpy as np
from vispy import app, scene
from vispy.visuals import transforms

canvas = scene.SceneCanvas(keys='interactive', show=True)
vb = canvas.central_widget.add_view()
vb.camera = 'turntable'
vb.camera.rect = (-10, -10, 20, 20)

box = scene.visuals.Box(width=1, height=2, depth=3, color=(0, 0, 1, 0.3),
                        edge_color='green')
vb.add(box)

# Define a scale and translate transformation :
box.transform = transforms.STTransform(translate=(0., 0., 0.),
                                       scale=(1., 1., 1.))


@canvas.events.key_press.connect
def on_key_press(ev):
    tr = np.array(box.transform.translate)
    sc = np.array(box.transform.scale)
    if ev.text in '+':
        tr[0] += .1
    elif ev.text == '-':
        tr[0] -= .1
    elif ev.text == '(':
        sc[0] += .1
    elif ev.text == ')':
        sc[0] -= .1
    box.transform.translate = tr
    box.transform.scale = sc
    print('Translate (x, y, z): ', list(tr),
          '\nScale (x, y, z): ', list(sc), '\n')

if __name__ == '__main__':
    import sys
    if sys.flags.interactive != 1:
        app.run()

在上面的代码中,如果我添加一个 MatrixTransform,然后旋转立方体,然后应用缩放,立方体就变成了一个菱形

我想要实现的是在画布中旋转立方体并仅在 X 方向上缩放它,而不会影响其他维度

【问题讨论】:

    标签: vispy


    【解决方案1】:

    我认为我们在 vispy 存储库错误报告中对此进行了介绍。解决方案是在乘法中交换矩阵变换和 st 变换的顺序。如果这仍然是一个问题,您能否在使用矩阵时提供您的代码,我们将继续调试。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 2014-03-12
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2013-02-02
      相关资源
      最近更新 更多