У меня есть кубоид, размеры которого импортируются из XML, поэтому мне нужно быть уверенным, что независимо от размера модели камера всегда может видеть все это. Это для предварительного просмотра. Скорее всего, я нарисую заголовок сверху, показывающий шкалу для ясности.
Я думаю, что мне нужна какая-то функция, которая скажет мне, подходит ли ModelVisual3D в пределах FieldOfView
камеры или, возможно, самого ViewPort3D.
Пока у меня есть статический обратный вызов (свойства измерения DependencyProperty
s), когда свойства измерений изменяются, как указано ниже. Это довольно грубо в данный момент, но вы поняли, на что я смотрю. В закомментированном разделе показано, какую именно логику я ищу
private static void OnCubeDimensionsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (!valueSemaphore)
{
//while(mainModel.WillClip(mainCamera))
//{
// mainCamera.FieldOfView--;
//}
valueSemaphore = true;
double propertyValue = 0.0;
Product3D p = d as Product3D;
switch (e.Property.Name)
{
case "CubeHeight":
propertyValue = (double.Parse(e.NewValue.ToString()) / 100) * 8;
p.CubeHeight = propertyValue;
break;
case "CubeWidth":
propertyValue = (double.Parse(e.NewValue.ToString()) / 100) * 5.3;
p.CubeWidth = propertyValue;
break;
case "CubeDepth":
propertyValue = (double.Parse(e.NewValue.ToString()) / 100) * 2.6;
p.CubeDepth = propertyValue;
break;
}
valueSemaphore = false;
}
}
Если кто-нибудь знает, что должно быть в закомментированном разделе, я буду вечно благодарен.
Заранее спасибо.