Skip to content

Взаимодействие пользователя с 3D-моделями

Graphics3DControl позволяет пользователям взаимодействовать с 3D-моделями. Пользователи могут поворачивать, масштабировать и перемещать модели с помощью мыши и клавиатуры. Кроме того, вы можете разрешить пользователям выбирать элементы модели щелчком мыши или выделять элементы при наведении на них курсора мыши. Graphics3DControl также поддерживает всплывающие подсказки для моделей и их элементов (сеток).

Поверните модель

Горячие клавиши

  • Повернуть влево — Shift+Стрелка влево
  • Повернуть вправо — Shift+Стрелка вправо
  • Повернуть вверх — Shift+Стрелка вверх
  • Повернуть вниз — Shift+Стрелка вниз

Операции с мышью

  • Повернуть — Перетащите модель левой кнопкой мыши.

Опции поворота

  • Graphics3DControl.RotateStep — Позволяет контролировать скорость вращения. Свойство RotateStep указано во внутренних единицах измерения. Значение по умолчанию равно 20. Более высокое значение приводит к большей скорости вращения.

Увеличьте масштаб модели

Горячие клавиши

  • Увеличить изображение — клавиша CTRL+Plus
  • Уменьшить масштаб — CTRL+Минус-клавиша

Операции с мышью

  • Масштабирование — используйте колесико прокрутки мыши для увеличения и уменьшения масштаба изображения.

Опции масштабирования

  • Graphics3DControl.ZoomRate — контролирует скорость операций масштабирования, выполняемых с помощью клавиатуры и колесика мыши. Значение по умолчанию равно 0,1. Более высокое значение увеличивает скорость масштабирования.

Переместить модель

Горячие клавиши

  • Переместить влево — CTRL+Стрелка влево
  • Переместить вправо — CTRL+Стрелка вправо
  • Переместить вверх — CTRL+Стрелка вверх
  • Переместить вниз — CTRL+Стрелка вниз

Операции с мышью

  • Переместить — Перетащите модель правой кнопкой мыши.

Опции перемещения

  • Свойство Graphics3DControl.KeyboardMoveStep — Позволяет указать расстояние, на которое перемещается модель во время одной операции перемещения клавиатуры.

Поворот, масштабирование и перемещение моделей в коде

Чтобы просмотреть модель с определенной позиции и ракурса в коде, вам необходимо настроить позицию и ориентацию камеры. Смотрите следующий раздел для получения дополнительной информации:

Переопределение горячих клавиш

Свойство Graphics3DControl.NavigationBindings класса Graphics3DKeyBindings позволяет переопределять горячие клавиши по умолчанию. Класс Graphics3DKeyBindings содержит свойства, которые определяют горячие клавиши для операций масштабирования, поворота и панорамирования. Изначально для этих свойств устанавливаются горячие клавиши по умолчанию, которые перечислены выше. Вы можете использовать эти свойства, чтобы назначить пользовательские горячие клавиши для операций.

Следующий код назначает горячие клавиши CTRL+1 и CTRL+2 для операций увеличения и уменьшения масштаба.

g3DControl.NavigationBindings = new Graphics3DKeyBindings();
Graphics3DKeyBinding zoomInShortcut = new Graphics3DKeyBinding(Avalonia.Input.KeyModifiers.Control, Avalonia.Input.Key.D1);
Graphics3DKeyBinding zoomOutShortcut = new Graphics3DKeyBinding(Avalonia.Input.KeyModifiers.Control, Avalonia.Input.Key.D2);
g3DControl.NavigationBindings.ZoomIn = zoomInShortcut;
g3DControl.NavigationBindings.ZoomOut = zoomOutShortcut;

Показывать подсказки

Graphics3DControl может отображать подсказки, когда пользователь наводит курсор мыши на модели или отдельные сетки.

g3dControl-hint

Используйте следующие свойства, чтобы назначить подсказки моделям, сеткам или обеим моделям и сеткам одновременно:

  • GeometryModel3D.Hint — Подсказка для модели.
  • MeshGeometry3D.Hint — Подсказка для создания сетки.

В следующем примере задаются подсказки для модели и ее сеток. В подсказках для сеток указаны их названия.

<mx3d:GeometryModel3D x:Name="Cube" MeshesSource="{Binding Meshes}" Hint="Cube">
    <mx3d:GeometryModel3D.MeshTemplate>
        <DataTemplate x:DataType="vm:MeshViewModel">
            <mx3d:MeshGeometry3D 
                Name="{Binding Name}" 
                Hint="{Binding Name}"
                ...
            />
        </DataTemplate>
    </mx3d:GeometryModel3D.MeshTemplate>
</mx3d:GeometryModel3D>
public partial class MeshViewModel : ObservableObject
{
    [ObservableProperty] string name;
    [ObservableProperty] Vertex3D[] vertices;
    //...
}

Когда подсказки заданы как для модели, так и для сетки, эти подсказки объединяются в одну подсказку, разделенную разделителем ",".

g3dcontrol hints animation

Установите для свойства Graphics3DControl.ShowHints значение false, чтобы отключить подсказки. Это свойство имеет значение по умолчанию true.

Выделите элементы

Graphics3DControl поддерживает выделение модели и сетки. С помощью этой функции контрол рисует границу выделения вокруг модели/сетки, когда пользователь наводит на нее курсор.

g3dControl-highlight

Используйте свойство Graphics3DControl.HighlightMode, чтобы включить функцию выделения и указать режим выделения. Доступны следующие опции:

  • Mesh — Позволяет выделять отдельные ячейки.
  • Model — Позволяет выделить отдельные модели.
  • None (по умолчанию) — Функция выделения отключена.

Related API

  • Graphics3DControl.HighlightedElement — Возвращает или устанавливает текущий выделенный элемент.
  • Graphics3DControl.HighlightColor — Возвращает или задает цвет, используемый для отображения границы выделения вокруг выделенных элементов.

Выберите элементы

Вы можете включить функцию выбора, чтобы позволить пользователю выбирать элементы (модели или сетки) щелчком мыши. Граница выделения отрисована вокруг элемента, когда пользователь щелкает по нему.

g3dcontrol selection animation

Используйте свойство Graphics3DControl.SelectionMode, чтобы активировать функцию выбора и определить режим выбора. Доступные опции включают:

  • Mesh — Позволяет выбирать отдельные сетки одним щелчком мыши.
  • Model — Позволяет выбирать отдельные модели одним щелчком мыши.
  • None (по умолчанию) — Функция выбора отключена.

Related API

  • Graphics3DControl.SelectedElement — Возвращает или устанавливает текущий выбранный элемент.
  • Graphics3DControl.SelectionColor — Возвращает или задает цвет, используемый для отображения границы вокруг выбранных элементов.

Смотрите также



* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.