Light¶
В Graphics3DControl источники света используются для освещения 3D-моделей. Вы можете использовать свет по умолчанию или создавать пользовательские источники света для вашей 3D-сцены.
Свет по умолчанию¶
Graphics3DControl предоставляет свет по умолчанию «из коробки». Свет по умолчанию представляет собой белый точечный свет, связанный с камерой. Его направление всегда синхронизировано с направлением камеры.
Следующее изображение демонстрирует свет по умолчанию, отражённый от металлической плоскости.
Фактический визуальный эффект любого света определяется материалами, применёнными к 3D-моделям.
Связанные опции¶
-
Graphics3DControl.AllowDefaultLight(значение по умолчанию —true) — установите это свойство вfalse, чтобы принудительно отключить свет по умолчанию.Когда вы создаёте пользовательские источники света, свет по умолчанию автоматически отключается.
Пользовательские источники света¶
Чтобы добавить пользовательские источники света в 3D-сцену, создайте источники света и добавьте их в коллекцию Graphics3DControl.Lights. Вы также можете использовать свойства Graphics3DControl.LightsSource и Graphics3DControl.LightTemplate, чтобы добавлять пользовательские источники света в соответствии с паттерном MVVM.
Graphics3DControl поддерживает следующие типы источников света:
- Точечный свет (
PointLight) - Направленный свет (
DirectionalLight) - Точечный свет, связанный с камерой (
CameraPointLight) - Направленный свет, связанный с камерой (
CameraDirectionalLight)
Все эти источники света имеют одного предка — абстрактный класс Light.
Точечный свет¶
Излучает во всех направлениях (как лампочка).
Класс¶
Настройки¶
Пример¶
Этот пример создаёт точечный свет цвета Coral. Изображение ниже демонстрирует этот свет, отражённый от металлической плоскости и сферы.
<mx3d:Graphics3DControl.Lights>
<mx3d:PointLight Color="{Binding MyLightColor}" Position="{Binding MyLightPosition}" Radius="10"/>
</mx3d:Graphics3DControl.Lights>
PointLight myLight = new PointLight();
myLight.Color = Avalonia.Media.Colors.Coral;
myLight.Position = new Vector3(0, 50, 0);
myLight.Radius = 10;
g3DControl.Lights.Add(myLight);
Направленный свет¶
Излучает параллельные лучи в заданном направлении, имитируя удалённое освещение (как солнечный свет).
Класс¶
Настройки¶
Пример¶
Этот пример добавляет источник направленного света, направленный в сторону отрицательной оси Y. Изображение ниже демонстрирует этот свет, отражённый от металлической плоскости и сферы.
<mx3d:Graphics3DControl.Lights>
<mx3d:DirectionalLight Color="{Binding MyLightColor}" Direction="{Binding MyLightDirection}"/>
</mx3d:Graphics3DControl.Lights>
using Eremex.AvaloniaUI.Controls3D;
DirectionalLight myLight = new DirectionalLight();
myLight.Direction = new System.Numerics.Vector3(0, -1, 0);
myLight.Color = Avalonia.Media.Colors.Coral;
g3DControl.Lights.Add(myLight);
Точечный свет, связанный с камерой¶
Точечный свет, излучаемый из камеры. Положение и направление этого света синхронизированы с положением и направлением камеры.
Класс¶
Настройки¶
Пример¶
Этот пример создаёт точечный свет, связанный с камерой. Изображение ниже демонстрирует этот свет, отражённый от металлической плоскости и сферы.
<mx3d:Graphics3DControl.Lights>
<mx3d:CameraPointLight Color="{Binding MyLightColor}" Radius="10"/>
</mx3d:Graphics3DControl.Lights>
using Eremex.AvaloniaUI.Controls3D;
CameraPointLight myLight = new CameraPointLight();
myLight.Radius = 10;
myLight.Color = Avalonia.Media.Colors.Coral;
g3DControl.Lights.Add(myLight);
Направленный свет, связанный с камерой¶
Излучает параллельные лучи в направлении камеры, имитируя удалённое освещение (как солнечный свет).
Класс¶
Настройки¶
Color— цвет света.
Пример¶
Этот пример создаёт направленный свет, связанный с камерой. Изображение ниже демонстрирует этот свет, отражённый от металлической плоскости и сферы.
<mx3d:Graphics3DControl.Lights>
<mx3d:CameraDirectionalLight Color="{Binding MyLightColor}"/>
</mx3d:Graphics3DControl.Lights>
using Eremex.AvaloniaUI.Controls3D;
CameraDirectionalLight myLight = new CameraDirectionalLight();
myLight.Color = Avalonia.Media.Colors.Coral;
g3DControl.Lights.Add(myLight);
* Эта страница переведена с использованием технологий машинного перевода.




