Свет¶
В Graphics3DControl источники света используются для подсветки 3D-моделей. Вы можете использовать освещение по умолчанию или создать собственные источники света для вашей 3D-сцены.
Освещение по умолчанию¶
В Graphics3DControl
используется подсветка по умолчанию. Подсветка по умолчанию представляет собой белую точку, подключенную к камере. Ее направление всегда синхронизируется с направлением камеры.
На следующей картинке показан свет, отраженный от металлической плоскости по умолчанию.
Фактический визуальный эффект любого источника света определяется материалами , применяемыми к 3D-моделям.
Связанные опции¶
-
Graphics3DControl.AllowDefaultLight
(значение по умолчанию —true
) - Установите для этого свойства значениеfalse
, чтобы принудительно отключить освещение по умолчанию.Когда вы создаете пользовательские источники света, освещение по умолчанию автоматически отключается.
Настраиваемые источники света¶
Чтобы добавить пользовательские источники света в 3D-сцену, создайте источники света и добавьте их в коллекцию Graphics3DControl.Lights
. Вы также можете использовать свойства Graphics3DControl.LightsSource
и Graphics3DControl.LightTemplate
для добавления пользовательских источников света в соответствии с шаблоном проектирования MVVM.
Graphics3DControl
поддерживает следующие типы источников света:
- Точечный светильник (
PointLight
) - Направленный свет (
DirectionalLight
) - Точечный светильник для камеры (
CameraPointLight
) - Направленный свет, связанный с камерой (
CameraDirectionalLight
)
Все эти источники света имеют одного предка - абстрактный класс Light
.
Точечный свет¶
Излучает во все стороны (как лампочка накаливания).
Класс¶
PointLight
Свойства¶
Color
— Цвет источника света.Position
— позиция источника света.Radius
— Радиус излучателя света.
Пример¶
В следующем примере создается точечный светильник кораллового цвета. На картинке ниже показан этот свет, отраженный от металлической плоскости и сферы.
<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);
Направленный свет¶
Испускает параллельные лучи в заданном направлении, имитируя отдаленное освещение (например, солнечный свет).
Класс¶
DirectionalLight
Свойства¶
Color
— Цвет источника света.Direction
— Вектор, задающий направление световых лучей.
Пример¶
В следующем примере добавлен направленный источник света, направленный в направлении отрицательной оси 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);
Точечный свет, связанный с камерой¶
Точечный свет, излучаемый камерой. Позиция и направление этого источника света синхронизируются с таковыми камеры.
Класс¶
CameraPointLight
Свойства¶
Color
— Цвет источника света.Radius
— Радиус излучателя света.
Пример¶
В следующем примере создается точечный источник света, связанный с камерой. На картинке ниже показан этот свет, отраженный от металлической плоскости и сферы.
<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);
Направленный свет, связанный с камерой¶
Испускает параллельные лучи в направлении камеры, имитируя отдаленное освещение (например, солнечный свет).
Класс¶
CameraDirectionalLight
Свойства¶
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);
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.