Доступ во время выполнения к дочерним элементам ILPanel и ILCamera

Я пытаюсь использовать ILNumerics для визуализации некоторых поверхностей.

  1. Как я могу получить доступ к камере детей во время выполнения. Например, что именно меняется, когда я использую мышь для вращения поверхности?
  2. Другая проблема заключается в том, что когда я использую мышь для вращения графика, я больше не могу его контролировать. например, я добавил камеру и поверхность в сцену IPanel. когда я нажимаю кнопку, положение камеры изменяется, как показано ниже, однако, если я поворачиваю поверхность, а затем нажимаю кнопку, ничего не происходит.
  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(); 
    }
    

person Ehsan    schedule 03.09.2013    source источник


Ответы (1)


  1. Когда графический куб передается какому-либо драйверу, этот драйвер будет поддерживать свою собственную копию (!) графического куба. Взаимодействие с мышью выполняется только на копии. Копия выполняется эффективно без каких-либо буферных копий и постоянно синхронизируется с оригиналом на каждом кадре рендеринга. Если вы хотите проверить параметр сцены с результатом взаимодействия, получите копию драйвера с помощью panel.GetCurrentScene().

  2. Изменения в глобальной сцене могут конфликтовать с изменениями, внесенными взаимодействием. Однако я считаю, что глобальные изменения должны быть в приоритете. Если они не синхронизированы с копией драйвера, может возникнуть ошибка. Мы рассмотрим это.

  3. Свойство ILGroup.Children разрешает доступ к любому дочернему элементу в группе. Используйте его, чтобы удалить объект. Используйте общий метод Add() для добавления новых объектов в группу.

person Haymo Kutschbach    schedule 03.09.2013