1

我尝试使用 ILNumerics 来可视化一些表面。

  1. 如何在运行时访问相机子项。例如,当我使用鼠标旋转表面时,究竟发生了什么变化?
  2. 另一个问题是,当我使用鼠标旋转绘图时,我不再控制它。例如,我在 ILPanel 场景中添加了一个相机和一个表面。当我单击一个按钮时,相机的位置会发生如下变化,但是,如果我旋转表面然后单击该按钮,则不会发生任何事情。
  3. 另一件事是,如何用另一个表面替换添加到相机的表面?

    int pos = 200;
    private void button1_Click(object sender, EventArgs e)
    {
        pos -= 10;
        var cam = ilPanel1.Scene.Camera;
        cam.Reset();
        cam.Position = new Vector3(15, -200, pos);
        cam.LookAt = new Vector3(15, 15, 65);
        ilPanel1.Refresh(); 
    }
    
4

1 回答 1

1
  1. 将绘图立方体提供给任何驱动程序时,该驱动程序将保留其自己的绘图立方体副本(!)。鼠标交互仅在副本上完成。副本在没有任何缓冲区副本的情况下高效完成,并且在每个渲染帧上都与原始副本不断同步。如果您想通过交互结果检查场景的参数,请通过 panel.GetCurrentScene() 获取驱动程序副本。

  2. 对全局场景的更改可能与交互引入的更改发生冲突。但是,我认为,全球变化应该得到优先考虑。如果它们未同步到驱动程序副本,您可能会遇到错误。我们将对此进行调查。

  3. ILGroup.Children 属性允许访问组中的任何子项。用它来移除一个对象。使用常用的 Add() 方法将新对象添加到组中。

于 2013-09-03T10:54:52.380 回答