我有一个长方体,它的尺寸是从 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;
}
}
如果有人知道注释掉的部分应该放在哪里,我将永远感激不尽。
提前致谢。